Comunque il problema è nell'include ... non deve essere
void leggi(matrice, int&, int&, const stringa);
ma
void leggi(matrice, int&, int&, stringa);
Comunque il problema è nell'include ... non deve essere
void leggi(matrice, int&, int&, const stringa);
ma
void leggi(matrice, int&, int&, stringa);
No MP tecnici (non rispondo nemmeno!), usa il forum.
Lib.h
lib.cppcodice:const int maxdim=30; typedef int vettore [maxdim]; typedef int matrice [maxdim][maxdim]; typedef char stringa [maxdim+1]; struct coordinate{ int riga; int colonna; }; typedef coordinate vett_str[maxdim]; void leggi_mat(matrice, int&, int&, const stringa); void vett_positivo(const matrice, int, int, vettore, int&);
main.cppcodice:#include <iostream> #include <cstdlib> #include <stdio> #include "lib.h" using namespace std; void leggi_mat(matrice mat, int&rig, int&col, stringa nomefile){ int i,j; FILE*fp=fopen(nomefile, "r"); if(fp==0){ cout<<"\n Impossibile trovare il file: "<<nomefile<<" ! \nConstrollare la directory..."; system("PAUSE"); exit(1); } fscanf(fp, "%d %d", &rig, &col); for(i=0;i<rig;i++) for(j=0;j<col;j++) fscanf(fp,"%d", &mat[i][j]); fclose(fp); } void vett_positivo(matrice mat, int rig, int col, vettore v, int& riempv){ int i,j,k; bool trovato=false; riempv=0; for(i=0;i<rig;i++){ j=0; trovato=false; while(j<col && !trovato) if(mat[i][j]>0){ k=mat[i][j]; v[riempv]=k; riempv++; trovato = true; } else j++; } }
ecco qua :scodice:#include <iostream> #include <cstdlib> #include "stdio.h" #include "lib.h" using namespace std; int main() { int rig, col,riempv_pos; vettore vposit; matrice mat; vett_str info; stringa nomefile; cout<<"Inserire il nome del file per prelevarne i dati: "; cin>>nomefile; leggi_mat(mat, rig, col, nomefile); system("PAUSE"); return EXIT_SUCCESS; }
Una osservazione, perché dichiari
con lunghezza maxdimcodice:typedef int vettore [maxdim]; typedef int matrice [maxdim][maxdim];
mentre
con lunghezza maxdim+1 ?codice:typedef char stringa [maxdim+1];
Sarebbe più razionale fossere tutti con la stessa lunghezza, maxdim oppure maxdim+1
Inoltre in nessuna parte del codice effettui i controlli necessari affinchè questi limiti non vengano superati.
Ultima modifica di Samuele_70; 11-02-2015 a 13:45
01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
All errors are undocumented features waiting to be discovered.
Lo dichiaro così prima di tutto perchè così preferisce il prof, inoltre perchè so che sicuramente la stringa sarà massimo lunga 30 caratteri e quel +1 assume il '\0' cioè il "tappo" della stringa xD
Non so se mi so spiegato bene.![]()
In ambiente windows, per contenere i nomi di file in formato ANSI, è consuetudine usare stringhe di 260 caratteri.
01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
All errors are undocumented features waiting to be discovered.
Vabbe questo non lo so...
il mio prof così ci ha detto e io così faccio![]()
Sisi infatti ora mi compila!
Grazie mille!