Visualizzazione dei risultati da 1 a 10 su 10

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2016
    Messaggi
    38

    problema banale nel programma c++

    ciao ragazzi, è da poco che studio per fondamenti di informatica e ho riscontrato un errore che non riesco a risolvere pur sapendo che si tratta di una cosa banale. in poche parole le funzioni (che ho scritto in una libreira .h) di somma e media non mi danno il giusto risultato. via allego il codice qui sotto e grazie in anticipo!

    main:

    codice:
    #include <cstdlib>
    #include <iostream>
    #include <stdio.h>
    #include "newfile.h"
    using namespace std;
    
    
    /*
     * 
     */
    extern const int maxr=10;
    extern const int maxc=10;
    
    
    int main()
    {
        const int nmax=10;
        int numeri [nmax];
        int matr[maxr][maxc];
        int r,c,rie;
        do
        {
        cout<<"quanti valori vuoi immettere?\n";
        cin>>rie;
        }while(rie>nmax);
        inserisci_vet(numeri,rie);
        stampa_vet (numeri,rie);
        cout<<"la media totale del vettore e': "<<media (numeri,rie)<<endl;
        cout<<"la somma totale del vettore e': "<<somma (numeri,rie)<<endl;
        inserisci_righecolonne(r,c);
        inserisci_matrice(matr,r,c);
        stampa_matrice (matr,r,c);
        system ("pause");
        return 0;
    }

    funzioni:

    codice:
    #include <cstdlib>
    #include <iostream>
    #include <stdio.h>
    using namespace std;
    extern const int maxr;
    extern const int maxc;
    
    
    void inserisci_vet (int array [],int riempimento)
    {
    cout<<"inserisci i tuoi numeri\n";
    for (int i=0;i<riempimento;i++)
    {
        cout<<"v["<<i<<"]"<<": ";
        cin>>array[i];
    }
    }
    
    
    void stampa_vet (int array [], int riempimento)
    {
        cout<<"i numeri contenuti nell'array attualmente sono:\n";
        for (int i=0;i<riempimento;i++)
        {        
            cout<<"v["<<i<<"]"<<": "<<array[i]<<endl;
        }
        
    }
    
    
    float media (int array[],int riempimento)
    {
        int s=0;
        for (int i=0;i<=riempimento;i++)
        {
            s+=array[i];                
        }
        float m=s/riempimento;
        return m;
    }
    
    
    int somma (int array[],int riempimento)
    {
        int s=0;
        for (int i=0;i<=riempimento;i++)
        {
            s+=array[i];                
        }
        return s;
    }
    
    
    void inserisci_righecolonne(int &r, int &c)
    {
        cout<<"inserisci il numero di righe:\n";
        cin>>r;
        cout<<"inserisci il numero di colonne:\n";
        cin>>c;
    }
    
    
    void inserisci_matrice(int matrice[][10],int righe,int colonne)
    {
        cout<< "Inserisci i valori della matrice: " << endl;
            for (int i=0; i<righe; i++) 
            {
            cout<<"Riga numero " << i+1 << ":" << endl;
                for (int j=0; j<colonne; j++)
                    {
                    cout<<"matr["<<i<<"]["<<j<<"]: ";
                    cin >>matrice[i][j];
                    }
            }    
    }
    
    
    void stampa_matrice (int matrice[][10],int righe,int colonne)
    {
      cout<< "la matrice da te inserita e': " << endl;
            for (int i=0; i<righe; i++) 
            {
            cout<<endl;
                for (int j=0; j<colonne; j++)
                    {
                    cout<<matrice[i][j]<<endl;
                    }
            }    
    }
    Ultima modifica di LeleFT; 01-07-2016 a 16:10 Motivo: Aggiunti i tag CODE

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Intanto devi calcolare l'espressione utilizzando un float, quindi

    float m=(float)s/riempimento;

    e soprattutto devi correggere le for con

    for (int i=0; i<riempimento; i++)

    e non con <=
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2016
    Messaggi
    38
    grazie! ora funziona. approfitto per farti un altra domanda: come posso mettere nella funzione stampa_matrice, nelle colonne, maxc e non 10?... mi dava errore e ho dovuto mettere il 10 per disperazione

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da emix95 Visualizza il messaggio
    grazie! ora funziona. approfitto per farti un altra domanda: come posso mettere nella funzione stampa_matrice, nelle colonne, maxc e non 10?... mi dava errore e ho dovuto mettere il 10 per disperazione
    Non usare una const int ma una costante con una define

    #define MAXR 10
    #define MAXC 10

    e quindi utilizza MAXR e MAXC
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2016
    Messaggi
    38
    avevo gia provato a fare in questa maniera ma l' errore che mi usciva era questo
    In file included from main.cpp:17:0:newfile.h:77:38: error: 'MAXC' was not declared in this scope
    void inserisci_matrice(int matrice[][MAXC],int righe,int colonne)
    ^
    newfile.h:77:43: error: expected ')' before ',' token
    void inserisci_matrice(int matrice[][MAXC],int righe,int colonne)
    ^
    newfile.h:77:44: error: expected unqualified-id before 'int'
    void inserisci_matrice(int matrice[][MAXC],int righe,int colonne)

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma il file newfile.h qual è?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2016
    Messaggi
    38
    la libreria dove ho messo tutte le funzioni

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Un file .h è un file header e in un file header non ci va il codice. Il codice va nei file .cpp.

    Quindi devi avere un file newfile.cpp dove metti le funzioni e un file newfile.h dove metti le dichiarazioni e le define. Il tuo file newfile.h dovrebbe essere fatto così

    codice:
    #define MAXR 10
    #define MAXC 10
    #define NMAX 10
     
    void inserisci_vet (int array [],int riempimento);
    void stampa_vet (int array [], int riempimento);
    float media (int array[],int riempimento);
    int somma (int array[],int riempimento);
    void inserisci_righecolonne(int &r, int &c);
    void inserisci_matrice(int matrice[][10],int righe,int colonne);
    void stampa_matrice (int matrice[][10],int righe,int colonne);
    Nel file newfile.cpp metti

    codice:
    #include <iostream>
    #include "newfile.h"
     
    using namespace std;
     
     
    void inserisci_vet (int array [],int riempimento)
    {
    cout<<"inserisci i tuoi numeri\n";
    for (int i=0;i<riempimento;i++)
    {
        cout<<"v["<<i<<"]"<<": ";
        cin>>array[i];
    }
    }
     
     
    void stampa_vet (int array [], int riempimento)
    {
        cout<<"i numeri contenuti nell'array attualmente sono:\n";
        for (int i=0;i<riempimento;i++)
        {        
            cout<<"v["<<i<<"]"<<": "<<array[i]<<endl;
        }
        
    }
     
     
    float media (int array[],int riempimento)
    {
        int s=0;
        for (int i=0;i<riempimento;i++)
        {
            s+=array[i];                
        }
        float m=(float)s/riempimento;
        return m;
    }
     
     
    int somma (int array[],int riempimento)
    {
        int s=0;
        for (int i=0;i<riempimento;i++)
        {
            s+=array[i];                
        }
        return s;
    }
     
     
    void inserisci_righecolonne(int &r, int &c)
    {
        cout<<"inserisci il numero di righe:\n";
        cin>>r;
        cout<<"inserisci il numero di colonne:\n";
        cin>>c;
    }
     
     
    void inserisci_matrice(int matrice[][MAXC],int righe,int colonne)
    {
        cout<< "Inserisci i valori della matrice: " << endl;
            for (int i=0; i<righe; i++) 
            {
            cout<<"Riga numero " << i+1 << ":" << endl;
                for (int j=0; j<colonne; j++)
                    {
                    cout<<"matr["<<i<<"]["<<j<<"]: ";
                    cin >>matrice[i][j];
                    }
            }    
    }
     
     
    void stampa_matrice (int matrice[][MAXC],int righe,int colonne)
    {
      cout<< "la matrice da te inserita e': " << endl;
            for (int i=0; i<righe; i++) 
            {
            cout<<endl;
                for (int j=0; j<colonne; j++)
                    {
                    cout<<matrice[i][j]<<endl;
                    }
            }    
    }
    e il main diventa

    codice:
    #include <iostream>
    #include "newfile.h"
     
    using namespace std;
     
     
    int main()
    {
        int numeri[NMAX];
        int matr[MAXR][MAXC];
        int r,c,rie;
        do
        {
        cout<<"quanti valori vuoi immettere?\n";
        cin>>rie;
        }while(rie>NMAX);
        inserisci_vet(numeri,rie);
        stampa_vet (numeri,rie);
        cout<<"la media totale del vettore e': "<<media (numeri,rie)<<endl;
        cout<<"la somma totale del vettore e': "<<somma (numeri,rie)<<endl;
        inserisci_righecolonne(r,c);
        inserisci_matrice(matr,r,c);
        stampa_matrice (matr,r,c);
        system ("pause");
        return 0;
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2016
    Messaggi
    38
    sei stato preziosissimo, grazie veramente. nel caso avessi altre domande "stupide" posso o scoccio troppo? hahaha

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da emix95 Visualizza il messaggio
    sei stato preziosissimo, grazie veramente. nel caso avessi altre domande "stupide" posso o scoccio troppo? hahaha
    Di nulla ... ovviamente nel file include userai le costanti

    #defineMAXR10
    #defineMAXC10
    #defineNMAX10

    void inserisci_vet (intarray[],int riempimento);
    void stampa_vet (intarray[],int riempimento);
    float media (intarray[],int riempimento);
    int somma (intarray[],int riempimento);
    void inserisci_righecolonne(int&r,int&c);
    void inserisci_matrice(int matrice[][MAXC],int righe,int colonne);
    void stampa_matrice (int matrice[][MAXC],int righe,int colonne);
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.