Pereiti prie turinio

Neskaito duomenų C++


Rekomenduojami pranešimai

Sveiki, esu pradedantysis su C++ ir dabar mano programoje yra kažkur klaida (programa nebaikta, bet tai kas jau parašyta - turėtų vygdyti), visual c++ error'ų nemeta, bet programa nedirba kaip turėtų. Gal kas galite ką patarti, ar matote klaidų.

 

 

Programėlės kodas

 

#include <string>
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;

const char CMaxima[] = "maxima.txt";
const char CIki[] = "iki.txt";
const char CMaximaR[] = "mRez.txt";
const char CIkiR[] = "iRez.txt";

struct Prekes {

string pav;
double kiekis;
double kaina;
double min;
};

int  KiekPrekiu(const char fv[]);
void Ivesti(const char fv[], Prekes *& A, int n);

int main(){

Prekes *Pm;
Prekes *Km;
int max;
Prekes *Pi;
Prekes *Ki;
int iki;
int a = 10;
max = KiekPrekiu(CMaxima);
iki = KiekPrekiu(CIki);
Pm = new Prekes[max];
Pi = new Prekes[a];
Ivesti(CMaxima, Pm, max);
Ivesti(CIki, Pi, iki);

cout << "maxima \n";
for(int i = 0; i < max; i++)
	cout << i << " " << Pm[i].pav << " " <<  Pm[i].kiekis << " " << Pm[i].kaina << " " << Pm[i].min << endl;
cout << "iki \n";
for(int j = 0; j < iki; j++)
	cout << j << " " << Pi[j].pav << " " << Pi[j].kiekis << " " << Pi[j].kaina << " " << Pi[j].min << endl;

}


int  KiekPrekiu(const char fv[]){

ifstream fd(fv);
int kiek = 0;
string eil;
while(!fd.eof()){
	getline(fd, eil, '\n');
	kiek ++;
}
fd.close();
return kiek; 	
}

void Ivesti(const char fv[], Prekes *&A, int n){

ifstream fd(fv);
char eil[26];
for(int i = 0; i < n; i++){
	fd.get(eil, 26);
	A[i].pav = eil;
	fd >> ws;
	fd >> A[i].kiekis >> A[i].kaina >> A[i].min;
}
fd.close();}

 

 

Rezulatas paleidus programą:

maxima
0 saldainiai                30 5 50
1  -6.27744e+066 -6.27744e+066 -6.27744e+066
2  -6.27744e+066 -6.27744e+066 -6.27744e+066
3  -6.27744e+066 -6.27744e+066 -6.27744e+066
iki
0 apelsinai 				26 3 111
1  -6.27744e+066 -6.27744e+066 -6.27744e+066
2  -6.27744e+066 -6.27744e+066 -6.27744e+066
Press any key to continue . . .

 

 

Duomenų failai yra geri!

 

Bet po nuskaitymo, gaunu tik 1 eilutės duomenis, antros eilutės neskaito. Kaip suprantu bėda yra su Ivesti funkcija. Gal kas matote klaidą?

PS. Atsiprašau už noob'iškus klausymus.

Redagavo DziugasP.
Nuoroda į pranešimą
Dalintis kituose puslapiuose

tiesiog fd.ignore() pamiršai, nes programa neperšoka į kitą eilutę perskaičius paskutinius skaičius eilutėje ;)

 

 

 

 

void Ivesti(const char fv[], Prekes *&A, int n){

       ifstream fd(fv);
       char eil[26];
       for(int i = 0; i < n; i++){
               fd.get(eil, 26);
               A[i].pav = eil;
               fd >> ws;
              fd >> A[i].kiekis >> A[i].kaina >> A[i].min;
               fd.ignore();
       }
       fd.close();}

Redagavo MrCX
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nėra už ką :) Ironiška, vakar rašydamas panašią programą identiška klaidą buvau padaręs ir pačiam teko truputi pavargti kol suradau kame problema. :) O kitą kartą siūlyčiau pasinaudoti debugginimu, tada atrasi kurioje konkrečioje vietoje programa elgiasi nederamai :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nėra už ką :) Ironiška, vakar rašydamas panašią programą identiška klaidą buvau padaręs ir pačiam teko truputi pavargti kol suradau kame problema. :) O kitą kartą siūlyčiau pasinaudoti debugginimu, tada atrasi kurioje konkrečioje vietoje programa elgiasi nederamai :)

 

Ačiū už patarimą :), būtinai pasinaudosiu :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...