Miért nem működik ez a C++ program? (4) (forráskód lent)
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.
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.
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
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 ;
}
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
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.
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!