Kezdőoldal » Számítástechnika » Programozás » Mit ronthattam el ebben a c++...

Mit ronthattam el ebben a c++ kódban a fajlban levo adatok eltaralosanal?

Figyelt kérdés

Tehat adott a kovetkezo tartalmu fajl


tempomat

bluetooth

legkondi

7_ules

*

ABC123

Opel

Astra

2016

30000

6500000

tempomat

bluetooth

tempomat

*

PEN105

BMW

X6

2000

250000

3250000

bluetooth

tempomat

legkondi

*

OT2832

Trabant

601

1990

523000

1000000

*

SAJAT1

Ford

Smax

2010

175000

5500000

tempomat

7_ules

*

PAY368

Opel

Zafira

2016

113000

3000000

tempomat

7_ules

*


Amit így olvasok be egy osztály segítségével


#include<fstream>

#include<list>

#include<iostream>

#include<string>

#include<set>

typedef string Extra;


using namespace std;

class Kocsi {

string rendszam;

string gyartmany;

string tipus;

int ev;

string km;

int ar;

set<Extra> extra;

public:

Kocsi(string rendszam,

string gyartmany,

string tipus,

int ev,

string km, int ar)

{

this->rendszam = rendszam;

this->gyartmany = gyartmany;

this->tipus = tipus;

this->ev = ev;

this->km = km;

this->ar = ar;


}

Kocsi(const Kocsi& k)

{

this->rendszam = k.rendszam;

this->gyartmany = k.gyartmany;

this->tipus = k.tipus;

this->ev = k.ev;

this->ar = k.ar;

this->extra = k.extra;


}

void addtoset(const Extra& e) {

extra.insert(e);

}



friend ostream& operator<<(ostream& s, Kocsi& k) {

s << k.rendszam << " " << k.gyartmany << " " << k.tipus << " " << k.ev

<< " " << k.km << " " << k.ar << endl;


for (auto it : k.extra)

{

s << it << endl;

}

return s;

}


public:

string getRendszam() const { return rendszam; }

void setRendszam(string rendszam) { this->rendszam = rendszam; }


string getGyartmany() const { return gyartmany; }

void setGyartmany(string gyartmany) { this->gyartmany = gyartmany; }


string getTipus() const { return tipus; }

void setTipus(string tipus) { this->tipus = tipus; }


int getEv() const { return ev; }

void setEv(int ev) { this->ev = ev; }


string getKm() const { return km; }

void setKm(string km) { this->km = km; }


int getAr() const { return ar; }

void setAr(int ar) { this->ar = ar; }


};

int main() {

list<Extra> elista;

list<Kocsi> klista;


fstream inp("input.txt");

string extra;

string rendszam;

string gyartmany;

string tipus;

int ev;

string km;

int ar;


inp >> extra;

while (extra != "*")

{

elista.push_back(extra);

inp >> extra;


}



while (inp.good())

{

inp >> rendszam >> gyartmany >> tipus >> ev >> km >> ar;

Kocsi k(rendszam, gyartmany, tipus, ev, km, ar);


inp >> extra;

while (extra != "*")

{



k.addtoset(extra);

inp >> extra;

}

klista.push_back(k);


}


for (auto it : elista)

{

cout << it << endl;

}


for (auto it : klista)

{

cout << it << endl;


}


}


De valamiert a vegen 2szer írja ki az opel zafira 2016ot és km szamot se akarja rendesen megjeleniteni mit csinalok rosszul mit kell kijavitani h normalisan olvassa be a fajlt es tarolja el?


2021. nov. 28. 21:21
 1/9 anonim ***** válasza:
100%
Használj kódmegosztó oldalt, ebből én ki nem bányászom...
2021. nov. 28. 22:45
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:
9%
Semmi extra nincs ebben a kódban, de így is g.cironda. A C++ egy emberiség elleni merénylet, büntetni kéne...
2021. nov. 28. 23:06
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:
67%

Eleve nem is fordul le, dob egy ilyen hibát kezdésként:

error: ‘string’ does not name a type; did you mean ‘stdin’?

és ezt a sort jelöli meg:

typedef string Extra;


A gond az, hogy a string típus az std névtérben van - azt már az Extra típus definiálása után használjuk fel.


Szóval a

using namespace std;

és a

typedef string Extra;

sorrendjét fel kell cserélni, és úgy már lefordul és lefut és a "a vegen" az "opel zafira 2016ot" nem fogja "2szer" kiírni.

2021. nov. 29. 01:14
Hasznos számodra ez a válasz?
 4/9 anonim ***** válasza:

Illetve még egy nüansz amit észrevettem: a km változó nem string, hanem int típusú - példa:

[link]

2021. nov. 29. 02:08
Hasznos számodra ez a válasz?
 5/9 anonim ***** válasza:
100%
Én ezt eleve nem is értem hogyan fordulhat le neked, mert nálam hibát dob ki a Visual Studio. Milyen programot használsz? Ha elfogadsz egy tanácsot, akkor ragaszkodj a VS-hez (amit a nyelv megalkotói készítettek direkt ehhez a nyelvhez), ne külső fejlesztőkörnyezet használj C-re.
2021. nov. 29. 13:22
Hasznos számodra ez a válasz?
 6/9 A kérdező kommentje:

5. Visual studio 2019et hasznalok es valoban vetettem egy hibat amikor bemasoltam a kodot az elejen using namespace std;

És utana a typedef stringes resz

2021. nov. 29. 13:26
 7/9 anonim ***** válasza:
Én is abban próbáltam és felcserélve a typedef és namespace sorokat nálam teljesen jó. Tegyél bele egy töréspontot a kiíráshoz és debug módban nyomkodd végig, akkor látszódni fog, hogy miért duplikál nálad.
2021. nov. 29. 13:38
Hasznos számodra ez a válasz?
 8/9 anonim ***** válasza:
Ja, amúgy tudom miért. Nálad van egy üres sor a fájl végén. Beolvassa az üres sort, de mivel új adat nincs, ezért a változók nem íródnak felül és a "beragadt" Zafirás adatot írja ki újra. Vagy le kell kezelni külön az üres sorokat a fájl végén (szebbik megoldás) vagy ki kell törölni a fájlból.
2021. nov. 29. 13:41
Hasznos számodra ez a válasz?
 9/9 A kérdező kommentje:
8. Köszi tényleg ez volt a baj h bentmaradt egy üres sor köszi már tegnap óta agyaltam azon mi lehet a baja
2021. nov. 29. 13:51

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!