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

    Problema core dumped in c

    Salve a tutti.Ho un problema con un programma.Questo è scritto sintatticamente in forma corretta solo che quando eseguo il debug mi esce questo errore "Segmentation fault(core dumped)".Non so che problema sia e come risolverlo.Premetto che questo programma deve poter dividere in modo RICORSIVO una matrice in 4 parti e mettere il carattere 'D' su ogni diagonale delle 4 parti della matrice prese in considerazione.Inoltre in alto a destra di ogni parte ci deve essere il carattere 'A'.Spero che mi possiate aiutare.Grazie in anticipo!!!!


    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #define N 32
    int x=0,y=0;
    void stampa(char mat[][N]);
    void inizializza(char mat[][N]);
    void funz(char mat[][N],int z,int t);
    
    int main()
    {
        char mat[N][N];
    
          inizializza(mat);
          
    funz(mat,0,0);
    funz(mat,0,16);
    
        return 0;
    }
    
    void stampa(char mat[][N]){
    
       int i,j;
        for(i=0;i<N;i++){
          for(j=0;j<N;j++){
             printf("%c|",mat[i][j]);
          }printf("\n");
        }printf("\n");
    }
    
    void funz(char mat[][N],int z,int t){
    
        x=z;
         y=t;
          int i=0,cont;
         mat[x][y+15]='A';
          for(;i<16;x++,y++,i++){
              mat[x][y]='D';
          }
           cont++;
             if(cont==2){
                stampa(mat); }
              else{
               return(funz(mat,z+16,t),cont++);
               }
    }
    
    void inizializza(char mat[][N]){
    
           int i,j;
            for(i=0;i<N;i++)
             for(j=0;j<N;j++)
             mat[i][j]='X';
    
             stampa(mat);
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sicuro che compila?

    In questa linea

    return(funz(mat,z+16,t),cont++);

    che vuoi fare?

    La funz non restituisce alcun valore (è void !) e poi inserisci nella return due elementi separati da virgola ...

    Insomma, non posso eseguire questo codice ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    in pratica vorrei ritornare la funzione,dato che deve essere ricorsiva(così quando la funzione viene ritornata,mi considera x+16....cioè parte dal blocco sottostante) e quando ritorna la funzione deve anche aggiungermi +1 a cont in modo tale che dopo avermi considerato 2 blocchi me li stampi.Comunque anche se la imposto come int lo stesso mi da errore

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.