Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [C++]problema programma .cpp

    ciao a tutti ho un problema urgente non riesco a far girare un programma e non riesco a capire dove siano gli errori, il programma è formato da una parte in .cpp una in .h e il main il problema sta nel .cpp ma vi posto comunque i tre codici

    questo è il cpp
    Codice PHP:
    // GradeBook.cpp
    // Definizione delle funzioni membro per la classe GradeBook,
    // utilizzando un array per memorizzare i voti degli stuedenti.

    #include <iostream>
    using namespace std;      

    #include <iomanip>
    using namespace std;

    //#include <fstream.h>

    #include <string.h> // per memorizzare output su file

    #include "GradeBook.h" // definizione della classe GradeBook

    // Costruttore inizializza il dato privato courseName e l'array di voti
    GradeBook::GradeBook(myGradeBook)
    {
        
    setCourseName(name); // inizializza courseName

       // copia i voti del gradeArray ai voti del dato membro
       
    strcpy(grades,gradesArray);
    }

    // funzione per settare il nome del corso
    void GradeBook::setCourseName(string name)
    {
        
    courseName=name// memorizza il nome del corso
       
    }
    // funzione per ottenere il nome del corso
    string GradeBook::getCourseName()
    {
        return 
    courseName;
    }

    // stampa un messaggio di benvenuto nel registro dei voti
    void GradeBook::displayMessage()
    {
      
        
    cout << "Benvenuti al registro per\n" << getCourseName() << "!" << endl;
    }

    // effettua vare operazioni sui dati
    void GradeBook::processGrades()
    {
         
       
    // visualizza l'output dell'array dei voti
       
    cout<<"L'array Š: ";
      for(
    int u=0;u<10;u++)
      
    cout<<grades[u]<<"\t";
      
    cout<<endl;
       
    // chiama la funzione getAverage() per ottenere la media dei voti
       
    myGradeBook.getAverage();

       
    // chiama le funzioni per ottenere il voto min e massimo
       
    myGradeBook.getMinimum();
       
    myGradeBook.getMaximum();

       
    // chiama la funzione outputBarChart per stampare a video il grafico della
       // distribuzione dei voti
     
    myGradeBook.outputBarChart();
       
       
    }

    // trova il voto minimo
    int GradeBook::getMinimum()
    {
       
    int lowGrade=100;// assume il più basso sia 100

       // esegue il loop di ricerca nell'array
       
    for(int w=0;w<10;w++)
       {
          
    // se il voto corrente è più basso del lowGrade, assegnalo a lowGrade
        
    if(grades[w]<lowGrade)
           
    grades[w]=lowGrade;
       }
        
    cout<<"Il voto piu' basso Š: "<<lowGrade<<endl// restituisce il voto più basso
        
    }

    // trova il voto massimo
    int GradeBook::getMaximum()
    {
      
    int highGrade=0// assume che il voto più alto sia 0

       // esegue il loop di ricerca nell'array dei voti
       
    for(int y=0;y<10;y++)
       {
          
    // se il voto corrente è più alto di highGrade, assegnalo a highhGrade
         
    if(grades[y]>highGrade)
            
    grades[y]=highGrade// nuovo voto più alto
       
    }

       
    cout<<"Il voto piu' alto Š: "<<highGrade<<endl// restituisce il voto più alto
    }     

    // determina il voto medio test
    double GradeBook::getAverage()
    {
           
    int average;
       
    int total// iniz. il tot.

       // somma i voti dell array sono int!
       
    for(int r=0;r<10;r++)
          
    total=total+grades[r];

       
    // ritorna il voto medio 
       
    average=total/10;
    }

    // visualizza il grafico con la distribuzione dei voti
    void GradeBook::outputBarChart()
    {
       
    cout<<"GRAFICO CON LA DISTRIBUZIONE DEI VOTI"<<endl<<endl;

       
    // registra le frequenza dei voti con scala ogni 10
       
    const int frequencySize 11;
       
    int frequencyfrequencySize ] = { };

       
    // per ogni voto, incrementa l'appropriata frequenza
       
    for(int grade=0;grade<10;grade++)
          
    frequencygradesgrade ] / 10 ]++;

       
    // per ogni frequenza, stampa il relativo * nel grafico istogramma
       
    for ( int count 0count frequencySizecount++ ) 
       {
          
    // etichette del grafico ("0-9:", ..., "90-99:", "100:" )
          
    if ( count == )
             
    cout << "  0-9: ";
          else if ( 
    count == 10 )
             
    cout << "  100: ";
          else
             
    cout << count 10 << "-" << ( count 10 ) + << ": ";
          
          
    // stampa gli asterischi
           
    for (int j=0j<grades[count]; j++) 
             
    cout << '*';

          
    cout << endl// va a capo ogni riga
       
    // fine grafico
    }

    // stampa il contenuto dell'array dei voti.
    void GradeBook::outputGrades()
    {
       
    cout << "\nI voti sono:\n\n";
       
       
    // stampa ogni voto dello studente
       // QUESTO DOVRA ESSERE PRESEnTE ANCHE NEL FILE OUTPUT DI FREQUENZA.TXT
       
    for(int student=0;student<10;student++)
       {
          
    cout << "Studente " << setw) << student << ": " << setw)
             << 
    gradesstudent ] << endl;  
             }
                     
             
    }
    // Funzione che salva nel file l'output a video del nome del corso, numero di studenti
    // e dei voti
    int GradeBook:: salva(const char *)
    {
        
    ofstream outfile ("frequenza.txt");
      if (
    outfile.is_open())
      {
        
    outfile<<"PRISMA SRL: Corso di Introduzione alla programmazione C e C++\nESAME DICEMBRE 2008"<<endl;
        
    outfile << "Numero di studenti: " << students << endl;
        
    outfile << "Voti prove esame corso di programmazione " << endl;
        for ( 
    int student 0student studentsstudent++ )
        {
            
    outfile << gradesstudent ] << endl;
        }
    }
        return 
    0;
    // fine funzione salva 
    questo l'.h
    Codice PHP:
    // GradeBook.h
    // Dichiara la classe GradeBook per la memorizzazione dell'array dei voti.
    // Le funzioni membro sono definite in GradeBook.cpp

    #include <string> // programma usa la classe C++ Standard Library string
    using std::string;

    // GradeBook: definizione della classe
    class GradeBook
    {
    public:
       
    // Costante: questo è il numero degli studenti che sostengono gli esami
       
    const static int students 10;

       
    // Costruttore che inizializza il nome del corso e l'array dei voti
       
    GradeBookstring, const int [] );

       
    void setCourseName( string ); // funzione che setta il nome del corso
       
    string getCourseName(); // funzione che ottiene il nome del corso
       
    void displayMessage(); // mostra il messaggio di benvenuto
       
    void processGrades(); // effettua varie operazioni sui dati voti degli studenti
       
    int getMinimum(); // trova il voto minimo dei test sostenuti
       
    int getMaximum(); // trova il voto massimo dei test sostenuti
       
    double getAverage(); // determina il voto medio dei test sostenuti
       
    void outputBarChart(); // stampa il diagramma dei voti e relative frequenze
       
    void outputGrades(); // output che contiene il vettore dei voti
       
    int salva(const char *); //salva su file
    private:
       
    string courseName// setta il nome del corso
       
    int gradesstudents ]; // dato membro che inizializza il vettore dei voti 
    }; // fine classe GradeBook 
    questo è il main
    Codice PHP:
    // Crea l'oggetto GradeBook utilizzando un array di voti.


    #include "GradeBook.h" // Definizione della classe GradeBook

    // funzione main per l'inizio del programma
    int main()
    {
       
    // array dei voti degli studenti
       
    int gradesArrayGradeBook::students ] = 
          { 
    846894100837885917687 }; 
       
       
    // Creazione oggetto 
       
    GradeBook myGradeBook("CS101 Corso di Introduzione alla programmazione C++"gradesArray );
       
    myGradeBook.displayMessage();
       
    myGradeBook.processGrades();
       
    myGradeBook.salva("frequenza.txt");
       
    system("PAUSE");
       return 
    0;
    // fine main 
    non so come fare grazie infinite

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Invece di farci copiare e provare tutto quel codice, intanto ci dici cosa vuol dire "non riesco a far girare un programma" ?

    Non riesci a compilarlo? Hai degli errori (e quali) quando lo compili? Con che strumenti lo compili?

    Se lo compili, cosa succede durante l'esecuzione del programma? Hai degli errori? Quali?

    Vorresti avere dei risultati (quali?) e ne hai altri (quali?).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    il programma che uso è il bloodsheld dev-c++ e gli errori che mi risultano sono:

    19 J:\Programmazione\Zanconato\ESAME\GradeBook.cpp invalid function declaration
    J:\Programmazione\Zanconato\ESAME\GradeBook.cpp In member function `void GradeBook:rocessGrades()':

    55 J:\Programmazione\Zanconato\ESAME\GradeBook.cpp `myGradeBook' undeclared (first use this function)
    (Each undeclared identifier is reported only once for each function it appears in.)
    J:\Programmazione\Zanconato\ESAME\GradeBook.cpp In member function `int GradeBook::salva(const char*)':

    165 J:\Programmazione\Zanconato\ESAME\GradeBook.cpp variable `std:fstream outfile' has initializer but incomplete type
    J:\Programmazione\Zanconato\ESAME\Makefile.win [Build Error] [GradeBook.o] Error 1

    in pratica il programma calcola i voti di un esame e mi dice la media il massimo, il minimo e mi fa vedere un istogramma di asterischi per la frequenza e infine oltre a mostrameli a video me li salva in un file di testo

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Sembra un codice copiato-incollato e modificato male ...

    Solo per iniziare ... nella classe c'e' la dichiarazione di questo costruttore

    GradeBook( string, const int [] );

    che nel codice diventa

    GradeBook::GradeBook(myGradeBook)

    anche se al suo interno utilizzi i parametri sopradetti ...

    {
    setCourseName(name); // inizializza courseName

    // copia i voti del gradeArray ai voti del dato membro
    strcpy(grades,gradesArray);
    }

    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    quindi devo mettere

    GradeBook::GradeBook(name, gradesArray)

    giusto?
    scusa se sono insistente ma mi serve tantissimo compilare questo programma e non ci capisco niente aiutami per favore

  6. #6
    aspetta mi dava ancora errori così adesso ho messo

    Codice PHP:
    GradeBook::GradeBook(std::string name,const int *gradesArray)
    {
        
    setCourseName(name); // inizializza courseName

       // copia i voti del gradeArray ai voti del dato membro
       
    int strcpy(int gradesint gradesArray);

    e almeno in questa parte non mi da più errori adesso rimangono "solo" gli errori alla linea 55 e 165 ovvero in questa parte nella parola myGradeBook io ho messo my gradebook perchè non sapevo che scriverci per richiamare le funzioni:
    Codice PHP:
    void GradeBook::processGrades()
    {
         
       
    // visualizza l'output dell'array dei voti
       
    cout<<"L'array Š: ";
      for(
    int u=0;u<10;u++)
      
    cout<<grades[u]<<"\t";
      
    cout<<endl;
       
    // chiama la funzione getAverage() per ottenere la media dei voti
       
    myGradeBook.getAverage();

       
    // chiama le funzioni per ottenere il voto min e massimo
       
    myGradeBook.getMinimum();
       
    myGradeBook.getMaximum();

       
    // chiama la funzione outputBarChart per stampare a video il grafico della
       // distribuzione dei voti
    myGradeBook.outputBarChart();
       
       

    e nella parte finale nella funzione salva
    cosa posso fare?

  7. #7
    per la parte finale mi sono arrangiato infatti per sbaglio avevo tolto #include<fstream.h> all'inizio, l'errore in teoria adesso sta solo nel richiamare le funzioni che a quanto pare non sono capce di fare

  8. #8
    Originariamente inviato da SuperAlby
    aspetta mi dava ancora errori così adesso ho messo

    codice:
    GradeBook::GradeBook(std::string name,const int *gradesArray)
    {
        setCourseName(name); // inizializza courseName
    
       // copia i voti del gradeArray ai voti del dato membro
       int strcpy(int grades, int gradesArray);
    }
    e nella parte finale nella funzione salva
    cosa posso fare?
    Scusa è una distrazione o hai le idee un po' confuse ? :rollo:

  9. #9
    ho le idee moltooo confuse cmq puoi darmi una mano? adesso il .cpp risulta così:

    Codice PHP:
    // GradeBook.cpp
    // Definizione delle funzioni membro per la classe GradeBook,
    // utilizzando un array per memorizzare i voti degli stuedenti.

    #include <iostream>
    using namespace std;      

    #include <iomanip>
    using namespace std;

    #include <fstream.h>

    #include <string.h> // per memorizzare output su file

    #include "GradeBook.h" // definizione della classe GradeBook

    // Costruttore inizializza il dato privato courseName e l'array di voti
    GradeBook::GradeBook(string name,const int *gradesArray)
    {
        
    setCourseName(name); // inizializza courseName

       // copia i voti del gradeArray ai voti del dato membro
       
    int strcpy(int gradesint gradesArray);
    }

    // funzione per settare il nome del corso
    void GradeBook::setCourseName(string name)
    {
        
    courseName=name// memorizza il nome del corso
       
    }
    // funzione per ottenere il nome del corso
    string GradeBook::getCourseName()
    {
        return 
    courseName;
    }

    // stampa un messaggio di benvenuto nel registro dei voti
    void GradeBook::displayMessage()
    {
      
        
    cout << "Benvenuti al registro per\n" << getCourseName() << "!" << endl;
    }

    // effettua vare operazioni sui dati
    void GradeBook::processGrades()
    {
         
       
    // visualizza l'output dell'array dei voti
       
    cout<<"L'array Š: ";
      for(
    int u=0;u<10;u++)
      
    cout<<grades[u]<<"\t";
      
    cout<<endl;
       
    // chiama la funzione getAverage() per ottenere la media dei voti
       
    getAverage();

       
    // chiama le funzioni per ottenere il voto min e massimo
       
    getMinimum();
       
    getMaximum();

       
    // chiama la funzione outputBarChart per stampare a video il grafico della
       // distribuzione dei voti
       
    outputBarChart();
       
       
    }

    // trova il voto minimo
    int GradeBook::getMinimum()
    {
       
    int lowGrade=100;// assume il più basso sia 100

       // esegue il loop di ricerca nell'array
       
    for(int w=0;w<10;w++)
       {
          
    // se il voto corrente è più basso del lowGrade, assegnalo a lowGrade
        
    if(grades[w]<lowGrade)
           
    grades[w]=lowGrade;
       }
        
    cout<<"Il voto piu' basso Š: "<<lowGrade<<endl// restituisce il voto più basso
        
    }

    // trova il voto massimo
    int GradeBook::getMaximum()
    {
      
    int highGrade=0// assume che il voto più alto sia 0

       // esegue il loop di ricerca nell'array dei voti
       
    for(int y=0;y<10;y++)
       {
          
    // se il voto corrente è più alto di highGrade, assegnalo a highhGrade
         
    if(grades[y]>highGrade)
            
    grades[y]=highGrade// nuovo voto più alto
       
    }

       
    cout<<"Il voto piu' alto Š: "<<highGrade<<endl// restituisce il voto più alto
    }     

    // determina il voto medio test
    double GradeBook::getAverage()
    {
           
    int average;
       
    int total// iniz. il tot.

       // somma i voti dell array sono int!
       
    for(int r=0;r<students;r++)
          
    total=total+grades[r];

       
    // ritorna il voto medio 
       
    average=total/10;
    }

    // visualizza il grafico con la distribuzione dei voti
    void GradeBook::outputBarChart()
    {
       
    cout<<"GRAFICO CON LA DISTRIBUZIONE DEI VOTI"<<endl<<endl;

       
    // registra le frequenza dei voti con scala ogni 10
       
    const int frequencySize 11;
       
    int frequencyfrequencySize ] = { };

       
    // per ogni voto, incrementa l'appropriata frequenza
       
    for(int grade=0;grade<students;grade++)
          
    frequencygradesgrade ] / 10 ]++;

       
    // per ogni frequenza, stampa il relativo * nel grafico istogramma
       
    for ( int count 0count frequencySizecount++ ) 
       {
          
    // etichette del grafico ("0-9:", ..., "90-99:", "100:" )
          
    if ( count == )
             
    cout << "  0-9: ";
          else if ( 
    count == 10 )
             
    cout << "  100: ";
          else
             
    cout << count 10 << "-" << ( count 10 ) + << ": ";
          
          
    // stampa gli asterischi
           
    for (int j=0j<grades[count]; j++) 
             
    cout << '*';

          
    cout << endl// va a capo ogni riga
       
    // fine grafico
    }

    // stampa il contenuto dell'array dei voti.
    void GradeBook::outputGrades()
    {
       
    cout << "\nI voti sono:\n\n";
       
       
    // stampa ogni voto dello studente
       // QUESTO DOVRA ESSERE PRESEnTE ANCHE NEL FILE OUTPUT DI FREQUENZA.TXT
       
    for(int student=0;student<students;student++)
       {
          
    cout << "Studente " << setw) << student << ": " << setw)
             << 
    gradesstudent ] << endl;  
             }
                     
             
    }
    // Funzione che salva nel file l'output a video del nome del corso, numero di studenti
    // e dei voti
    int GradeBook::salva(const char *)
    {
        
    ofstream outfile ("frequenza.txt");
      if (
    outfile.is_open())
      {
        
    outfile<<"PRISMA SRL: Corso di Introduzione alla programmazione C e C++\nESAME DICEMBRE 2008"<<endl;
        
    outfile << "Numero di studenti: " << students << endl;
        
    outfile << "Voti prove esame corso di programmazione " << endl;
        for ( 
    int student 0student studentsstudent++ )
        {
            
    outfile << gradesstudent ] << endl;
        }
    }
        return 
    0;
    // fine funzione salva 
    ADESSO ALMENO PARTE L'ESEGUIBILE MA A QUANTO APRE HO IDENTIFICATO IL PROBLEMA FINALE CIOE' QUANDO VISUALIZZA L'ARRAY GRADES[] CHE HO COPIATO DA GRADESARRAY[] CON LA FUNZIONE STRCPY() HO SBAGLIATO PERCHE' L'ARRAY GRADES MI RISULTA UN INSIEME DI NUMERI INCOMPRENSIBILI TIPO 22205060,55070670,0,... QUINDI VI CHIEDO L'ULTIMO AIUTO COME COPIO L'ARRAY GRADESARRAY[] NEL DATO MEMBRO GRADES[]?

  10. #10

    ultimo problema

    finalmente ho risolto tutti i problemi l'unica cosa che mi rimane è la media

    per chiamarla scivo così:

    cout<<"La media dei voti Š: "<<setprecision(2)<<getAverage()<<endl;

    mentre la funzione è così:

    double GradeBook::getAverage()
    {
    int total; // iniz. il tot.

    // somma i voti dell array sono int!
    for(int r=0;r<students;r++)
    total+=grades[r];

    // ritorna il voto medio


    return static_cast<double>(total)/students;


    }

    dovrebbe essere giusto eppure la media mi risulta 3309553.80 che significa?

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.