Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    56

    C Studio con HTML

    Studio leggendo e compilando codici da questo ottimo forum.
    Questo programma che dovrebbe essere corretto e funzionante >>>
    http://forum.html.it/forum/showthrea...hlight=matrice

    a me da >>>
    ../vedere.c:48: error: conflicting types for ‘Alloca’
    ../vedere.c:12: error: previous declaration of ‘Alloca’ was here
    ../vedere.c: In function ‘Alloca’:
    ../vedere.c:50: warning: incompatible implicit declaration of built-in function ‘calloc’


    PS >> per comodità metto il codice in questione >>




    codice:
      
    
        #include <stdio.h>
    #include <time.h>
    #include <math.h>
    
    typedef struct {
            int **m;
            int r;
            int c;
            } mat;
    
    
    void Alloca(mat);
    
    
    main () {
         int i,j;
         mat M;
         M.r=5;
         M.c=6;
         Alloca(M);
         srand(time(NULL));
         for (i=0,j=0;i<M.r;j++) {
             if (j==M.c) {
                           j=0;
                           i++;
                           }
             M.m[i][j]= rand()%20;
    
    
                           }
    
         for (i=0,j=0;i<M.r;j++) {
             if (j==M.c) {
                           j=0;
                           i++;
                           printf("\n");
                           }
    
             printf("%d\t", M.m[i][j]);
    
    
                           }
    
    
    
         }
    
    
    
    .. void Alloca (mat *M) {
         int i;
         (*M).m=(int**)calloc((*M).r,sizeof(int*));
    
         for (i=0;i<(*M).r;i++)
             (*M).m[i]=(int*)calloc((*M).c,sizeof(int));
    
             return;
             }

  2. #2

    Re: C Studio con HTML

    Originariamente inviato da roldo
    codice:
      
    void Alloca(mat);
    .. void Alloca (mat *M) {
    Sono diverse...

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,468
    Per il warning probabilmente risolvi aggiungendo la

    #include <stdlib.h>

    Per l'errore, la funzione Alloca dovrebbe accettare la matrice per indirizzo. La chiamata dovrebbe essere

    Alloca(&M);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    56

    Re: Re: C Studio con HTML

    Originariamente inviato da ESSE-EFFE
    Sono diverse...

    cioè la funzione è diversa dalla dichiarazione Alloca ....questo è per la correzione suggerita e accettata
    come soluzione dall 'autore....
    Ma se si usa il programma originale , da solo un warning in compilazione ma "segmentation fault in esecuzione....quindi la correzione giusta per quel programma quale sarebbe ?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,468

    Re: Re: Re: C Studio con HTML

    Originariamente inviato da roldo
    cioè la funzione è diversa dalla dichiarazione Alloca ....questo è per la correzione suggerita e accettata
    come soluzione dall 'autore....
    E quindi mi sembra chiaro ...

    Ma se si usa il programma originale , da solo un warning in compilazione ma "segmentation fault in esecuzione....quindi la correzione giusta per quel programma quale sarebbe ?
    Scusa ... allora che si è detto?

    La funzione Alloca deve avere il parametro passato per indirizzo e quindi devi modificare di conseguenza il main.

    In più devi rivedere il main dopo la chiamata ad Alloca perché c'è qualche problema con gli indici dei cicli.

    Ti faccio notare che una versione completa e funzionante del codice non è stata mai proposta ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    56
    Originariamente inviato da oregon
    Per il warning probabilmente risolvi aggiungendo la

    #include <stdlib.h>

    Per l'errore, la funzione Alloca dovrebbe accettare la matrice per indirizzo. La chiamata dovrebbe essere

    Alloca(&M);

    Non gli piace .....
    ../vedere.c: In function ‘main’:
    ../vedere.c:22: error: incompatible type for argument 1 of ‘Alloca’

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,468
    Originariamente inviato da roldo
    Non gli piace .....
    Che vuol dire "non gli piace"?

    Scusa ... ma questo modo di programmare non ha molto senso ...

    Questo

    void Alloca(mat);

    l'hai corretto?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    56
    Originariamente inviato da oregon
    Che vuol dire "non gli piace"?

    Scusa ... ma questo modo di programmare non ha molto senso ...

    Questo

    void Alloca(mat);

    l'hai corretto?
    Più che programmare cerco di capire da programmi già fatti...

    Ho fatto tutte le combinazioni possibili per l 'allocazione e quella che non da errori è quella
    sotto...che però da "segmentation fault" in esecuzione . Pazienza.

    codice:
           
    
    
        #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    #include <math.h>
    
    typedef struct {
            int **m;
            int r;
            int c;
            } mat;
    
    
    void  Alloca(mat M);
    
    
    main () {
         int i,j;
         mat M;
         M.r=5;
         M.c=6;
         Alloca( M);
         srand(time(NULL));
         for (i=0,j=0;i<M.r;j++) {
             if (j==M.c) {
                           j=0;
                           i++;
                           }
             M.m[i][j]= rand()%20;
    
    
                           }
    
         for (i=0,j=0;i<M.r;j++) {
             if (j==M.c) {
                           j=0;
                           i++;
                           printf("\n");
                           }
    
             printf("%d\t", M.m[i][j]);
    
    
                           }
    
    
    
         }
    
    
    
    
    
     void Alloca (mat M) {
         int i;
         M.m=(int**)calloc(M.r,sizeof(int*));
    
         for (i=0;i<M.r;i++)
             M.m[i]=(int*)calloc(M.c,sizeof(int));
    
             return;
             }

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,468
    Scusami, ma allora tutto quanto detto prima non è servito a nulla?

    Avevi scritto nel primo post

    void Alloca (mat *M)
    poi ti avevo detto che dovevi chiamarla così

    Alloca(&M);
    e anche

    Questo

    void Alloca(mat);

    l'hai corretto?
    E ora torni al primo post?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Originariamente inviato da roldo
    Più che programmare cerco di capire da programmi già fatti...

    Ho fatto tutte le combinazioni possibili per l 'allocazione e quella che non da errori è quella
    sotto...che però da "segmentation fault" in esecuzione . Pazienza.
    E perchè non provi a farli te? Secondo me fai molto prima.

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.