Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    32

    programma su file di testo in c

    Ciao ho svolto questo esercizio di file in c e mi da i seguenti errori:

    too few arguments to function `bool crea_vett_ind(int, const int (*)[20], int&, coordinate*, int&)'

    at this point in file

    Premetto che programmo da poco e mi scuso per errori grossolani
    Questo è il testo dell'esrecizio:

    Sia data una matrice quadrata di interi M memorizzata in un file di testo (mat.txt), che contiene nella prima riga il valore del riempimento di riga e colonna (riemp) e nelle successive gli elementi della matrice (come illustrato negli esempi che seguono).
    Si progettino tre funzioni:
    - leggi_mat, che legge da file il riempimento ed i valori di una matrice quadrata di interi;
    - crea_vett_ind che riceve in ingresso il riempimento (riemp) ed i valori di una matrice quadrata di interi M ed un ulteriore valore intero K, e costruisce un vettore di strutture, vett_ind. Ciascuna struttura è composta da due campi entrambi di tipo intero, rig e col; ciascun elemento del vettore di strutture conterrà allora gli indici di riga e di colonna degli elementi di M il cui valore è maggiore di K. La funzione crea_vett_ind dovrà anche restituire un valore di ritorno booleano, che sarà pari a true se il vettore di strutture contiene almeno un elemento e false altrimenti (questo caso si verifica se non ci sono elementi di M maggiori di K);
    - salva_vett_ind, con la quale stampare su file di testo un vettore di strutture;
    e si scriva un programma che, utilizzando queste tre funzioni, legga riemp, M (dal file mat.txt) e K (da tastiera), provveda a costruire il vettore vett_ind e, usando opportunamente il valore booleano restituito dalla funzione crea_vett_ind, stampi il vettore vett_ind su file (output.txt) oppure stampi un opportuno messaggio di errore a video se il vettore vett_ind non contiene nessun elemento.

    Il programma dovrà essere suddiviso in moduli, uno contenente prototipi e dichiarazioni, uno contenente le funzioni leggi_mat, crea_vett_ind e salva_vett_ind ed un terzo contenente il main


    Il codice da me steso è il seguente

    codice:
    const int max=20;
    typedef int matrice[max][max];
    
    struct coordinate
    {
           int rig;
           int col;
    };
    
    typedef coordinate vettore[max];
    
    void leggi_mat(const matrice, int &, const char*);
    bool crea_vett_ind(int, const matrice, int &, vettore, int&);
    void salva_vett_ind(vettore, int, const char*);
    codice:
    #include <iostream>
    #include "lib.h"
    
    using namespace std;
    
    int main()
    {
        matrice mat;
        int riemp, riemp_vs, k;
        vettore vs;
      bool trovato;
        
        leggi_mat(mat, riemp, "input.txt");
       crea_vett_ind(riemp, mat, k, vs, riemp_vs);
        
        if(crea_vett_ind()==true)
        {
           cout<<"esiste almeno un valore in vs"<<endl;
           salva_vett_ind(vs, riemp_vs, "output.txt");
        }   
        else
           cout<<"non esiste alcun elemento di vs maggiore di k da te inserito"<<endl;                   
        
        
        
     system("PAUSE");
     return 0;
    }
    codice:
    #include <iostream>
    #include "lib.h"
    
    using namespace std;
    
    void leggi_mat(const matrice mat, int &riemp, const char *nomefile)
    {
      int i,j;
      FILE* fp_in=fopen("input.txt", "r");
      
      if(!fp_in)
      {
             cout<<"file non trovato"<<endl;
             system("PAUSE");
             exit(1);
      }
      
      fscanf(fp_in, "%d", &riemp);
      
      for(i=0;i<riemp;i++)
                          for(j=0;j<riemp;j++)
                                              fscanf(fp_in, "%d", &riemp);
                                              
      fclose(fp_in);                                        
    }
    
    bool crea_vett_ind(int riemp, const matrice mat, int &k, vettore vs, int &riemp_vs)
    {
         int i,j;
         bool trovato=false;
         
         cout<<"inserire valore di confronto per gli elementi della matrice"<<endl;
         cin>>k;
         
         for(i=0;i<riemp;i++)
         {
                             for(j=0;j<riemp;j++)
                             {
                                                                          
                                                 if(k == mat[i][j])
                                                      {
                                                                   vs[riemp_vs].rig=i;
                                                                   vs[riemp_vs].col=j;
                                                                   trovato=true;
                                                                   riemp_vs++;
                                                      }
                                                      
                            }     
         }
                            
    return trovato;
       
    }
    
    void salva_vett_ind(vettore vs, int riemp_vs, const char *filename)
    {
         int i;
         FILE* fp_out=fopen("output.txt", "w");
         
         if(!fp_out)
         {
                    cout<<"file non trovato"<<endl;
                    system("PAUSE");
                    exit(1);
         }           
         
        
         
         for(i=0;i<riemp_vs;i++)
         {
           fprintf(fp_out, "%d", vs[i].rig);
           fprintf(fp_out, "%d", vs[i].col);
                                
                                
         }
         
      fclose(fp_out);   
    }

  2. #2
    Quando nel main fai questo:
    codice:
    if(crea_vett_ind()==true)
    è normale che ti da un errore perchè non passi nessun argomento alla funzione crea_vett_ind..
    Forse devi togliere quesra istruzione
    codice:
    crea_vett_ind(riemp, mat, k, vs, riemp_vs);
    e modificare l'if in questo modo
    codice:
    if(crea_vett_ind(riemp, mat, k, vs, riemp_vs)==true)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    32
    Ecco grazie mille ignazio...=)

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.