Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    32

    [C] Problema durante esecuzione programma

    Salve ho un problema... sto scrivendo un programma sui file di testo che in pratica data una matrice letta in input da file.txt ci stampi a video il valore massimo della matrice e su un file di output la matrice stessa...il programma viene compilato bene ma perchè all'atto della sua esecuzione crasha??? Questo è il mio codice e grazie per le risposte che riceverò
    codice:
    const int max_dim=100;
    typedef int vettore [max_dim];
    typedef vettore matrice[max_dim];
    
    void leggi_mat(matrice, int &, int &, const char*);
    int ricerca_max(matrice, int, int, vettore);
    void stampa(matrice, int, int, const char*);
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include "lib.h"
    
    int main()
    {
        int riga, colo;
        matrice mat;
        int massimo;
        vettore v;
        
        leggi_mat(mat, riga, colo, "input.txt");
        massimo = ricerca_max(mat,riga,colo, v);
        printf("il massimo valore della matrice e' /n/n");
        printf("%d", massimo);
        
        stampa(mat, riga, colo, "output.txt");
        
    system("PAUSE");
    return 0;
    
    }
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include "lib.h"
    
    void leggi_mat(matrice mat, int &riga, int &colo, const char *nomefile)
    {
         int i,j;
         FILE* fp=fopen(nomefile, "r");
         
         if(!fp)
         {
                printf("file non trovato impossibile continuare /n/n");
                system("PAUSE");
                exit(1);
         }
         
    fscanf(fp, "%d", riga);
    fscanf(fp, "%d", colo);
    
    for(i=0;i<riga;i++)
                       for(j=0;j<colo;j++)
                                          fprintf(fp, "%d", mat[i][j]);
                                          
    }
    
    
    int ricerca_max (matrice mat, int riga, int colo, vettore v)
    {
    int i,j;
    int posmax;
    int massimo;
    
    for(i=0;i<riga;i++)
    {
    posmax=mat[i][0];                   
                       for(j=1;j<colo;j++)
                       {
                                          if(mat[i][j]>posmax)
                                          {
                                          posmax=mat[i][j];
                                          v[i]=mat[i][j];
                                          }
                                          
                       }
                       
    }
    
    massimo=v[0];
    for(i=0;i<colo;i++)
                       {
                                          if(v[i]>massimo)
                                          massimo=v[i];
                                          
                       }
                       
    
    return massimo;
    }
    
    
    void stampa(matrice m, int riga, int colo, const char *nomefile)
    {
         int i,j;
         FILE* fp=fopen(nomefile, "w");
         
         if(!fp)
         {
                printf("file non trovato impossibile continuare /n/n");
                system("PAUSE");
                exit(1);
         }
         
    for(i=0;i<riga;i++)
                       for(j=0;j<colo;j++)
                                          fprintf(fp, "%d", m[i][j]);
                                          
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153
    int riga, colo;
    matrice mat;
    int massimo;
    vettore v;

    leggi_mat(mat, riga, colo, "input.txt");
    intanto potresti mettere qualche cout da qualche parte per vedere anche te dov'è l'errore!!!!

    e cmq non vorrei dire una stupidata ma mat,rica,colo non sono inizializzati quindi dovrebbe essere questo il problema!
    cogli l'attimo

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    32
    no ho inizializzato ma niente da fare...sto perdendo la testa da un pò a capire U_U

  4. #4

    Re: [C] Problema durante esecuzione programma

    Originariamente inviato da ciro_90

    codice:
    void leggi_mat(matrice mat, int &riga, int &colo, const char *nomefile)
    In C questo codice NON è compilabile, a meno di strambe direttive di compilazione, (perché in C non ci sono i riferimenti).

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    32
    io ho fatto un altro programma sempre in c e con i file e ho passato una variabile per riferimento viene eseguito a meraviglia O__O

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    32
    anche eliminando i riferimenti il file eseguibile crasha uffà non so più che pesci pigliare

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Originariamente inviato da ciro_90
    io ho fatto un altro programma sempre in c e con i file e ho passato una variabile per riferimento viene eseguito a meraviglia O__O
    In C non esiste il concetto di riferimento. Quindi, senza saperlo, lo hai compilato come se fosse C++.

    Comunque, se inserisci delle

    cout

    oppure delle

    printf

    nel codice, puoi vedere in quale riga o funzione hai il crash ...

    Questo fatto facilitirebbe la ricerca del problema invece di costringere chi ti risponde a dovere copiare tutto il codice e compilarlo ... anche nel tuo interesse.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153

    Re: [C] Problema durante esecuzione programma

    Originariamente inviato da ciro_90
    printf("il massimo valore della matrice e' /n/n");
    guarda che per andare a capo la sbarra della n deve essere nel verso opposto...'\n' e non '/n'


    e cmq il problema sembra sia dato da:

    Codice PHP:
    fscanf(fp"%d"riga); fscanf(fp"%d"colo); 
    cogli l'attimo

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Sicuramente, nella fscanf, la variabile non si usa così ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    32
    Ho risolto tutti i problemi ora funziona alla grande e ho fatto come dite voi che invece di scervellarmi metto delle printf per vedere i dati come vengono modificati...beh ho ancora da imparare...questo è il nuovo codice funzionante:
    codice:
    const int max_dim=100;
    typedef int vettore [max_dim];
    typedef vettore matrice[max_dim];
    
    void leggi_mat(matrice, int &, int &, const char*);
    int ricerca_max(matrice, int, int, vettore);
    void stampa(matrice, int, int, const char*);
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include "lib.h"
    
    int main()
    {
        int riga=0, colo=0;
        matrice mat;
        vettore v;
        int mass;
        
        leggi_mat(mat, riga, colo, "input.txt");
         mass = ricerca_max(mat,riga,colo, v);
         printf("il valore massimo e' %d \n\n", mass); 
         stampa(mat, riga, colo, "output.txt");
        
    system("PAUSE");
    return 0;
    
    }
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include "lib.h"
    
    void leggi_mat(matrice mat, int &riga, int &colo, const char *nomefile)
    {
         int i,j;
         FILE* fp=fopen(nomefile, "r");
         
         if(!fp)
         {
                printf("file non trovato impossibile continuare \n\n");
                system("PAUSE");
                exit(1);
         }
         
    fscanf(fp, "%d", &riga);
    fscanf(fp, "%d", &colo);
    printf("valore di riga %d \n" ,riga);
    printf("valore di colonna %d \n" ,colo);
    
    for(i=0;i<riga;i++)
    {
                       for(j=0;j<colo;j++)
                       {
                                          fscanf(fp, "%d", &mat[i][j]);
                                          printf("valori matrice %d \n\n", mat[i][j]);
     
                       } 
                                         
    }
    }
    
    int ricerca_max (matrice mat, int riga, int colo, vettore v)
    {
    int i,j;
    int max_mat;
    int mass=-100;
    printf("valore massimo %d \n", mass);
    
    
    for(i=0;i<riga;i++)
    {
    max_mat=mat[i][0];
    printf("valore del massimo %d\n\n", max_mat); 
    
                     
                       for(j=1;j<colo;j++)
                       {
                                          
                                          if(mat[i][j]>max_mat)
                                          {
                                          max_mat=mat[i][j];
                                          printf("valore massimale %d \n\n",max_mat);
                                          v[i]=mat[i][j];
                                          printf("valore massimo inserito nel vettore %d \n\n", v[i]);
                                          
                                          
                                          }
                                          
                       }
                       
    }
    
    mass=v[0];
    printf("il massimo valore e' %d \n\n" ,mass);
    for(i=0;i<colo;i++)
                       {
                                          if(v[i]>mass)
                                          mass=v[i];
                                          
                       }
                       
    return mass;
    
    }
    
    
    void stampa(matrice m, int riga, int colo, const char *nomefile)
    {
         int i,j;
         FILE* fp=fopen(nomefile, "w");
         
         if(!fp)
         {
                printf("file non trovato impossibile continuare \n\n");
                system("PAUSE");
                exit(1);
         }
         
    for(i=0;i<riga;i++)
                       for(j=0;j<colo;j++)
                                          fprintf(fp, "valori della matrice %d \n\n", m[i][j]);
    Ciau e grazie per l'aiuto che mi avete dato

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