PDA

Visualizza la versione completa : [C++] Errori nell'uso di array


robbino:)
20-10-2011, 21:29
Salve,

da poco ho deciso di imparare il C++, conoscendo gi VB.Net.


Come esercizio, ho provato a scrivere un programma che riduce (o dovrebbe ridurre...) ai minimi termini una frazione. Compilando, mi vengono dati parecchi errori... alcuni sono riuscito a risolverli, altri non ho la pi pallida idea di che cosa vogliano dire...

Il codice che ho scritto questo, se qualcuno potesse dirmi tutti gli errori che trova e la correzione... grazie.



#include <iostream>


using namespace std;
int riduci(int arg[2]);


int main(){
int num, den;
int frazione[2];
int frazioneRidotta[2];
cout<<"Scrivi il numeratore \n";
cin>>num;
cout<<"\n";
cout<<"Scrivi il denominatore \n";
cin>>den;
frazione[1]=num;
frazione[2]=den;
frazioneRidotta=riduci(frazione[]);

cout<<"La frazione semplificata \n"<<frazioneRidotta[1]<<"\n"<<"--- \n"<<frazioneRidotta[2];

return(0);

}

int riduci(int arg[2]){
int num = arg[1];
int den =arg[2];
int i=1;
bool NumMagg = true;
int NumMin = 0;
int MCD=1;
int frazSempl[2];

if(num>den){
NumMagg=true;
NumMin=den;
}
else{
NumMagg=false;
NumMin=num;
}


for(i=NumMin,i=2, i--)
{
if (num%i==0) && (num%i==0){
MCD=i;
break;
}
}

frazSempl[1]=num/MCD;
frazSempl[2]=den/MCD;

return frazSempl;
}





Grazie....

sotoli
20-10-2011, 22:09
Ciao....a prima vista direi che hai bisogno di rivedere un po' il funzionamento degli array. A parte un paio di errori di sintassi nel ciclo for, il resto sono praticamente tutti errori riguardanti gli array.

oregon
20-10-2011, 22:16
Se indichi

frazione[2];

devi usare gli elementi frazione[0] e frazione[1]

robbino:)
20-10-2011, 22:38
Grazie... magari se potessi elencarmeli questi errori...

comunque lo immaginavo che fossero errori con gli array... il problema che non riesco nemmeno a trovarli!

ho ricorretto il codice come mi hai detto, oregon, ma non ho capito:

se dichiaro frazione[2] posso usare solo frazione[0] e frazione[1]?

riposto il codice... con gli errori che segnala il compilatore...



#include <iostream>


using namespace std;
int riduci(int arg[2]);


int main(){
int num, den;
int frazione[2];
int frazioneRidotta[2];
cout<<"Scrivi il numeratore \n";
cin>>num;
cout<<"\n";
cout<<"Scrivi il denominatore \n";
cin>>den;
frazione[0]=num;
frazione[1]=den;
frazioneRidotta=riduci(frazione[]); //error: expected primary-expression before ']' token

cout<<"La frazione semplificata \n"<<frazioneRidotta[1]<<"\n"<<"--- \n"<<frazioneRidotta[2];

return(0);

}

int riduci(int arg[2]){
int num = arg[0];
int den =arg[1];
int i=1;
bool NumMagg = true;
int NumMin = 0;
int MCD=1;
int frazSempl[2];

if(num>den){
NumMagg=true;
NumMin=den;
}
else{
NumMagg=false;
NumMin=num;
}


for(i=NumMin,i=2, i--) // error: expected ';' before ')' token

{
if (num%i==0) && (num%i==0){
MCD=i;
break;
}
}

frazSempl[0]=num/MCD;
frazSempl[1]=den/MCD;

return frazSempl;
} //error: expected ';' at end of input E expected primary-expression at end of input E
//expected ')' at end of input E expected statement at end of input E
//error: expected '}' at end of input




Grazie a tutti!

oregon
20-10-2011, 23:13
Originariamente inviato da robbino:)
se dichiaro frazione[2] posso usare solo frazione[0] e frazione[1]?


Solo? Se dichiari 2 elementi, ne usi 2 ma con indice che parte da 0

Probabilmente dovresti ripassare le basi del C (non del C++) altrimenti ti confondi di pi ...

Raam General
21-10-2011, 16:24
Potresti dare un'occhiata all'uso della classe vector, dei buoni surrogati degli array.

robbino:)
21-10-2011, 16:28
Grazie a tutti!
Sono riuscito a trovare moltissimi errori... ma due errori non li riesco proprio a correggere.

Sono entrambi errori con gli array, il primo :



frazioneRidotta[]=riduci(frazione);


e il secondo



return frazSempl[];


In entrambi i casi mi dice:



error: expected primary-expression before ']' token


Come lo posso risolvere?

Grazie mille e, vi prego, non dite che devo studiare il C perch proprio quello che sto cercando di fare, questo un esercizio!

oregon
21-10-2011, 17:37
Non puoi restituire array da una funzione in C.

Usa i puntatori e l'allocazione dinamica dei vettori.

Non pensare di potere studiare il C nel forum con domande e risposte ... il linguaggio si studia sui libri e al forum ci si rivolge solo quando ci sono dubbi su quanto si letto o imparato. Ma se non hai neanche studiato il capitolo vettori-puntatori ...

Loading