Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    14

    [C] allocazione matrice dinamica

    Ciao,
    ho provato a fare questa matrice allocata dinamicamente ma nn capisco dove sia l'errore!

    Forse è meglio se la rifaccio senza char? Quante funzioni mi conviene usare??

    Scusate l'ignoranza....grazie in anticipo a tutti!!

    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.c>

    /* dichiarazione dei prototipi di funzione */

    int leggi_numero(char*);
    void inserisci(char*,int**,int,int);
    void visualizza(char*,int**,int,int,int);

    /* programma principale */

    void main (void)

    {

    int righe,colonne;
    int **mat; /* puntatore a puntatore */
    int i;

    righe = leggi_numero ("Inserisci il numero delle righe della matrice...");
    colonne = leggi_numero ("Inserisci il numero delle colonne della matrice...");
    mat = (int**)malloc(righe*sizeof(int*));

    for (i=0;i<righe;i++)
    mat[i] = (int *)malloc(colonne*sizeof(int));

    inserisci("Hai inserito la matrice:\n",mat,righe,colonne);
    visualizza("Hai inserito la matrice:\n",mat,righe,colonne);

    getch();

    }

    /* definizione delle funzioni */

    int leggi_numero(char*s)

    {

    int num;

    printf ("%s", s);
    scanf ("%d", &num);
    clrscr();

    return (num);

    }

    void inserisci (char*s,int**x,int rig,int col)

    {

    int i,j;
    printf("%s Numero_righe: %d Numero_colonne: %d", s,rig,col);

    for (i=0;i<rig;i++)
    for (j=0;j<col;j++)

    scanf ("%d", &x[i][j]);
    clrscr();

    }

    void visualizza (char*s, int**x,int rig,int col)

    {

    int i,j;
    printf("%s", s);

    for (i=0;i<rig;i++)
    for (j=0;j<col;j++)

    printf("%d", x[i][j]);

    }

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Che problema hai?

    A me funziona.

    Che compilatore usi?

    per stampare la matrice:

    codice:
    void visualizza (char*s, int**x,int rig,int col) 
    { 
    
        int i,j;
        printf("\n\n%s", s); 
    
        for (i=0;i<rig;i++){
            for (j=0;j<col;j++) 
                    printf("%d  ", x[i][j]);
            printf("\n");
        }
        printf("\n");
    }
    Per la prossima volta indenta il codice con il ta CODE


    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    14
    Uso il dev

    Alla riga 29 dice too few arguments to function visualizza
    alla riga 69 conflicting types for visualizza
    alla riga 9 previous declaration of visualizza

    Grazie

  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    non devi agiunere la mia versione di visualizza, ma la devi eventualmente sostituire alla tua. Questo e il mio codice compilante:

    #include <stdlib.h>
    #include <stdio.h>
    //#include <conio.c>

    /* dichiarazione dei prototipi di funzione */

    int leggi_numero(char*);
    void inserisci(char*,int**,int,int);
    void visualizza(char*,int**,int,int);

    /* programma principale */

    int main (void)

    {

    int righe,colonne;
    int **mat; /* puntatore a puntatore */
    int i;

    righe = leggi_numero ("Inserisci il numero delle righe della matrice...");
    colonne = leggi_numero ("Inserisci il numero delle colonne della matrice...");
    mat = (int**)malloc(righe*sizeof(int*));

    for (i=0;i<righe;i++)
    mat[i] = (int *)malloc(colonne*sizeof(int));

    inserisci("Hai inserito la matrice:\n",mat,righe,colonne);
    visualizza("Hai inserito la matrice:\n",mat,righe,colonne);

    system("pause");

    }

    /* definizione delle funzioni */

    int leggi_numero(char*s)

    {

    int num;

    printf ("%s", s);
    scanf ("%d", &num);


    return (num);

    }

    void inserisci (char*s,int**x,int rig,int col)

    {

    int i,j;
    printf("%s Numero_righe: %d Numero_colonne: %d", s,rig,col);

    for (i=0;i<rig;i++)
    for (j=0;j<col;j++)

    scanf ("%d", &x[i][j]);

    }

    void visualizza (char*s, int**x,int rig,int col)
    {

    int i,j;
    printf("\n\n%s", s);

    for (i=0;i<rig;i++){
    for (j=0;j<col;j++)
    printf("%d ", x[i][j]);
    printf("\n");
    }
    printf("\n");
    }

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    14
    Grazie!!

    Ma se volessi inserire dei dati nella matrice come devo fare?

  6. #6
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Ma il tuo programma già li inserisce... :master:

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    14
    Strano....a me chiede solo di inserire il numero di righe e colonne e poi mi dice:

    Hai inserito la matrice....righe....colonne

    A te fa inserire anche i dati??

  8. #8
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Certo che mi fa inserire i dati. Prova magari anche a stampare una ria tipo:

    inserisci gli elementi della matrice prima di iniziare l'inserimento. probabilmente sei tu che chiudi il programma mentre questo è in attesa di ricevere l'input dall'utente.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    14
    Ok....proverò!!!

    Potresti farmi un altro favore?? Ho fatto questo programma che dovrebbe memorizzare in un vettore la somma delle righe di una matrice....
    il programma funziona ma nn fa quello che dovrebbe fare!!! Credo che nn sia scritta giusta la parte sulla funzione somma_righe, ma nn so come fare....potresti darmi un consiglio??


    Grazie!!!

    /*programma che crea un vettore con la somma delle righe di una matrice */


    #include <conio.c>
    #include <stdlib.h>
    #include <stdio.h>

    const int rig = 2; /* dichiaro le costanti righe e colonne*/
    const int col = 2;

    void leggi_matrice(int m[rig][col]); /* prototipi di funzioni*/
    void stampa_matrice(int m[rig][col]);
    void stampa_vettore(int v[], int dim);
    void somma_righe(int m[rig][col], int vetMaxrig[]);




    void leggi_matrice(int m[rig][col])

    {

    int i,j;
    printf("Inserire i dati nella matrice %dx%d\n\n",rig, col);
    for (i = 0; i < rig; i++)
    for (j = 0; j < col; j++)
    scanf("%d", &m[i][j]);

    }

    void stampa_matrice(int m[rig][col])

    {

    int i, j;

    for (i = 0; i < rig; i++)
    {
    for (j = 0; j < col; j++)
    printf("%5d", m[i][j]);
    printf("\n\n");
    }
    }

    void stampa_vettore(int v[], int dim)

    {

    int i;
    printf("Indice Elemento\n");
    for (i = 0; i < rig; i++)
    printf("%6d %8d\n", i, v[i]);

    }

    void somma_righe(int m[rig][col], int vetMaxrig[])

    /*crea il vettore somma delle righe*/

    {

    int i,j;
    for (i = 0; i < rig; i++)
    vetMaxrig[i] = 0;
    for (j = 1; j < col; j++)
    vetMaxrig += m[i][j];


    }

    int main(void) /*corpo principale funz. main*/

    {

    int mat[rig][col];
    int vetRighe [rig];

    leggi_matrice (mat);
    printf("La matrice che hai inserito...\n\n");
    stampa_matrice (mat);
    somma_righe (mat, vetRighe);
    printf ("Vettore della somma delle righe...\n");
    stampa_vettore (vetRighe, rig);
    system ("PAUSE");
    return 0;


    }

  10. #10
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    codice:
    void somma_righe(int m[rig][col], int vetMaxrig[]) 
    
    /*crea il vettore somma delle righe*/ { 
    
    	int i,j; 
    	for (i = 0; i < col; i++){ 
    		for (j = 0; j < rig; j++) 
    			vetMaxrig[i] = 0;
    			vetMaxrig += m[i][j];
    	}
    }
    PS: Usa il tag CODE per indentare il codice

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

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 © 2025 vBulletin Solutions, Inc. All rights reserved.