Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [C++] Errori nel codice di un programma

    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.

    codice:
    #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....
    Dim mito As IO!!!!

  2. #2
    Utente di HTML.it L'avatar di sotoli
    Registrato dal
    Mar 2008
    Messaggi
    150
    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.
    Crestron Control Systems and AMX Control Systems Programmer

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Se indichi

    frazione[2];

    devi usare gli elementi frazione[0] e frazione[1]
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    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...

    codice:
    #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!
    Dim mito As IO!!!!

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    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ù ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Potresti dare un'occhiata all'uso della classe vector, dei buoni surrogati degli array.

  7. #7
    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 è:

    codice:
     frazioneRidotta[]=riduci(frazione);
    e il secondo

    codice:
     return frazSempl[];
    In entrambi i casi mi dice:

    codice:
     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!
    Dim mito As IO!!!!

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    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 ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.