Torna indietro   Hardware Upgrade Forum > Software > Programmazione

CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale
La prima tappa italiana della Road to CES porta a Milano i vertici della Consumer Technology Association, con una nuova griglia di lettura dei trend tecnologici e una posizione netta su dazi e regolamentazione dell'IA
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
OPPO ha appena lanciato sul mercato la nuova serie Find X10, che ha come smartphone premium il Find X10 Pro Max, uno smartphone completo, che fa del comparto fotografico il suo vero punto di forza. Ma sono tante le novità, tra cui l'AI che adesso diventa agentica. Ma andiamo a vedere nel dettaglio questo nuovo smartphone.
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato
Abbiamo provato la beta di World of Warcraft: Forever, il Classic+ di Blizzard in arrivo il 4 novembre: la nuova razza Skyborne restituisce la sensazione di un gioco nuovo, ma le zone storiche conservano la noia divertita di Classic. Classi ribilanciate, sciamani anche nell'Alleanza e un motore grafico che in 4K gira bene anche su una RTX 3070. Cosa cambia in Forever? La risposta nell'articolo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-01-2010, 09:19   #1
B-jo
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 1345
[C]Ordinare una matrice

Salve a tutti,
Stavo provando una serie di algoritmi inerenti alle matrici e non sono riuscito a ordinare una matrice....o meglio un giorno mi funziona e il giorno dopo vado a riscriverla e non mi funziona più nonostante me la compili mi ordina solo le righe


di seguito vi riporto il codice:
il main
Spoiler:
Codice:
#include "header.h"


int main (){
    
    matrice mat;
    int select=0;
    int rig=0;
    int col=0;
    
   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
Spoiler:
Codice:
#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]);
                                           }
                        }
     
  
  
     }


e l'header

Spoiler:
Codice:
#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);



vi ringrazio in anticipo
un saluto a tutti
B-jo è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2010, 12:23   #2
B-jo
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 1345
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.... :dhò:
B-jo è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2010, 16:46   #3
B-jo
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 1345
up
B-jo è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2010, 19:48   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Prima di tutto:

scanf("%s", &mat[i][j]);

mat[i][j] è un char [MAX], quindi non bisogna usare la '&' per leggere con scanf.
Prova così.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2010, 22:30   #5
B-jo
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 1345
ho provato ma nulla da fare....grazie cmq per la dritta è un errore pesantuccio quello che ho fatto...
B-jo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato WoW Forever provato: il MMORPG che la community ...
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita TCL P80 Ultra: con un display AMOLED opaco &egra...
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio HUAWEI MatePad Air recensione: OLED opaco e tast...
Niente più faccende domestiche e piatti ...
Proiettore WiMiUS G2 in offerta su Amazo...
Terre rare e semiconduttori: TSMC valuta...
Cani potenziati con l'ingegneria genetic...
Spento Arc Browser: The Browser Company ...
Ferrari Luce costa 560.800 dollari negli...
Sony annuncia le nuove cuffie wireless P...
1Password for Agents: l'agente AI entra ...
Huang: niente surplus di memoria prima d...
L'IA di Microsoft centra l'83% delle dia...
Oral-B iO in offerta su Amazon: spazzoli...
Samsung porta i Galaxy ricondizionati su...
RTX 5090 rubate all'aeroporto di San Pao...
Urlife sfida tutti nelle e-bike: 560€ qu...
Claude ha trovato 493 problemi di superf...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 09:23.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v