Kezdőoldal » Számítástechnika » Programozás » Mi lehet a hiba? C++

Mi lehet a hiba? C++

Figyelt kérdés

Most gyakorlom az objektum orientált programozást de nagyon nehéz.

Ezt amit most próbálok megcsinálni azt már megcsináltam nem OO.

De így nem megy :(

Segítsetek.


//main.cpp

# include <iostream>


using std::cout;

using std::cin;

using std::endl;


typedef unsigned short ushort;


class SIM

{

public:

SIM();

~SIM();

void Bead();

ushort Vizsgal(ushort bead1);

void szamlalo();

private:

enum SIMKARD {PIN = 1234,PUKK = 2345,PUKK2 = 3456};

ushort *bead;

ushort *szamlalo;

};


SIM::SIM()

{

bead = new ushort(0);

szamlalo = new ushort(3);

}


SIM::~SIM()

{

delete bead;

delete szamlalo;

}


void SIM::Bead()

{

cout <<"Add meg a pin kodot: " cin >> *bead;

Vizsgal(*bead);

}


ushort SIM::Vizsgal(ushort *bead1)

{

do

{

if(*bead1 == PIN)

{

cout <<"Pin kod-jo \n";

}

else

{

szamlalo();

}

}while(*szamlalo > 0);

}


void SIM::szamlalo()

{

*szamlalo-=1;

cout <<"Pin-kod rossz meg "<< *szamlalo <<" lehetoseged van \n";

Bead();

}



int main()

{

SIM *simcard = new SIM;

simcard->Bead();


delete simcard;

cin.get();

return 0;

}


Nem értem az OO programozást pedig nem OO olyan jól megy :D


Magyarázzátok el,ha el lehet .


2011. dec. 20. 07:07
 1/7 A kérdező kommentje:
Javítva de még mindig nem jó.
2011. dec. 20. 07:21
 2/7 A kérdező kommentje:

Az volna a legjobb ha valaki megírná nekem.Mert így át tanulmányozom és idővel megértem.


Meg az OO programozás folyamatát elmagyarázni

mert ez tiszta más ahogy én megszoktam.

2011. dec. 20. 07:28
 3/7 A kérdező kommentje:

7:21 hozzászólásomhoz hozzátenném:

class SIM

{

public:

SIM();

~SIM();

void Bead();

ushort Vizsgal(ushort *bead1); //javítva

void szamlalo();

private:

enum SIMKARD {PIN = 1234,PUKK = 2345,PUKK2 = 3456};

ushort *bead;

ushort *szamlalo;

};

2011. dec. 20. 07:29
 4/7 A kérdező kommentje:

Ezt szeretném megvalósítani csak OO.

Az állandó az maradjon nevesített.

És külön függvényt mindenre.De nemtudom megcsinálni ezt OO. :( Segítsetek jó köszi.


//main.cpp

# include <iostream>

# include <windows.h>


using std::cout;

using std::cin;

using std::endl;


typedef unsigned short ushort;


int main()

{

enum SIMCARD {PIN = 1234,PUKK = 2345,PUKK2 = 3456};

ushort bead = 0;

short szamlalo = 3;


do

{

cout <<"Add meg a PIN-kodot: "; cin >> bead;

if(bead == PIN) {cout <<"PIN-kod jo \n";szamlalo = -1;}

else

{

szamlalo--;

cout <<"PIN-kod rossz";

if(szamlalo > 0)

{cout <<" meg "<< szamlalo <<" lehetoseged van. \n";}

}



while(szamlalo == 0)

{

cout <<" add meg a PUKK-kodot: "; cin >> bead;

if(bead == PUKK)

{

cout <<"PUKK-kod jo ";

szamlalo++;

}

else

{

cout <<"PUKK-kod rossz add meg a PUKK2-kodot: "; cin >> bead;

if(bead == PUKK2)

{

cout <<"PUKK2-kod jo";

}

else

{

cout <<"PUKK2-kod rossz SIM-card zarolva! \n"

<<"KILEPES.";

Sleep(500);cout <<".";

Sleep(500);cout <<".";

Sleep(500);cout <<".";

Sleep(500);cout <<".";

Sleep(500);cout <<".";

Sleep(500);cout <<".";

Sleep(500);cout <<".";

exit(0);

}

}

}

}while(szamlalo > 0);

Sleep(1500);

exit(0);


cin.get();

return 0;

}

2011. dec. 20. 08:05
 5/7 anonim ***** válasza:
Milyen hibaüzenetet ad?
2011. dec. 20. 09:12
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:
declaration of ushort *SIM::szamlalo
2011. dec. 20. 09:25
 7/7 anonim ***** válasza:

Hiba? hibák...

első probléma a szamlalo és a szamlalo() ,nem lehet ugyanaz a neve egy függvénynek és egy változónak. Vizsgal() miért ushort típusú? akkor egy ushorttal kellene isszatérnie,simán void. a Vizsgal()-on belül,ha jó a PIN kód végtelen ciklus,mert a szamlalo > 0 teljesül. Ha egy pointert adsz át a Vizsgal()-nak akkor az referenciát várjon (ushort&). Ha elfogytak a próbálkozási lehetőségek,akkor még mindig nem jó,mert miután 0 lett a szamlalo még eghívja a bead-ot. Továbbá a Bead meghívja a Vizsgal()-t... Akkor a DO ág mindg lefut,és csak utána vizsgálja a ciklusfeltételt. így az fölösleges. A számlálót dinamikusan lefoglalni szintén az,simán mehet int.

Nagyjaból kijavítottam,hogy működő legyen,de azért pofozgasd még át. Továbbá a konstruktor használata. Ha egyetlen művelet úgymond végigviszi az osztály összes lehetőségét akkor és másra funkcionálisan nem képes az osztály,akkor hívja meg azt a műveletet a konstruktor. Objetumorientált szemléletódon pedig nem így kellene felépíteni. A valóság egy absztrakt modelljét készítjük el. Ezek alapján kellene lennie egy telefonnak. A telefon kéri be a PIN kódot,és egyezteti,hogy a SIM-kártya PIN kódjával egyezik-e. Továbbá a telefon zárolja 3 próbálkozás utána sim-et. A Konstruktor pedig az osztály műveleteinek egy olyan legszűkebb halmaza,ami a az osztály adathalmazás képes felépíteni(konstruálni).

Tehát helysen ez úgy nézne ki,hogy van egy Telefon class, a telefon képe Beolvas() -ni , szamol-ni a lehetőségeket, és összeegyeztetni a SIM class adattagjaival. Itt a kijavított kódod:

# include <iostream>


using std::cout;

using std::cin;

using std::endl;


typedef unsigned short ushort;


class SIM

{

public:

SIM();

~SIM();

void Bead();

void Vizsgal();

void Szamlalo();

private:

enum SIMKARD {PIN = 1234,PUKK = 2345,PUKK2 = 3456};

ushort *bead;

int szamlalo;

bool finish;

};


SIM::SIM()

{

bead = new ushort(0);

szamlalo = 3;

Bead();

finish = false;

}


SIM::~SIM()

{

delete bead;

}


void SIM::Bead()

{

cout <<"Add meg a pin kodot: " ;

cin >> *bead;

Vizsgal();

}


void SIM::Vizsgal()

{

if(szamlalo > 0){

if(*bead == PIN)

cout <<"Pin kod-jo \n";

else

{

Szamlalo();

}

}

else{cout << "Nincs tobb lehetoseg";}

}


void SIM::Szamlalo()

{

szamlalo--;

cout <<"Pin-kod rossz meg "<< szamlalo <<" lehetoseged van \n";

Bead();

}



int main()

{

SIM *simcard = new SIM();


delete simcard;

cin.get();

return 0;

}

2011. dec. 22. 00:17
Hasznos számodra ez a válasz?

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!