Miért nem működik ez a program c++ -ban?
#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?
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...
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...
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.
Mi a f#szom ez komolyan? :D
int szorzas(int a, int b)
{
return a*b;
}
Szevasz! :D
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!