Vinnaren i pepparkakshustävlingen!
2016-07-22, 11:30
  #1
Medlem
Håller på med en C++ uppgift för en kurs i skolan. Ska vara ett program som läser in en fil med datum, kostander för för en aktivitet, vilka som är med på den samt vem som betalde.

Har skrivit ett fungerande program men var tvungen sen att skriva om den mha pekare.

Koden är ganska lång och finns här http://pastebin.com/SDmZdcGh. Dock så tror jag felet ligger i funktionen void TransaktionsLista::laesin( istream & is ) på rad 284. Kan kompilera hela koden men när jag kör main metoden händer inget på koden " tlista.laesin(infil);" (rad 111).

Vorde tacksam om någon vet vad det kan bero på. Funktionen Transaktion& Transaktion:perator=( const Transaktion& t) fick jag i uppgiften och känns som jag kanske ej använder den rätt?
Citera
2016-07-24, 13:57
  #2
Medlem
Citat:
Ursprungligen postat av Cambro
Håller på med en C++ uppgift för en kurs i skolan. Ska vara ett program som läser in en fil med datum, kostander för för en aktivitet, vilka som är med på den samt vem som betalde.

Har skrivit ett fungerande program men var tvungen sen att skriva om den mha pekare.

Koden är ganska lång och finns här http://pastebin.com/SDmZdcGh. Dock så tror jag felet ligger i funktionen void TransaktionsLista::laesin( istream & is ) på rad 284. Kan kompilera hela koden men när jag kör main metoden händer inget på koden " tlista.laesin(infil);" (rad 111).

Vorde tacksam om någon vet vad det kan bero på. Funktionen Transaktion& Transaktion:perator=( const Transaktion& t) fick jag i uppgiften och känns som jag kanske ej använder den rätt?

Funderar lite snabbt på
Kod:
        void TransaktionsLista::laesin( istream & is ){  // funkar ej?
         Transaktion t;
 
          // Så länge det går bra att läsa (filen ej slut)
          while ( t.laesEnTrans( is ) )
           {
             laggTill( t );
           }
 
        }

Om det kan vara så att du aldrig kommer in i while loopen. Dock så är det smidigast om du kör programmet med lite breakpoints. Då kan du enkelt se om du kommer in i loppar och exempelvis stega dig genom inläsningen och se att du kommer in i varje steg. Sen föredrar jag engelska funktions och variabelnamn men det är en smaksak (men tycker det blir mer lättläst så )
Citera
2016-07-25, 09:24
  #3
Medlem
Citat:
Ursprungligen postat av Purra
Om det kan vara så att du aldrig kommer in i while loopen. Dock så är det smidigast om du kör programmet med lite breakpoints. Då kan du enkelt se om du kommer in i loppar och exempelvis stega dig genom inläsningen och se att du kommer in i varje steg. Sen föredrar jag engelska funktions och variabelnamn men det är en smaksak (men tycker det blir mer lättläst så )

Testade att lägga in en mening som skrev ut och märker att jag inte kommer ut ur while loopen.

Sen ändra jag de till en for loop bara för att se om allt annat funkar men när jag hade läst in min fil så läste den istället för :
Kod:
050615  transp  Eva     6000    5       Bosse   Kristin  Paul    Torsten Stina
050721  mat     Eva     300     2       Bosse   Kristin 
050721  mat     Paul    400     2       Torsten Stina 
050721  transp  Bosse   5000    3       Eva     Kristin  Paul 
050721  transp  Stina   5000    1       Torsten
050722  boende  Kristin 200     1       Eva 
050722  mat     Eva     300     2       Kristin  Bosse
050723  mat     Torsten 300     2       Paul    Stina 
050724  mat     Paul    200     1       Stina 
050725  transp  Eva     600     3       Bosse   Kristin  Paul 

läste den in
Kod:
         0 0
         0 0 
         0 0
(hade bara for loopen för tre steg)

Ang engelska satser är de då vi fick ett skal av läraren med funktioner har jag använt dom.
Citera
2016-07-25, 11:17
  #4
Medlem
Citat:
Ursprungligen postat av Cambro
Testade att lägga in en mening som skrev ut och märker att jag inte kommer ut ur while loopen.

(hade bara for loopen för tre steg)

Ang engelska satser är de då vi fick ett skal av läraren med funktioner har jag använt dom.

Kapade lite bara för att inte få så stort inlägg. Bra , cout debugging brukar vara smidigt för att se vad som händer som sagt . Läste den in korrekt även fast du fastnade i while loopen ? Annars skulle jag ha en breakpoint nära själva inläsningen från fil för att se vad den plockar in från filen eller om den ens gör det. Vilken utvecklingsmiljö kör du ? kan vara intressant att veta mest för att ge tips om debugging

Gör en edit: Testkörde din kod och jag kommer också till att fastna i loopen och får samma utskrift utan att ens ha tillgång till filerna. Dels bör du lägga in en koll som varnar om filen inte öppnats korrekt, som i mitt fall då jag inte ens har filen. Misstänker att strömmen helt enkelt inte läses i där du tror den läses in och därför kommer du inte åt data i filen.
__________________
Senast redigerad av Purra 2016-07-25 kl. 12:02.
Citera
2016-07-25, 16:26
  #5
Medlem
Lägger en till kommentar istället för att editera min gamla men att du får 0 0 beror ju på att det är de default värden du satt. de tomma strängarna skrivs också ut men de syns ju inte eftersom de inte innehåller något
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback