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?
Valahol hátultesztelős ciklust használtál.
Az első ciklus egy végtelen ciklus.
Nekem a szorzás nélküli szorzásról a logaritmusok összeadása, majd az exponenciális függvény használata ugrik be, bár lehet, hogy a tanár mást vár.
Ehhez kall a math.h, és fordításkor az -lm kapcsoló, ha g++-t használsz. Logaritmáláshoz a log((), exponenciálishoz az exp() kell.
while (utszamjegy != paratlan[i]){
++i;}
Ez egy páros szám esetén szintén végtelen.
Egy így nem gyakorlás, próbálj értelmesebb dolgokat csinálni a tömbökkel. Ha gondolod adok feladatot.
while (x!=0 and y !=0){
utszamjegy = x%10;}
Ciklussal van a baj. Itt addig kell ismétlődjön a ciklus, míg az x vagy az y nem nulla.
"while (x!=0 and y !=0){
utszamjegy = x%10;}
Ez akkor állna meg, amikor x és y is nulla, de mivel y-t nem piszkálod ez egy szép kis végtelen ciklus.
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!