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

    [C]Ordinamento di una Matrice

    Salve a tutti,
    A distanza di pochi minuti propongo un altro dilemma che mi impedisce di capire a fondo le matrici...

    di seguito vi riporto il codice che ho utilizzato che prima funzionava e poi non funziona piu...
    Il file è a progetto...

    codice:
    //main
    #include "header.h"
    
    
    int main (){
        
        matrice mat;
        int select=0;
        int rig=0;
        int col=0;
        
        printf("=== Benvenuti nel programma di gestione ==\n");
        printf("=== delle matrici==\n");
    do{
          printf("Premere:\n");
          printf("1 Per inserire la matrice da tastiera\n");
          printf("2 Per salvare la matrice su file da file\n");
          printf("3 Per ordinare la matrice\n");
          printf("4 Per caricare la matrice da file\n");
          printf("5 per stampare la matrice\n");
          printf("\nInserire la scelta: ");
          scanf("%d",&select);
          
          
          
          
          if(select==1){
          do{                
          printf("\nInserire il numero delle colonne desiderato (Max%d): ",DIM);
          scanf("%d",&col);
          printf("\nInserire il numero delle colonne desiderato (Max%d): ",DIM);
          scanf("%d",&rig);
          }while(col<=0 || col>DIM && rig<=0 || rig>DIM);     
          }           
       
       
        
        
        switch (select){
               case(1):
                       leggi_tastiera(mat,rig,col);
                       break;
                       case(2):
                               salva_matrice(mat,rig,col);
                               break;
                               case(3):
                                       ordina_matrice(mat,rig,col);
                                       stampa_matrice(mat,rig,col);
                                       break;
                                       case(4):
                                               rig=carica_matrice(mat);
                                               col=rig;
                                               break;
                                               case(5):
                                                       stampa_matrice(mat,rig,col);
                                                       break;
                                                       case(6):
                                                               inserisci_valore(mat,&rig,&col);
                                                               break;
                                                       
               
               
               
               }
        
        
     printf("\n\nPer continuare premere 1 altrimenti 0: ");   
     scanf("%d",&select);
     
        
    }while(select==1);
        
        system("PAUSE");
        return 0;
        }
    
    //Le funzioni
    
    #include "header.h"
    
    
        
    void leggi_tastiera(matrice mat,int col,int rig){
         register int i,j;
         
         for(i=0;i<rig;i++){
                            for(j=0;j<col;j++){
                                               printf("\nInserire la stringa nella posizione %d-%d: ",i,j);
                                               scanf("%s",&mat[i][j]);
                                               }
                            }
         
         
         }    
         
    void salva_matrice(matrice mat,int col,int rig){
         FILE*f1;
         register int i,j;
         
         f1 = fopen("matrice.txt","w");
         
         if(!f1){
                 printf("Errore apertura file");
                 }
                 
              for(i=0;i<rig;i++){
                                 for(j=0;j<col;j++){
                                                    fprintf(f1,"%s\n",mat[i][j]);
                                                    }
                                 }   
         
         fclose(f1);
         
         if(fclose(f1)){
                    printf("File salvato con successo");
                    }else{
                          printf("Errore nel salvataggio del file");
                          }
         } 
         
    //risolvere funzionamento!!!!!     
    void ordina_matrice(matrice mat,int col,int rig){
         register int i,j,z;
         
         stringa temp;
         
        for(z=0;z<col;z++){
                            for(i=0;i<rig;i++){
                                               
                                               for(j=0;j<col;j++){
                                               if(strlen(mat[i][j-1])>strlen(mat[i][j])){
                                                                                    strcpy(temp,mat[i][j-1]);
                                                                                    strcpy(mat[i][j-1],mat[i][j]);
                                                                                    strcpy(mat[i][j],temp);
                                                                                    }                   
                                                                  }
                                               }
                                               }
                                               
                                                            
                            
         }         
         
    int carica_matrice(matrice mat){
         printf("\nCarico una matrice 4X4\n");
         register int i,j;
         FILE* f1;
         
         f1 = fopen("matrice.txt","r");
         
         for(i=0;i<4;i++){
                          for(j=0;j<4;j++){
                                           fscanf(f1,"%s",&mat[i][j]);
                                           }
                          }
         if(feof(f1)){
                      printf("\nIl file e' stato caricato con successo\n");
                      }else{
                            printf("\nErrore caricamento file\n");
                            }
         fclose(f1);
         
         return 4;
         }
         
    void stampa_matrice(matrice mat,int rig,int col){
         printf("\nLa matrice attuale e':\n\n");
         register int i,j;
         for(i=0;i<rig;i++){
                            printf("\n");
                            for(j=0;j<col;j++){
                                               printf("%s ",mat[i][j]);
                                               }
                            }
         
      
      
         }     
    
    
    // l'header
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define DIM 10
    #define DIM1 10
    #define MAX 100
    
    
    typedef char stringa[MAX];
    typedef stringa matrice[DIM][DIM1];
    
    //int leggi_file(matrice mat,int *col,int *rig);
    
    void leggi_tastiera(matrice mat,int col,int rig);
    void salva_matrice(matrice mat,int col,int rig);
    void ordina_matrice(matrice mat,int col,int rig);
    int carica_matrice(matrice mat);
    void stampa_matrice(matrice mat,int rig,int col);
    int inserisci_valore(matrice mat,int *rig,int *col);

    Mi scuso per aver postato tutto questo codice ma penso che per dare un quadro completo bisogna passare tutto

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Se non racchiudi il codice tra tag CODE (pulsante # del forum), non si capisce nulla ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    11
    Originariamente inviato da oregon
    Se non racchiudi il codice tra tag CODE (pulsante # del forum), non si capisce nulla ...

    Scusami oggi tra studio e stanchezza sono un po distratto...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    11
    Vorrei aggiungere delle mie supposizioni che ho fatto:
    1.L'errore sta effettivamente nella funzione ordina_matrice e non me ne accorgo...
    2.Puo essere che il problema sia scaturito dal while che al termine di un ciclo mi stravolge la matrice(Anche se ho provato ad avviare le funzioni una dopo l'altra ma nulla da fare)
    3.Nel verificare qualche errore ho provato anche ad immettere la matrice da tastiera e non caricarla da file
    4.La cosa che mi da i nervi è che l'altro ieri avevo fatto un programmino di prova con questo algoritmo e funzionava....perchè adesso no?ho provato anche a copiare ed incollare il codice ma nulla....

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    11
    up

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.