io non ho capito la fscanf nella funzione lettura che assegna dei valori a r e c... che valori gli assegna? perchè non hai fatto nessun ciclo ne niente quindi non capisco che valore venga caricato all interno di queste variabili... spero mi riesca a rispondere, grazie in anticipo
Grazie mille, i tuoi video sono molto utili. Ne hai fatto anche uno in cui parli del passaggio di matrici alle funzionie alla differenza tra ad esempio m[3][3] e **m?
Perché non hai bisogno di dargli anche la prima dimensione, essendo il nome (l'identificativo) della matrice un puntatore al primo elemento della matrice [e quindi la prima dimensione il compilatore se la può ricavare da solo].
Scusa la domanda. Se io non conoscessi il numero di righe e colonne della matrice, come posso modificare il programma affinché mi fornisca queste due infos?
ciao, ho creato il programma, l'ho controllato e non mi da errori, però quando inserisco il file da aprire, mi spunta questa finestre: "lettura matrice da file di tipo void.exe SI è VERIFICATO UN ERRORE IN LETTURA DA FILE DI TIPO VOID.EXE. L'APPLICAZIONE VERRà CHIUSA. potrebbe essersi verificata la perdità dei dati su cui si stava lavorando. segnalazione del problema a Microsoft.... ecc" questo problema mi è capitato anche con il programma della lezione precedente (14°), sapresti dirmi qual'è il problema? grazie :)
Un errore a tempo di esecuzione "corrupted size vs. prev_size Aborted (core dumped)" Che tipo di problema c'è? Il problema c'è solo quando la fclose non è commentata...
ciao a me da un errore sulla riga del void ,cosa c'e scritto alla fine del void iniziale?? non si vede......e' oscurato lo schermo....dopo int *colonne? ...e devo mettere il ; per chiudere?
secondo me tu usi ubuntu e perciò quando mi sn trovato a riscrivere il tuo testo "su win 7" mi ha dato errore perchè il sistema operativo è diverso...mi sai dire che differenza c'è
puveggioso una stringa è già un puntatore, a differenza, ad esempio di un vettore di interi, quindi mettendo la & andremmo a creare un puntatore di puntatore
Perchè il vettore in realtà è un puntatore (se vai ai prossimi tutorial capirai). Non ho bisogno di dargli il numero di righe perchè se dichiaro un array a, a è il puntatore al primo elemento del vettore. Quindi ho bisogno di passargli soltanto il numero di colonne per fargli capire quando deve saltare alla prossima riga. Spero sia chiaro xD
Dipende da cosa devi fare. Il passaggio per valore spreca più memoria e passa una copia della variabile. Il passaggio per riferimento spreca meno memoria, passa l'indirizzo di memoria della variabile. In C di solito si utilizza sempre il passaggio per riferimento.
so che 8 anni fa è un po' tardi ma ti volevo chiedere di poter far vedere come salvi il file nella cartella perché io quando lo inserisco il programma non lo legge. Anch'io ho Codeblocks
ho fatto quasi lo stesso programma cambiando solo il nome del puntatore ma mi porta diversi errori potresti controllare per favore. #include #include void lettura( char file [],int matrice[][c],int*righe,int*colonne); int c; int main() { int matrice[R][C]; int righe,colonne,i,j; char file[20]; scanf("%s",file); lettura(file, matrice,&righe,&colonne); for(i=0;i
@Nicola Pontillo devi dichiarare le costanti(variabili con valore fisso)sotto #include #define R 20 //(R è il nome-20 il valore) #define C 20 //(C è il nome-20 è il valore) e nelle due fscanf manca la prima virgola fscanf(p,"%d",&r); fscanf(p,"%d",&c);
niente , ho risolto tutto , il programma parte... solo che l'altra volta mi si bloccava e andava adesso una volta aperto il file non mi visualizza il contenuto... mi dice di premere un tasto per continuare... ci rinuncio
bravissimo...algoritmo semplice e chiaro .meglio del mio professore di fondamenti. complimenti
io non ho capito la fscanf nella funzione lettura che assegna dei valori a r e c... che valori gli assegna? perchè non hai fatto nessun ciclo ne niente quindi non capisco che valore venga caricato all interno di queste variabili... spero mi riesca a rispondere, grazie in anticipo
Ti ringrazio mi sei stato molto utile. Distinti saluti
Grazie mille, i tuoi video sono molto utili. Ne hai fatto anche uno in cui parli del passaggio di matrici alle funzionie alla differenza tra ad esempio m[3][3] e **m?
perchè nelle void lettura, nella matrice, metti solo le colonne?
Perché non hai bisogno di dargli anche la prima dimensione, essendo il nome (l'identificativo) della matrice un puntatore al primo elemento della matrice [e quindi la prima dimensione il compilatore se la può ricavare da solo].
grazie mille ;)
Scusa la domanda. Se io non conoscessi il numero di righe e colonne della matrice, come posso modificare il programma affinché mi fornisca queste due infos?
ciao, ho creato il programma, l'ho controllato e non mi da errori, però quando inserisco il file da aprire, mi spunta questa finestre:
"lettura matrice da file di tipo void.exe
SI è VERIFICATO UN ERRORE IN LETTURA DA FILE DI TIPO VOID.EXE. L'APPLICAZIONE VERRà CHIUSA.
potrebbe essersi verificata la perdità dei dati su cui si stava lavorando.
segnalazione del problema a Microsoft.... ecc"
questo problema mi è capitato anche con il programma della lezione precedente (14°), sapresti dirmi qual'è il problema? grazie :)
Un errore a tempo di esecuzione
"corrupted size vs. prev_size
Aborted (core dumped)"
Che tipo di problema c'è? Il problema c'è solo quando la fclose non è commentata...
ciao a me da un errore sulla riga del void ,cosa c'e scritto alla fine del void iniziale?? non si vede......e' oscurato lo schermo....dopo int *colonne? ...e devo mettere il ; per chiudere?
ciao non capisco come sia possibile che il programma ti funzioni senza che tu abbia messo nel for i
Perchè i primi due numeri li hai già letti e inseriti in altre variabili. I numeri invece li inserisci nella matrice!
perchè nel "preview" del metodo righe e colonne vanno passate con l' * mentre quando richiamo il metodo vero e proprio devo passargliele con la &?
L'operatore & passa l'indirizzo in memoria della variabile, l'operatore * preleva il valore. Rivediti bene i puntatori :)
perchè sul mio pc con window 7 mi dice file non compilato?
bro a me dà segmentation fault e credo sia per i due puntatori *righe e *colonne posti uguale a r e c
secondo me tu usi ubuntu e perciò quando mi sn trovato a riscrivere il tuo testo "su win 7" mi ha dato errore perchè il sistema operativo è diverso...mi sai dire che differenza c'è
Ciao, puoi pubblicare il codice? Grz
Domanda stupida: Perchè non mettiamo la & prima di "file" quando facciamo la scanf nel main?
puveggioso una stringa è già un puntatore, a differenza, ad esempio di un vettore di interi, quindi mettendo la & andremmo a creare un puntatore di puntatore
e' esatto scriverlo cosi'?
void lettura(char file[],int matrice[][C],int *righe, int*colonne);
perche' mi da un errore su questa riga??
al inizio mi da l'errore , subito prima del main... non sotto...
secondo me tu usi ubunto mentre io win 7 mi sai dire che differenza ce nel testo
Perchè il vettore in realtà è un puntatore (se vai ai prossimi tutorial capirai). Non ho bisogno di dargli il numero di righe perchè se dichiaro un array a, a è il puntatore al primo elemento del vettore. Quindi ho bisogno di passargli soltanto il numero di colonne per fargli capire quando deve saltare alla prossima riga. Spero sia chiaro xD
Dipende da cosa devi fare. Il passaggio per valore spreca più memoria e passa una copia della variabile. Il passaggio per riferimento spreca meno memoria, passa l'indirizzo di memoria della variabile. In C di solito si utilizza sempre il passaggio per riferimento.
Ok, quindi non ci sono problemi?
so che 8 anni fa è un po' tardi ma ti volevo chiedere di poter far vedere come salvi il file nella cartella perché io quando lo inserisco il programma non lo legge. Anch'io ho Codeblocks
Perchè mai dovresti passarle per valore ? o.O
ho fatto quasi lo stesso programma cambiando solo il nome del puntatore ma mi porta diversi errori potresti controllare per favore.
#include
#include
void lettura( char file [],int matrice[][c],int*righe,int*colonne);
int c;
int main()
{
int matrice[R][C];
int righe,colonne,i,j;
char file[20];
scanf("%s",file);
lettura(file, matrice,&righe,&colonne);
for(i=0;i
@Nicola Pontillo
devi dichiarare le costanti(variabili con valore fisso)sotto #include
#define R 20 //(R è il nome-20 il valore)
#define C 20 //(C è il nome-20 è il valore)
e nelle due fscanf manca la prima virgola
fscanf(p,"%d",&r);
fscanf(p,"%d",&c);
Se non mi fai vedere il codice, non ti so dire. Controlla bene se hai messo tutto. Comunque io lavoro su windows.
niente , ho risolto tutto , il programma parte... solo che l'altra volta mi si bloccava e andava adesso una volta aperto il file non mi visualizza il contenuto... mi dice di premere un tasto per continuare... ci rinuncio
Deve esserci un errore, evidentemente..
Risolto
scusa il commento era riferito al video precedente