Van egy kis gondom c++-ban?
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!
fajl>>darabszam;//a fajlbol a darabszamba betaroltuk a szamokat
Ez szerinted mit művel? :)
Beolvassa az első sort.
Sehogysem jó..beírtam a számokat egy sorba és ugyanaz a probléma.
txt tartalma: 5 3 4 56 6 1
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.
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";
Oké, de lehet egy hülye kérdésem?
Mi van ha a kezdő szám helyébe mondjuk egy betűt írok?
#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");
}
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!