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

Miért nem működik ez a C++ program? (4) (forráskód lent)

Figyelt kérdés

Kezdő wannabe C++ programozó vagyok, és most, hogy pár egy ideje foglalkozok a dologgal, arra gondoltam, hogy megpróbálom megírni az euklideszi algoritmust.

Maga a teljes program még nem készült el, de már az elejével is probléma van ezért nem tudom kipróbálni, hogy milyen eredményt kapnék most, ha lefuttatnám.

Az első körben csak azt szeretném tudni, hogy miért nem fut. Nyilván sok dolgot egyszerűbben is meg lehetne oldani, de én csak azt szeretném, hogy fusson. A többire majd rájövök magamtól. Előre is köszönöm a hasznos válaszokat.

És a forráskód:


#include <iostream>

using namespace std;


int n = 0 ;

int m = 0 ;

int p = 0 ;

int k = 0 ;


int RestMaker(int a, int b)

{

int rest ;

rest = a%b ;

return (rest) ;

}


int QuotientMaker(int a, int b)

{

int quotient ;

quotient = a/b ;

return (quotient) ;

}


int Number1Values [100] ;

int Number2Values [100] ;

int Rests [100] ;

int Quotients [100] ;


int main()

{

int Number1 ;

int Number2 ;


cout << "This program will commit the Euclidean algorithm on " ;

cout << "the two positive intiger you enter. \n" ;

cout << "Enter the first number: " ;

cin >> Number1 ;

cout << "Enter the second number:" ;

cin >> Number2 ;


for (;;)

{

Number1Values [p] = Number1 ;

Number1Values [k] = Number2 ;

p++ ;

k++ ;


if (RestMaker(Number1%Number2 != 0)

{

int Rest ;

Rest = RestMaker(Number1, Number2) ;


int Rest [n] = Rest ;

n++ ;


else

Break ;

}

}

do

{

int Quotient ;

Quotient = QuotientMaker(Number1, Number2) ;


Qoutients [m] = Quotient ;

m++ ;


Number1 = Number2 ;

Number2 = RestMaker (Number1, Number2) ;

}while (Number1%Number2 !=0) ;


system ("PAUSE") ;

return 0 ;


}



A Dev-C++ hibaüzenetei:

- C:\Dev-Cpp\algoritmus3.cpp In function `int main()':

- 10 C:\Dev-Cpp\algoritmus3.cpp too few arguments to function `int RestMaker(int, int)'

- 47 C:\Dev-Cpp\algoritmus3.cpp at this point in file

- 48 C:\Dev-Cpp\algoritmus3.cpp expected `)' before '{' token

- 58 C:\Dev-Cpp\algoritmus3.cpp expected primary-expression before '}' token

- 58 C:\Dev-Cpp\algoritmus3.cpp expected `;' before '}' token

- 64 C:\Dev-Cpp\algoritmus3.cpp `Qoutients' undeclared (first use this function)


Ennyi lenne.


2011. júl. 13. 19:37
 1/7 anonim ***** válasza:
100%

Ott a válasz a kérdésed végén.

Melyik hibaüzenetet nem érted?

Vannak hiányzó zárójelek, pontosvesszők.

Van benne elírás (Qoutients).


RestMaker(Number1%Number2 != 0)

Ez a függvény két int paramétert vár, de ebben az esetben boolean-t adsz át neki.

2011. júl. 13. 19:49
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:

pl:

if (RestMaker(Number1,Number2) != 0)

{

int Rest = RestMaker(Number1, Number2);

int Rest [n] = Rest;

n++ ;

}

else

{

break; (kis betűvel a break)

}



meg van olyanod h int Rest;. akkor nem lehet ugyanilyen nevű tömböd

2011. júl. 13. 19:49
Hasznos számodra ez a válasz?
 3/7 A kérdező kommentje:

Köszönöm a válaszokat. kijavítottam néhány dolgot, de még mindig van valami hiba a tömbökkel:


#include <iostream>

using namespace std;


int n = 0 ;

int m = 0 ;

int p = 0 ;

int k = 0 ;


int RestMaker(int a, int b)

{

int rest ;

rest = a%b ;

return (rest) ;

}


int QuotientMaker(int a, int b)

{

int quotient ;

quotient = a/b ;

return (quotient) ;

}


int Number1Values [100] ;

int Number2Values [100] ;

int Rests [100] ;

int Quotients [100] ;


int main()

{

int Number1 ;

int Number2 ;


cout << "This program will commit the Euclidean algorithm on " ;

cout << "the two positive intiger you enter. \n" ;

cout << "Enter the first number: " ;

cin >> Number1 ;

cout << "Enter the second number:" ;

cin >> Number2 ;


for (;;)

{

Number1Values [p] = Number1 ;

Number1Values [k] = Number2 ;

p++ ;

k++ ;


if (RestMaker(Number1, Number2) != 0)

{

int rest ;

rest = RestMaker(Number1, Number2) ;


int Rests [n] = rest ;

n++ ;

}

else

{

break ;

}

do

{

int Quotient ;

Quotient = QuotientMaker(Number1, Number2) ;


Qoutients [m] = Quotient ;

m++ ;


Number1 = Number2 ;

Number2 = RestMaker (Number1, Number2) ;

}while (Number1%Number2 !=0) ;


system ("PAUSE") ;

return 0 ;


}

2011. júl. 13. 20:34
 4/7 A kérdező kommentje:
Ok, már működik. Köszi szépen minden segítséget.
2011. júl. 13. 20:52
 5/7 anonim ***** válasza:

for (;;)

{


omg, ez működik, csak épp nagyon nem szép.


akor már miért nem while (true), vagy do.. while(true)? :D

2011. júl. 13. 23:26
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:
Mert mindkettővel többet kellene gépelnem.
2011. júl. 13. 23:43
 7/7 anonim ***** válasza:

A for(;;) egy elég egyetemes jelölése a végtelen ciklusnak a C univerzumban. Az más kérdés, hogy ehhez az algoritmushoz nagyon nem illik a végtelen ciklus.


Kérdezőnek javaslom, hogy olvassa el a hibaüzeneteket, mert általában a hibára vonatkozó információkat tartalmaznak, és elég egyértelműen. Mert ha valami csúnya linker vagy include-ok miatti hibát raktál volna be azt megértem, ha elsőre nem világos.

2011. júl. 14. 10:48
Hasznos számodra ez a válasz?

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!