Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C] Matrice di interi con doppio puntatore

    Sto muovendo i primi passi nell'uso avanzato (per me ) dei puntatori. Sto cercando di creare un programma che prenda in input una matrice e la stampi. Ecco il codice:

    codice:
    #include <malloc.h>
    #include <stdio.h>
    int** leggi(int,int);
    void stampa(int**,int,int);
    int main(){
    	int a,b;
    	int *(*matrix);
    	printf("Dammi il numero di righe: ");
    	scanf("%d",&a);
    	printf("Dammi il numero di colonne: ");
    	scanf("%d",&b);
    	matrix=leggi(a,b);
    	printf("\n");
    	stampa(matrix,a,b);
    	return 0;
    	}
    int** leggi(int a,int b){
    	int **matrix;
    	int i,j;
    	// come allocare la matrice?
    	for(i=0;i<a;i++){
    		for(j=0;j<b;j++){
    			printf("Dammi la posizione %d %d: ",i,j);
    			scanf("%d",&matrix[i][j]);
    			}
    		}
    	return matrix;
    	}
    void stampa(int** matrix,int a,int b){
    	int i,j;
    	for(i=0;i<a;i++){
    		for(j=0;j<b;j++){
    			printf("%d	",matrix[i][j]);
    			}
    		printf("\n");
    		}
    	}
    Non so come usare il comando malloc per allocare la matrice. Potreste illuminarmi?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Se ho capito bene, nel mio codice matrix punta all'array di puntatori che a loro volta puntano alle singole righe della matrice. E' giusto? Come devo fare per completare il mio programma?
    Grazie per l'aiuto.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da Matths87
    Come devo fare per completare il mio programma?
    Utilizza quel codice nella discussione che ti ho suggerito per allocare la matrice ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Scusa, ma continuo a non capire. Non dovrei usare il comando malloc? La nostra professoressa ci ha suggerito di procedere in quel modo.

  6. #6
    Ho risolto in questo modo:

    codice:
    #include <malloc.h>
    #include <stdio.h>
    int** leggi(int,int);
    void stampa(int**,int,int);
    int main(){
    	int a,b;
    	int *(*matrix);
    	printf("Dammi il numero di righe: ");
    	scanf("%d",&a);
    	printf("Dammi il numero di colonne: ");
    	scanf("%d",&b);
    	matrix=leggi(a,b);
    	printf("\n");
    	stampa(matrix,a,b);
    	return 0;
    	}
    int** leggi(int a,int b){
    	int **matrix;
    	int i,j;
    	matrix=(int**)malloc(a*sizeof(int*));
    	for(i=0;i<a;i++){
    		matrix[i]=(int*)malloc(b*sizeof(int));
    		}
    	for(i=0;i<a;i++){
    		for(j=0;j<b;j++){
    			printf("Dammi la posizione %d %d: ",i,j);
    			scanf("%d",&matrix[i][j]);
    			}
    		}
    	return matrix;
    	}
    void stampa(int** matrix,int a,int b){
    	int i,j;
    	for(i=0;i<a;i++){
    		for(j=0;j<b;j++){
    			printf("%d	",matrix[i][j]);
    			}
    		printf("\n");
    		}
    	}
    Grazie per il prezioso aiuto.

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.