PDA

View Full Version : Perchè non me lo compila??


-Yara-
09-02-2005, 13:08
Salve a tutti, ho un problema con un programma che g++ si rifiuta di compilare:


#include <iostream>
#include <cstdio>
#include <cstdlib>

using namespace std;

int mcd(int,int);
void semplifica(int,int);
void dividi(int,int);

system("/bin/sh -c clear");

int main()
{
int num,num1,risp;
cout<<"Inserisci il primo numero"<<endl;
cin>>num;
cout<<"Inserisci il secondo numero"<<endl;
cin>>num1;
cout<<"[1]-Per calcolare l'MCD. "<<endl;
cout<<"[2]-Per semplificare la frazione: "<<num<<"/"<<num1<<"."<<endl;
cout<<"[3]-Per dividere "<<num<<" per "<<num1<<"."<<endl;
cin>>risp;
switch(risp)
{
case 1: mcd(num,num1);break;
case 2: semplifica(num,num1);break;
case 3: dividi(num,num1);break;
}
getchar();
return 0;
}

int mcd(int x,int y)
{
int resto,n=x,n1=y;
while(y!=0)
{
resto=x%y;
x=y;
y=resto;
}
cout<<"Il MCD tra "<<n<<" e "<<n1<<" e' uguale a "<<x<<"."<<endl;
return x;
}


void semplifica(int x,int y)
{
int McD,n=x,n1=y; //n e n1 sono le copie
McD=mcd(x,y);
x=x/McD;
y=y/McD;
cout<<"La frazione: "<<n<<"/"<<n1<<" ora e' semplificata: "<<x<<"/"<<y<<"."<<endl;
}


void dividi(int x,int y)
{
int resto,quoz;
resto=x%y;
quoz=x/y;
cout<<"Il resto e': "<<resto<<" e il quoziente e' "<<quoz<<"."<<endl;
}

L'errore e':

lol.cc:27: error: ISO C++ forbids declaration of `system' with no type
lol.cc:27: error: `int system' redeclared as different kind of symbol
/usr/include/stdlib.h:702: error: previous declaration of `int system(const
char*)'
lol.cc:27: error: invalid conversion from `const char*' to `int'

Lasciate stare il nome del file :D

Grazie!

Ziosilvio
09-02-2005, 13:30
Sposta la chiamata a system all'interno di main.

-Yara-
09-02-2005, 19:12
Originariamente inviato da Ziosilvio
Sposta la chiamata a system all'interno di main.

Ah Ok, grazie. Ora funziona. Ma come mai se la metto fuori non va?
:confused:
Grazie ancora ;)

Ubi-Wan
09-02-2005, 19:20
perche' non ha senso...... hai chiamato una funzione dal "vuoto".
Le istruzioni ( e quindi le chiamate a funzioni) devono essere contenute all'interno di blocchi di funzioni.
Il programma esegue tutto quello che c'e' all'interno del main()

rileggendo quello che ho scritto non so se mi sono spiegato bene :)

-Yara-
09-02-2005, 21:37
Originariamente inviato da Ubi-Wan
perche' non ha senso...... hai chiamato una funzione dal "vuoto".
Le istruzioni ( e quindi le chiamate a funzioni) devono essere contenute all'interno di blocchi di funzioni.
Il programma esegue tutto quello che c'e' all'interno del main()

rileggendo quello che ho scritto non so se mi sono spiegato bene :)

Ho capito, ti ringrazio
:D