Kezdőoldal » Számítástechnika » Programozás » Miért nem működik ez a program...

Miért nem működik ez a program c++ -ban?

Figyelt kérdés

#include <iostream>

#include <stdlib.h>


using namespace std;


int main ()


{

int i;

int x;

int y;

int z;

int utszamjegy;

const int paros[5]={0,2,4,6,8};

const int paratlan[5]={1,3,5,7,9};



cout << "Kerem az x szamot: "; cin >> x;

cout << "Kerem az y szamot: "; cin >> y;


z = 0;


do {

while (x!=0 and y !=0){

utszamjegy = x%10;}

i = 0;

while (utszamjegy != paratlan[i]){

++i;}

z = z+x+y-1;

x = x-1;

y = y-1;

cout << "A szorzat erteke: " << z;

while (utszamjegy != paros[i]){

++i;}

y = 2*y;

x = x/2;

}

return 0;


}



A cél hogy kiszámítsuk két szám szorzatát, de szorzás nélkül. A matematikai háttere nem lényeges, és meg lehetne oldani egyszerűbben is, de én gyakorlás miatt tömbökkel szeretném.

A célom az volna hogy beolvasom a két (egész) számot, (x,y) megnézem hogy az x utolsó számjegye megegyezik-e a páros / páratlan tömb valamelyik elemével, amelyikkel megegyezik, azt az utasítás sort kell végrehajtani, kész.

A gond az hogy futtatásnál, miután bekéri a számokat nem csinál semmit a program, megáll. Ötletek?



2013. okt. 18. 21:17
1 2 3 4
 21/35 anonim ***** válasza:
Szerintem a mostani programod is végtelen ciklusban kerül, ha másféle számot írsz be. Elég sok hülyeséget írtál a mostani változatban is.
2013. okt. 18. 22:30
Hasznos számodra ez a válasz?
 22/35 A kérdező kommentje:
Hát, ha gondolod futtasd le complier-ben, szerintem most nem kerül végtelen ciklusba... mondom: több különféle számot is próbáltam, lefut csak elszámolja magát.
2013. okt. 18. 22:35
 23/35 anonim ***** válasza:
Próbáltad páratlanra és párosra is?
2013. okt. 18. 22:40
Hasznos számodra ez a válasz?
 24/35 A kérdező kommentje:
Igen, mindenféle módon próbáltam. Most meg átírtam a két while-t if-else utasítássá, de úgy is elszámolja a program magát.... nem jön ki....
2013. okt. 18. 22:45
 25/35 anonim ***** válasza:

utszamjegy = x%10;

...

while (utszamjegy != paratlan[i]){++i;}

Ha x mondjuk 12, akkor utszamjegy==2;

Így utszamjegy==paratlan[i] soha nem fog teljesülni, legalábbis addig nem, amíg te inicializáltad a tömbödet.

Utána megy majd tovább, memóriaszeméttel fogja hasonlítgatni, amíg nem talál egy kettest valahol...

2013. okt. 18. 22:45
Hasznos számodra ez a válasz?
 26/35 anonim ***** válasza:

Hogy a fenébe lehet egy while-t if else-sé átírni?? Ezt nem is értem.

Szerintem ugorj vissza pár leckét az alapokhoz, ma meg aludj rá egyet!

Nagy a káosz a fejedben...

2013. okt. 18. 22:46
Hasznos számodra ez a válasz?
 27/35 A kérdező kommentje:

Itt van a kód, ami működik:


#include <iostream>


using namespace std;


int main ()


{

int x;

int y;

int z;


z = 0;


cout << "Kerem az x szamot: "; cin >> x;

cout << "Kerem az y szamot: "; cin >> y;


while (x!=0 and y!=0)

if (x%2 == 1){

z = z+x+y-1;

x = x-1;

y = y-1;

cout << "A ket szam szorzata: " << z;}


else if (x%2 == 0){

y = 2*y;

x = x/2;}


return 0;


}


Csak azt nem értem, hogy ha a szám páros, akkor ugye az else ág fut le, de ott nincs megadva a z! Akkor a program hogy írja ki a z-t? Előveszi a másik ágat, és újból kezdi? Nem értem.

2013. okt. 18. 23:38
 28/35 anonim ***** válasza:
Mi ez a hülyeség megint? Miért lenne páratlan x esetén a szorzat x+y-1 ?
2013. okt. 18. 23:43
Hasznos számodra ez a válasz?
 29/35 A kérdező kommentje:
A program működik, a specifikációt a tanár adta, aki nyílván kicsit k*rvára sokkal jártasabb a matematikában mint te... vagy én. A kérdés az volt hogy miért működik a dolog a páros szám esetén, amikor ott nincs megadva a z.
2013. okt. 18. 23:49
 30/35 anonim ***** válasza:

Mi a f#szom ez komolyan? :D


int szorzas(int a, int b)

{

return a*b;

}

Szevasz! :D

2013. okt. 18. 23:51
Hasznos számodra ez a válasz?
1 2 3 4

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!