Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2015
    Messaggi
    15

    [C++] programma con vettori

    ciao a tutti ho un problema con questo programma, ho letto da più appunti i sottoprogrammi ma non ho capito tanto bene il funzionamento.
    la traccia del programma l'ho leggermente modificata per renderla più semplice.
    gli errori di compilazione sono i seguenti:

    In function `int main()':
    19: error: variable or field `leggi' declared void
    19: error: initializer expression list treated as compound expression
    20: error: variable or field `filtra' declared void
    20: error: initializer expression list treated as compound expression
    21error: variable or field `stampa' declared void
    21: error: initializer expression list treated as compound expression



    /* siano dati da tastiera un vettore ed il suo riempimento, con un intero k.
    Si copino in un nuovo vettore v_pari gli elementi di posto pari ed in v_dispari quelli
    dispari.
    e si stampi infine il tutto
    */

    codice:
    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    #define dim 100
    
    
    //prototipi
    void leggi (int [], int& , int&);
    void filtra (int [],int [],int [], int, int&, int&, int); 
    void stampa (int [],int [],int [], int, int, int, int);
    
    
    
    
    int main (){
        int v[dim],v_pari[dim],v_disp[dim],r,r1,r2,k,l=0,j=0;
        void leggi ( v ,r ,k);
        void filtra (v,v_pari,v_disp,r,r1,r2,k); 
        void stampa (v,v_pari,v_disp,r,r1,r2,k);
        
    
    
        
        
        system("PAUSE");
        
        return 0;
    }
    
    
    void leggi (int v[], int& r,int& k){
         cout<<"INSERISCI IL RIEMPIMENTO"<<endl<<"RIEMPIMENRO =";
         cin>>r; cout<<endl;
         cout<<"INSERISCI L'INTERO K"<<endl<<"k=";
         cin>>k;
              
         }
         
    void filtra (int v[],int v_pari[],int v_disp[],int r,int& r1,int& r2,int k){
         int j=0;
         int l=0;
         
         
         for (int i=0;i<r;i++){
             
                         if (i%2==0){
                                     v_pari[j]=v[i];}
                                     j++;}//chiude 2 for
                         
         r1=j;
         for (int i=0;i<r;i++){
                         if (i%2 != 0){
                                 v_disp[l]=v[i];}
                                 l++;}//chiude 3 for
         
         r2=l;
         }//chiude filtra
         
    void stampa (int v,int v_pari,int v_disp, int r, int r1, int r2, int k){
         for(int i=0;i<r;i++){
                 cout<<v;}
         cout<<endl;
         for(int i=0;i<r1;i++){
                 cout<<v_pari;}
         cout<<endl;
         for(int i=0;i<r2;i++){
                 cout<<v_disp;}
         cout<<endl;
         cout<<k;
         }
    grazie
    Ultima modifica di MItaly; 06-12-2015 a 16:02

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quando richiami le funzioni nel codice, non devi scrivere il tipo di ritorno ma semplicemente


    leggi ( v ,r ,k);

    come avevi già scritto in questa discussione

    http://forum.html.it/forum/showthread.php?threadid=2933003&postid=25344177#po st25344177
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2015
    Messaggi
    15
    grazie mille oregon, mi stai dando una grossa mano, mi dispiace non averlo notato prima nonostante sia stato molto tempo a riguardarlo prima di pubblicarlo.
    comunque mi dà un altro errore e avendo fatto una ricerca sia nel forum che su google può darsi che sia un errore di libreria ma non ne sono sicuro.
    gli errori sono i seguenti:
    undefined reference to `stampa(int*, int*, int*, int&, int&, int&, int&)'
    ld returned 1 exit status

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da anie91 Visualizza il messaggio
    undefined reference to `stampa(int*, int*, int*, int&, int&, int&, int&)'
    Questo è causato dal fatto che hai scritto una dichiarazione della funzione stampa

    void stampa (int [],int [],int [], int, int, int, int);

    in cui usi degli argomenti, e poi la funzione la scrivi così


    void stampa (int v,int v_pari,int v_disp, int r, int r1, int r2, int k){

    con altri argomenti (i primi 3 hai dichiarato che dovevano essere vettori mentre sono solo interi).

    Il compilatore ti fa notare questa incongruenza.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2015
    Messaggi
    15
    ho modificato ed inoltre c'erano alcuni errori che ho corretto ma il programma non esegue bene le istruzioni. lo riguardo un pò e casomai lo posto.
    comunque avevo dimenticato di fare inserire gli elementi del vettore e nella stampa avevo dimenticato di aggiungere le quadre dopo il vettore.
    Ultima modifica di anie91; 07-12-2015 a 12:07

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2015
    Messaggi
    15
    grazie mille per l'aiuto. non eseguiva bene poichè nel sottoprogramma filtra quando andavo a definire il vettore dispari e pari, dovevo scrivere j++ e l++ all'interno dell' if.

Tag per questa discussione

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.