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
 1/35 anonim ***** válasza:

Valahol hátultesztelős ciklust használtál.

Az első ciklus egy végtelen ciklus.

2013. okt. 18. 21:25
Hasznos számodra ez a válasz?
 2/35 anonim ***** válasza:
Pl van egy random lehelyezett 'do{' benne, ami végtelen ciklust okoz.
2013. okt. 18. 21:25
Hasznos számodra ez a válasz?
 3/35 anonim ***** válasza:

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.

[link]

2013. okt. 18. 21:26
Hasznos számodra ez a válasz?
 4/35 A kérdező kommentje:
Ha kiveszem a "do"-t, akkor sem csinál semmit :( Bekéri a két számot, és pont. Nem ír ki hibát, csak marad a kurzor ott és nem reagál semmire. Legalább nem fagy le :)
2013. okt. 18. 21:28
 5/35 anonim ***** válasza:

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.

2013. okt. 18. 21:28
Hasznos számodra ez a válasz?
 6/35 anonim ***** válasza:

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.

2013. okt. 18. 21:29
Hasznos számodra ez a válasz?
 7/35 A kérdező kommentje:
Nem, nem a fenti kódnak működnie kell, mindenféle matematikai függvény nélkül. A lényeg hogy tömbökkel kell megcsinálni - ha a két while-t átírnám if-elsre, meg 1-2 apró módosítást végrehajtanék működne a progi. De így meg nem megy, de miért nem?
2013. okt. 18. 21:30
 8/35 anonim ***** válasza:

"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.

2013. okt. 18. 21:30
Hasznos számodra ez a válasz?
 9/35 anonim ***** válasza:
Ebben a programocskában egy rakás olyan feltétel van, ami miatt végtelen ciklus jöhet létre.
2013. okt. 18. 21:31
Hasznos számodra ez a válasz?
 10/35 A kérdező kommentje:
Nem tudom... végtelen ciklus nem önmagát ismétli újra és újra? Itt nem ismétel semmit, csak megáll. Oké, átírom a kódot, úgy ahogy órán mutatta a tanár - lássátok hogy kellene futnia. Ugyanazt akarom reprodukálni csak a saját logikám alapján.
2013. okt. 18. 21:34
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!