Kezdőoldal » Számítástechnika » Programozás » Van egy kis gondom c++-ban?

Van egy kis gondom c++-ban?

Figyelt kérdés

Szeretnék egy txt-ből adatokat beolvasni a programba és érdekes módon az 5-ös számot nem akarja kiírni.


Mi a hiba a kódban?


#include <iostream>//include: becsatoljuk a funkciojat amire szukseg van

#include <fstream>//'file kezeles aktivalas


using namespace std;


int main()

{

//beolvasas lepesei: 1. zold resznel includolni

string fajlnev="forras.txt";

ifstream fajl(fajlnev.c_str());// MAGOLNI!!! ebbol tudja, hogy fajlrol van szo



int darabszam=0;

fajl>>darabszam;//a fajlbol a darabszamba betaroltuk a szamokat

int szamok[darabszam];//tomb letrehozasa

int i=0;

for(i=0;i<darabszam;i++)//beolvasas a forrasbol

{

fajl>>szamok[i];// a fajlokbol a tomb aktualis helyere beolvassuk

}


for(i=0;i<darabszam;i++)//menjen vegig

{

cout<<szamok[i]<<",";//kiiras


}



A txt tartalma:

5

3

4

56

6

1


Köszi a segítséget!



2014. júl. 6. 16:08
1 2
 1/15 anonim ***** válasza:

fajl>>darabszam;//a fajlbol a darabszamba betaroltuk a szamokat


Ez szerinted mit művel? :)


Beolvassa az első sort.

2014. júl. 6. 16:13
Hasznos számodra ez a válasz?
 2/15 A kérdező kommentje:

Sehogysem jó..beírtam a számokat egy sorba és ugyanaz a probléma.

txt tartalma: 5 3 4 56 6 1

2014. júl. 6. 16:22
 3/15 anonim ***** válasza:

Olvasd el még egyszer amit írtam.


A programod külön beolvassa az első sort (5), mert abban van a darabszám.


Ezután indít egy ciklust, pontosan annyi iterációval, amennyi az első sorban levő számban volt (5). A ciklus pedig a MÁSODIK sortól olvas.


Ezért nem írja ki az 5-ös számot.

2014. júl. 6. 16:25
Hasznos számodra ez a válasz?
 4/15 anonim ***** válasza:

Mert az első szám a fájlban azt jelzi, hogy hány darab számod van. Ezt nem kell kiírni. Ha mégis akarod, akkor:

cout << darabszam << " db sor van.\n";

2014. júl. 6. 16:26
Hasznos számodra ez a válasz?
 5/15 A kérdező kommentje:

Oké, de lehet egy hülye kérdésem?

Mi van ha a kezdő szám helyébe mondjuk egy betűt írok?

2014. júl. 6. 16:31
 6/15 A kérdező kommentje:
Hülye kérdés volt..nem írt ki semmit nem, hogy rossz eredményt.
2014. júl. 6. 16:32
 7/15 A kérdező kommentje:
Föladom...bármit próbálok sehogy se jó. Egyszerűen nem értem hol a hiba.
2014. júl. 6. 16:43
 8/15 SimkoL ***** válasza:
A seekg()-nek olvass utána. Így lehet mozogni a file-ban, mivel neked vissza kellene ugrani az elejére. Azért arra figyelj, hogy ne szaladj túl a tömbön :)
2014. júl. 6. 16:50
Hasznos számodra ez a válasz?
 9/15 SimkoL ***** válasza:

#include <iostream> //include: becsatoljuk a funkciojat amire szukseg van

#include <fstream> //'file kezeles aktivalas


using namespace std;


int main()

{

//beolvasas lepesei: 1. zold resznel includolni

string fajlnev = "forras.txt";

ifstream fajl(fajlnev.c_str()); // MAGOLNI!!! ebbol tudja, hogy fajlrol van szo

int darabszam = 0;

fajl >> darabszam; //a fajlbol a darabszamba betaroltuk a szamokat

int szamok[darabszam]; //tomb letrehozasa

fajl.seekg(0, fajl.beg);

for(int i = 0; i <= darabszam; i++)//beolvasas a forrasbol

fajl >> szamok[i];// a fajlokbol a tomb aktualis helyere beolvassuk

for(int i = 0; i <= darabszam; i++)//menjen vegig

cout << szamok[i] << ", "; //kiiras

system("pause");

}

2014. júl. 6. 17:01
Hasznos számodra ez a válasz?
 10/15 anonim ***** válasza:
Teljesen felesleges 2x beolvasni az első sort. Elég lenne belerakni a tömbbe a ciklus előtt.
2014. júl. 6. 17:07
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!