Kezdőoldal » Számítástechnika » Programozás » C++! Lehet ezt könnyebben,...

Domcsid kérdése:

C++! Lehet ezt könnyebben, egyszerűbben megoldani?

Figyelt kérdés

Sziasztok .. az alábbi programot szeretném ha megnéznétek ..Most kezdtem el C++ tanulni (előfordulhatnak benne ezért elvi hibák ) Azt szeretném megtudni .. hogy szerintetek jól csináltam -e vagy van mit rajt változtatni ?


// program 21-ezés

#include<iostream>

using namespace std ;


int dontes(int) ;


int main()

{

int a = 5 , b =7 ,elsolap,masodiklap,harmadiklap,osszeg ;

cout<< "Kapott lapok :"<< a << " , " << b << "\n";

cout << "Milyen lapot ker ? 1 kor !\n" ;

cin>> elsolap ;

dontes(elsolap) ;

cin>> masodiklap;

dontes (masodiklap);

cin>> harmadiklap ;

dontes(harmadiklap);

osszeg = a+b+elsolap+masodiklap+harmadiklap;

cout << osszeg ;

if (osszeg >21)

cout << "You Lose\n";

else

cout <<"You Won"<<osszeg<<endl;

cin>> osszeg ;

return 0;

}

int dontes(int x )

{

if ((x ==2) || (x==3)|| (x==4)|| (x==7)|| (x==8)|| (x==9)|| (x==10)|| (x==11))

cout<< "a kert lap :" << x << "\n";

else

cout << "ilyen lap nincsen:";

return (x) ;

}



2012. jún. 23. 13:23
1 2
 1/12 A kérdező kommentje:
Ja és lefordítva működik !!
2012. jún. 23. 13:25
 2/12 anonim ***** válasza:

Első ránézésre az a baj hogy hiába döntöd el a lapról hogy jó-e, mindenképp azzal fog számolni a program. (tehát a "dontes" fv-nek nincs semmi értelme)


ajánlott javítás:


//a beolvasások így nézzenek ki

do

{

cin >> elsolap;

}while (!dontes(elsolap));


//és a döntés fv

bool dontes(int x )

{

if ((x ==2) || (x==3)|| (x==4)|| (x==7)|| (x==8)|| (x==9)|| (x==10)|| (x==11))

return true;

else

{

cout << "ilyen lap nincsen:";

return false ;

}

}


Így minden lapot addig kér be újra míg jó értéket nem kap

2012. jún. 23. 15:09
Hasznos számodra ez a válasz?
 3/12 anonim ***** válasza:

egyébként nem tudom az 5-ös és 6-os lapok mért maradtak ki, de ha csak véletlenül, akkor az if feltétele lehetne rövidebb igy:


if ((x >= 2) && (x <= 11))

{

//helyes lap

}

else

{

//hibás lap

}

2012. jún. 23. 15:16
Hasznos számodra ez a válasz?
 4/12 A kérdező kommentje:
Először is köszi a választ . Az ötös hatos lapok azért maradtak ki , mert a feladat szövege amit néztem így szólt : "a lapok értékei a rajta lévő számok (7-10) az alsóé :2, a felsőé:3 , a király:4 , az ász:11 ."
2012. jún. 24. 09:28
 5/12 anonim ***** válasza:

Annyit szeretnék hozzátenni,hogy ha egy konkrét változó különböző értékekre vonatkozó eseteit szeretnéd kezelni,akkor a gyakorlatban az ún. switch - case szerkezetet használják.

A te esetedben pl:

if ((x ==2) || (x==3)|| (x==4)|| (x==7)|| (x==8)|| (x==9)|| (x==10)|| (x==11)) helyett, ezt is írhatod:

switch(x){

case 2:

//csinálj valamit ebben az esetben

break;

case 3:

//csinálj valamit ebben az esetben

break;

case 4:

//csinálj valamit ebben az esetben

break;

//...

default:

//ha egyik eset sem teljesül,akkor az ide írt kód teljesül

//esetedben az else ág

}

2012. jún. 25. 01:59
Hasznos számodra ez a válasz?
 6/12 A kérdező kommentje:
Köszönöm a választ .. épp a mai nap olvastam .. xdd (Tanuljuk meg a c++ programozási nyelvet 24 óra alatt könyvet olvasom ... )
2012. jún. 25. 18:30
 7/12 A kérdező kommentje:

Látom jobban jártas vagy a témában ... szóval lenne még egy kérdésem ... Az alábbi programmal mi a gond ??? a Százalék megadása után hibaüzenetet hoz fel ..

//Feladat: 1. Akció: Egy üzlet nyár végi szezonkiárusítás keretében minden termékére akciót hirdet meg.

// program kérje be egy adott termék eredeti árát, a leárazás mértékét százalékban, és ezek alapján

//határozza meg az akciós árat. Ha az akció 50%-nál nagyobb mértékű volt, akkor közölje a

//felhasználóval, hogy megéri az árut megvenni, ellenkezo esetben nem.

# include<iostream>

using namespace std;

int main()

{

unsigned long int eredeti , learazas , termek ;

cout<< "Ird be az eredeti arat !\n" ;

cin >> eredeti ;

cout <<"Ird be a learazas merteket szazalakban !\n";

cin >> learazas ;


termek=termek-(eredeti*(learazas/100)) ;


cout << "A learazott ara : "<<termek << endl ;


if (learazas >50)

cout <<"Megeri megvenni\n" ;

else

cout<<"Nem eri meg megvenni" ;

cin>> termek ;

}

2012. jún. 25. 18:44
 8/12 anonim ***** válasza:

Esetleg azt is megírhatnád mi az a hibaüzenet. (egyébként nekem hibaüzenet nélkül lefutott)


De ami biztos nem stimmel az ahogy a termek változónak értket adsz. Szerintem inkább így akartad:


termek = eredeti - (eredeti * (learazas / 100.0));


Egyébként a (learazas / 100) mindíg 0 lesz, mert ha egészet osztasz egésszel annak egész lesz a végeredménye. (Azért írtam át a 100-at 100.0-ra)

2012. jún. 26. 18:58
Hasznos számodra ez a válasz?
 9/12 A kérdező kommentje:
Köszi a választ !! A hibaüzenet így nézett ki : "Run-Time Check Failure #3 - The variable 'termek' is being used without being initialized. " és egy break illetve egy continue lehetőség volt felkínálva ... de az általad javasolt problémák javítása után a probléma megoldódott...
2012. jún. 26. 20:56
 10/12 A kérdező kommentje:

Ez egy programkód részlet .. maga a szorzás .. jól működik .. stb .. e az if es feltételsor . valamiért nem jó .. Futtatás után mindig csak a második változót mutatja igaznak ...

#include<iostream>

using namespace std;

int main()

{

int szorzo, szam , osszeg=0 , novekvo=0 , ujabbosszeg=0;

cout<< "Ird be a szorzot!\n";

cin>> szorzo;

cout<< "Ird be a szamot!\n";

cin>> szam;



while(szorzo>0)

{


osszeg+=szam;

szorzo--;

}

cout<< osszeg<< endl ;


if (szam == szorzo)

cout<<"A ket szam egyenlo!\n";


if (szam > szorzo)

cout<<" Nagyobb a(z) "<<szam<<"\n";


if (szorzo > szam)

cout<<" Nagyobb a(z) "<< szorzo<<"\n";

2012. jún. 27. 13:18
1 2

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!