udvidet spørgsmål til indlæsning af speciel tekstfil

Tags:    c++

hej

jeg sidder med nøjagtig samme tekst fil som der er vist i spørgsmålet stillet af Christopher von Würden. jeg sidder bare med et andet problem. jeg har fået til opgave at indlæse alle retningsobservationer og udskrive dem til en anden tekstfil. retningsobservationer har id-nummer:

1
1
2

hvis man har læst spørgsmålet vil man også se at der forekommer noget der hedder forkortet retningsobservationer, som har id-nummer:

1
2

forkortet retningsobservationer, må kun forekomme såfremt der har været en retningsobservation før. det vil sige at man må godt have tilfældet:

1 702.00
1 15.00
2 0.000
1 14.00
2 19.480

man må også godt have tilfældet:

1 14.00
2 19.480
1 702.00
1 15.00
2 0.000

min opgave er at scanne hele tekstfilen igennem, finde alle retningsobservationer, og forkortet retningsobservationer og udskrive dem til en anden tekstfil. problemet er bare at der er ikke nogen bestemt rækkefølge observationerne kommer i, og jeg har ikke været i stand til at scanne alle observationerne ind korrekt. hvis der er nogen der har et forslag til en maskine der kan gå ind i tekstfilen, og finde alle retningsobservationer, plus forkortet retningsobservationer, og skrive dem ud til en ny tekstfil, ville det være til stor hjælp.

hvis i ikke kan finde tekstfilen er den på linket

http://peecee.dk/upload/download/112185





Som Nørden skriver er Data defineret i det første eksempel i denne tråd.
Så det første skridt videre kunne være at kombinere de to eksempler.


jeg har prøvet at implementere Data i koden, og er kommet frem til følgende implementering:

Fold kodeboks ind/udKode 


problemet er bare at når jeg kører programmet bliver der ikke udskrevet noget til skærmen. hvis der er noget jeg gør forkert, vil jeg meget gerne vide det



Umiddelbart kan jeg se at der er noget galt her:
bool ValidSeq(std::list<Data>& seq)
{
Data d;

Denne variabel (d) bruger du:
switch(d.id)

det er it (fra std::list<Data>::const_iterator it = seq.begin()) du skal bruge.

Så væk med variablen d og brug;
switch(it->d)



Umiddelbart kan jeg se at der er noget galt her:
bool ValidSeq(std::list<Data>& seq)
{
Data d;

Denne variabel (d) bruger du:
switch(d.id)

det er it (fra std::list<Data>::const_iterator it = seq.begin()) du skal bruge.

Så væk med variablen d og brug;
switch(it->d)


hej bertel. jeg har rettet den fejl du henviste mig til, og er kommet frem til følgende kode:

Fold kodeboks ind/udKode 


når jeg kører programmet, får jeg følgnde udskrevet på skærmen

Fold kodeboks ind/udKode 


altså det samme som før. nu er min opgave så bare at få vist resten af id kombinationen. altså så der også kommer til at stå.

7 1 702.00
8 1 15.00
9 2 0.000

skal jeg tilføje en "cout" for hver case eller skal jeg return true hvor hver case ???



Ja, du skal have en "std::cout << ..." for de to tidligere linier når du møder den linie med 1-1-2 kombinationen.
Det kan måske være praktisk at gemme den oprindelige linie i Data class'en



Ja, du skal have en "std::cout << ..." for de to tidligere linier når du møder den linie med 1-1-2 kombinationen.
Det kan måske være praktisk at gemme den oprindelige linie i Data class'en


kan jeg godt lave en push_back i hver case også udskrive dem i
den sidste case



push_back af hvad til hvad?
Det logiske ville for mig være at gemme de 3 iteratorer...



push_back af hvad til hvad?
Det logiske ville for mig være at gemme de 3 iteratorer...


hvordan ville du gemme dem. ville du gemme dem i list eller en vektor. det var det jeg havde forestillet mig, det var derfor jeg skrev push_back(). jeg havde forestillet mig at for hver case, vil jeg lave en push_back for at gemme dem, også i den sidste case. altså i

case 2:

der ville jeg så udskrive dem




Man kunne godt lave en lokal liste i ValidSeq og push_back'e elementer i den gennem switch'en.



Man kunne godt lave en lokal liste i ValidSeq og push_back'e elementer i den gennem switch'en.


i så fald hvordan ville det så komme til at se ud???




Jeg tror godt du vil være i stand til, i det mindste, at komme med et udkast til hvordan du kunne forestille dig at den kom til at se ud.

Hint: Den vil nok ikke være meget forskellig fra seq fra main.



t