Toon posts:

Uitlezen aantal entries in een txt-file met C++

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik probeer een txt-file uit te lezen waar coordinaten in staan. Deze txt-file is als volgt opgebouwd:

4 4 9 9 -12 -3 -2 -2 -6 7 -8 9

12 punten staan er in deze txt-file dus. Openen en verwerken van de inhoud lukt allemaal prima. Ik wil alleen een controle voor deze file maken die checkt dat er niet meer dan een bepaald aantal punten in deze file staan. Im mijn programma mogen bijvoorbeeld niet meer dan 56 punten voorkomen.. Ik moet een teller hebben dus, maar hoe? Ik programmeer in Borland C++ 5.01.

Onderstaande code heb ik geprobeerd, maar dit geeft geen uitvoer in mijn programma, terwijl ik zou verwachten dat hij 12 weer zou geven:
if (!objectfile.eof())
{
teller++;
}

cout << "Er staan " << teller << " punten in de file";

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
aantal spaties + 1?

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

hoe lees je de getallen in?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Op maandag 10 juni 2002 23:19 schreef _Mo_ het volgende:
aantal spaties + 1?
Aha, ik ben nog niet zo bekend met C++, maar in theorie klinkt het logisch ja... Nu nog even uitzoeken hoe dit te realiseren is. Heb jij enig idee?

Verwijderd

Topicstarter
Op maandag 10 juni 2002 23:20 schreef .oisyn het volgende:
hoe lees je de getallen in?
als volgt:


ifstream objectfile;
objectfile.open("punten.txt");

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

ja zo open je de file, maar dan moet je de getallen nog inlezen

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Op maandag 10 juni 2002 23:22 schreef mejw het volgende:

[..]

als volgt:


ifstream objectfile;
objectfile.open("punten.txt");
Ja, maar hoe lees je ieder getal apart in? Ik neem aan dat je een regel ophaalt uit de file (je zou ze trouwens ook elk een aparte regel kunnen geven, makkelijk parsen en tellen)?

-Edit-
Jeetje, nog sneller typen .. en het is al zo moeilijk :7

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


Verwijderd

Topicstarter
Dit is de functie zoals ik hem tot nu toe hebt. Deze werkt. Ik wil alleen dus het aantal ingevoerde getallen in de txt-file tellen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
teken_objecten()
{
    ifstream objectfile;
   objectfile.open("punten.txt");

   //controleer of de txt file bestaat
   if (objectfile.fail())
   {
       cout << "De objecten-file bestaat niet of kan niet geopend worden.\n";
       objectfile.close();
   }


    //3 objecten; 1 loop is 1 object
    for (int getal = 0; getal < 3; getal++)
   {
       objectfile >> x1;
       objectfile >> y1;
       objectfile >> x3;
       objectfile >> y3;

       //index wordt gedeclareerd als int
       object_punten[0][index] = x1;
       object_punten[1][index] = y1;
         object_punten[2][index] = x3;
       object_punten[3][index] = y3;
       index++;

       int x2 = x3;
       int y2 = y1;
       int x4 = x1;
       int y4 = y3;

       ivt_draw_line(x1, y1, x2, y2);
       ivt_draw_line(x2, y2, x3, y3);
       ivt_draw_line(x3, y3, x4, y4);
       ivt_draw_line(x4, y4, x1, y1);

    }
    objectfile.close();
   return 0;
}

  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

je geeft zelf de oplossing al. Combineer:
code:
1
2
3
4
if (!objectfile.eof())
{
teller++;
}


code:
1
2
3
4
objectfile >> x1;
objectfile >> y1;
objectfile >> x3;
objectfile >> y3;

en je krijgt:
code:
1
2
3
4
5
6
7
8
while (!objectfile.eof())
{
objectfile >> x1;
objectfile >> y1;
objectfile >> x3;
objectfile >> y3;
teller++;
}

Let op, dit is linke soep. Ik ga er klakkeloos vanuit dat als je nog niet aan het einde van je file bent, je altijd nog 4 punten kunt lezen. Als je zelf je file schrijft zou je dat kunnen doen, en een exception gooien als 't mislukt. Als je dat niet doet, kun je beter je constructie iets aanpassen (puntjes met een loopje inlezen in een array bijvoorbeeld).

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:11
en die if moet natuurlijk een while worden, anders wordt die code maar maximum 1x uitgevoerd.

https://fgheysels.github.io/


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Ook lijkt het me beter om met een inputiterator te gaan werken.
Verder lijkt het me niet nuttig om met variabeles als x1, x2 enz te werken. Daar heeft men array's voor

  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

Op dinsdag 11 juni 2002 08:47 schreef whoami het volgende:
en die if moet natuurlijk een while worden, anders wordt die code maar maximum 1x uitgevoerd.
Welke if :? O-)
Pagina: 1