Kezdőoldal » Számítástechnika » Programozás » Miert nem mukodik a lancolt...

Miert nem mukodik a lancolt lista?

Figyelt kérdés

#include <iostream>


using namespace std;


typedef struct tanulo

{

string nev;

int eletkor;

struct tanulo *kov;


} tanulo;



int main()

{


tanulo *fej, *akt;


for(int i = 1; i<= 10; i++)

{

string nev;

int eletkor;

cout << "Add meg a nevet: ";

cin >> nev;


cout << "Add meg az eletkort: ";

cin >> eletkor;


akt = new tanulo;

akt->nev = nev;

akt->eletkor = eletkor;

akt->kov = NULL;

if(fej == NULL)

{

fej = akt;

fej->kov = NULL;

}else

{

tanulo *jelenlegi;

jelenlegi = fej;

while(jelenlegi != NULL)

{

jelenlegi = jelenlegi -> kov;

}


jelenlegi -> kov = akt;

}


}


for(tanulo *i = fej; i != NULL; i = i -> kov)

{

cout << i->nev << " ";

}



return 0;

}


2015. márc. 12. 14:25
 1/2 anonim ***** válasza:
100%

Elkezded írni a C++ kódodat...

> #include <iostream>

> using namespace std;

Aztán hirtelen átváltasz C nyelvre:

> typedef struct tanulo


Értem én hogy elfogadja, de C++ globális névtér van, nincs typedef struct. A struct-nak is egészen más a mechanizmusa és mást is jelent. Illetve nem árt ha nagybetűvel írod az osztály nevét és máris nem szúr szemet senkinek.

Ezek számomra hibák, bár a kérdésedet még nem válaszolja mag.

De nyugi, van több hiba is:


> tanulo *fej, *akt;

Ezek az értékek inicializálatlanok, azaz bármilyen értéket felvehetnek. Később számítasz rá, hogy az értékűk NULL, pedig nem állítottad be őket. Nezzük így:

> tanulo *fej, *akt = NULL;

Ez már majdnem jó, de a fej mutató így nem kap értéket. Lássuk hogy néz ki helyesen:

> tanulo* fej = NULL;

> tanulo* akt = NULL;

Feltételezem, hogy C++11 szabványban kódolsz - miért is tennéd máshogyan -, ezért a NULL helyett írhatod a nullptr -t is, ami jóval szofisztikáltabb megoldás.


Következő hiba:

> akt = new tanulo;

Itt hiányzik egy (), itt ugyanis egy default konstruktort hívsz. Helyesen:

> akt = new tanulo();


A többi nagyjából jó.

Viszont van egy olyan érzésem, hogy kicsit korán került ki ez a kérdés. A legtöbb hibád apró figyelmetlenség, vagy az alaposabb alapismeretek hiányából fakad. Kicsit feküdj rá az irodalomra és kérlek ne keverd a C és a C++ nyelvet.

2015. márc. 12. 14:45
Hasznos számodra ez a válasz?
 2/2 A kérdező kommentje:
Koszonom a valaszodat, az a legnagyobb problema, hogy egy jo ideig c-ben kodoltam, a tegnap fogtam neki igazabol c++-nak meg vannak dolgok, amik nem vilagosak, de mar tisztulnak...
2015. márc. 12. 14:50

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!