Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [C] Creare una Matrice Dinamica...?

    Ciao a tutti...

    Come si fa' a creare una matrice dinamica...
    Cioe' avento il valore di Righe e Colonne
    creare la Matrice (su misura)...

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di pdpmpd
    Registrato dal
    Jan 2003
    Messaggi
    448
    con calloc:

    int n = 10; // numero di elementi
    int *futuro_array = calloc(n,sizeof(int));

    lo puoi usare per qualsiasi tipo (sostituisci il tipo nel sizof).
    calloc azzera la memoria allocata.
    Drug misuse is not a disease, it is a decision, like the decision to step out in front of a moving car. [...] In this particular life-style the motto is "be happy now because tomorrow you are dying", but the dying begins almost at once, and the happiness is a memory.

  3. #3
    ...Scusa ma non ho capito bene...

    Se io ho due variabili uno per le righe e una per le colonne
    come faccio a creare la matrice ?


    int righe;
    int colonne;

    scanf("%d", &righe);
    scanf("%d", &colonne);

    // Creazione Matrice ?

  4. #4
    Calloc e' simile a Malloc ?

  5. #5
    Utente di HTML.it L'avatar di pdpmpd
    Registrato dal
    Jan 2003
    Messaggi
    448
    per quanto riguarda gli array bidimensionali, fammici pensare un pò :master:
    la differenza fra calloc e malloc stà innanzitutto nel fatto che malloc NON azzera la memoria e calloc sì.
    calloc alloca un tot di elementi di una grandezza prefissata, malloc prende come argomento i bytes che deve allocare.

    puoi usare malloc anche per allocare array (se proprio devi...).
    Drug misuse is not a disease, it is a decision, like the decision to step out in front of a moving car. [...] In this particular life-style the motto is "be happy now because tomorrow you are dying", but the dying begins almost at once, and the happiness is a memory.

  6. #6
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Ad esempio:
    codice:
    int colonne,righe;
    //puntatore all'area di memoria
    double *dati;
    // Matrice 5x5
    colonne = 5;
    righe = 5;
    dati=calloc(colonne*righe,sizeof double);
    //Riempie di dati
    for(i=0;i<righe;i++)
    {
        for(j=0;j<colonne;j++);
        {
            dati[i*colonne + j] = i*j;
        }
    }
    // Re-alloca la memoria
    colonne = 17;
    righe = 30;
    dati=calloc(colonne*righe,sizeof double);
    //Aggiunge dati
    for(;i<righe;i++)
    {
        for(;j<colonne;j++);
        {
            dati[i*colonne + j] = i*j;
        }
    }
    Spero di nn aver sbagliato qualcosa...


  7. #7
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    Ti metto un codice che crea un array tridimensionale dinamico, tutto coi puntatori. Le dimensioni le prende dalla linea di comando quando viene lanciato il programma (in ogni caso sono m, n ed o).
    Lo avevo postato anche su un NG, guarda se ti puo essere utile.

    In linea generale un array di n dimensioni dinamico lo crei con n-1 cicli for annidati piu volendo uno interno col quale inizializzi gli elementi.

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    void main(int argc, char **argv){
    
    	int i, j, k, m, n, o, ***myArray;
    
    	//Verifico che il main() abbia ricevuto 3 parametri
    	if(!(argc == 4)){
    		fprintf(stdout, "Parametri insufficenti. Bye");
    		exit (0);
    		}
    
    	//Acquisisco i valori passati al main
    	m = atoi(*(argv+1));
    	n = atoi(*(argv+2));
    	o = atoi(*(argv+3));
    
    	//Creo la tabella tridimensionale
    	if(!(myArray = (int ***)malloc(m*sizeof(int **))))
    		abort();
    
    	for(i = 0; i < m; i++){
    		*(myArray+i) = (int **)malloc(n*sizeof(int *));
    		for(j = 0; j < n; j++){
    			*((*(myArray+i))+j) = (int *)malloc(o*sizeof(int));
    			for(k = 0; k < o; k++)
    				*((*((*(myArray+i))+j))+k) = rand()%100;
    			}
    		}
    }
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  8. #8
    Va bene questo per la matrice ?

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[]) {
      int i, j, k;
      int m=5, n=6;
      int **myArray;
    
    	//Creo la tabella tridimensionale
    	if(!(myArray = (int **)malloc(m*sizeof(int **)))) {
    		printf ("Non c'e' abbastanza memoria...\n");
       }
       
       // Inserimento manuale Numero
    	for(i = 0; i < m; i++){
    		*(myArray+i) = (int *)malloc(n*sizeof(int *));
          for(j = 0; j < n; j++){
             printf ("Numero : ");
             scanf("%d", &k);
             *((*(myArray+i))+j) = k;
    		}
    	}
       
       // Stampa Matrice
       for (i=0; i < m; i++) {
          for (j=0; j < n; j++) {
             printf ("%5d", myArray[i][j]);
          }
          printf ("\n");
       }
       
       free(myArray);
       
       system("PAUSE");	
       return 0;
    }

  9. #9

    Array Monodimensionale

    Come faccio a creare un Array Monodimensionale dinamicamente...

    L'Array viene creato in una Funzione e fin qui nessun problema...
    ma poi come faccio a fare il free dell'array in un altra funzione ?
    ( Ho usato il Malloc )

    Se avete soluzioni migliori dite pure...

  10. #10

    Matrice

    Come faccio avendo le variabili righe, colonne ad
    allocare subito tutta la matrice ?

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.