Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 21
  1. #11
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Forse non mi sono spiegato ... Io mi riferisco al codice del tuo ordinamento non dell'ultima versione di torn
    Ti sei spiegato benissimo, ma io sono un principiante.. Non so se rispondi cosi per farmi arrivare alla souzione da solo, o perché rispondi proprio cosi... Non ho capito...

    Facciamo così... Ti posto il codice, potresti gentilmente dirmi dove sta l'errore?
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    struct elemento{ 
    int valore; 
    struct elemento *next;
    };
    void menu();
    struct elemento *insElemento(struct elemento *); 
    struct elemento *ordLista(struct elemento *);
    void printElemento(struct elemento *);
    int main(){
     struct elemento *Lista=NULL ; 
     int comando; 
     do{
     menu(); 
     printf("\nComando:\t"); 
     scanf("%d", &comando); 
     
     switch(comando){  
     case 1:{   
     Lista=insElemento(Lista);   
     break;  
     }   
     case 2:{   
     Lista=ordLista(Lista);   
     break;  
     } 
     case 3:{
     printElemento(Lista);
     break;
     }
     } 
    }while(true);
    return 0; 
    }
    void menu(){ 
     printf("\n--------------------------"); 
     printf("\n1 - Inserisci Elemento\n"); 
     printf("2 - Ordinamento Lista\n"); 
     printf("3 - Visualizza Lista\n"); 
     printf("--------------------------\n");
    }
    //Inserimento elementi lista
    struct elemento *insElemento(struct elemento *list_head){    
    struct elemento *list_pointer, *list_record;    
    int i, n=0, val, newval; 
    printf("Specificare il numero di elementi della lista:  "); 
    scanf("%d", &n);    
    list_record = (struct elemento *)malloc(sizeof(struct elemento));    
    printf("\nInserisci il 1 elemento: ");    
    scanf("%d", &val); 
    list_record->valore = val; 
    list_head=list_record; 
    list_pointer = list_head; 
    for(i=2; i<=n; i++){          
     list_record->next = (struct elemento *)malloc(sizeof(struct elemento));          
     list_record = list_record->next;          
     printf("\nInserisci il %d elemento: ", i);          
     scanf("%d", &newval);          
     list_record->valore = newval;                 
    }        
    list_record->next = NULL;       
    list_pointer = list_head;
     
    printElemento(list_head);
    return (list_head);
    }  
    //Ordinamento Lista
    struct elemento *ordLista(struct elemento *list_head){
    struct elemento *list_pointer;
    int flag, temp; 
    flag=1;  
    while(flag ==1){ 
    flag=0;   
    list_pointer = list_head;        
    while(list_pointer->next!= NULL){      
    if(list_pointer->valore >(list_pointer->next)->valore){        
    temp = list_pointer->valore;        
    list_pointer->valore =(list_pointer->next)->valore;        
    (list_pointer->next)->valore = temp;        
    flag =1;//fino a quando esegue scambi continua       
    }          
    }     
    }    
    printElemento(list_head);//invio la lista alla funzione che stampa  
    return (list_head);
    }
    /*
    MIO VECCHIO ALGORITMO
    struct elemento *ordLista(struct elemento *list_head) {
    struct elemento *list_pointer, *list_record;
    int flag, temp;  
    list_record=NULL;
    flag = 1;  
    while (flag == 1) {    
    list_pointer = list_head;    
    flag = 0;    
    while (list_pointer->next != list_record) {      
    if (list_pointer->valore > (list_pointer->next)->valore) {        
    temp = list_pointer->valore;        
    list_pointer->valore = (list_pointer->next)->valore;        
    (list_pointer->next)->valore = temp;        
    flag = 1;      
    }      
    list_pointer = list_pointer->next;    
    }    
    list_record = list_pointer;  
    }      
    return list_head;}*/
     
    void printElemento(struct elemento *Lista){ 
                                                
    struct elemento *list_pointer = Lista;    
    printf("\nlista -> ");         
    while(list_pointer != NULL){            
    printf("%d", list_pointer->valore);                
    printf(" -> ");               
    list_pointer = list_pointer->next;          
    }     
    printf(" NULL"); 
    }
    Ultima modifica di Ronald940; 22-06-2014 a 18:05

  2. #12
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da Ronald940 Visualizza il messaggio
    Ti sei spiegato benissimo


    Allora non mi hai capito perché ti ho detto più volte di usare il tuo vecchio algoritmo.

    per farmi arrivare alla souzione da solo
    Devi arrivare a capire da solo cosa non va ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #13
    Nel codice di torn manca
    codice:
    list_pointer = list_pointer->next;
    Me la pagherete un giorno.. ç_ç

    P.S. Grazie! ahahah

  4. #14
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ci ho tentato inutilmente ... anche il tuo andava bene ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #15
    Ma questo algoritmo funziona con le stringhe??

  6. #16
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sì, ovviamente non puoi scrivere > per la if con delle stringhe ma devi usare la funzione strcmp
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #17
    Oregon gentilmente mi spiegheresti come fare l'inserimento dei valori (stringhe) nel mio programma?? ç_ç
    Si utilizza gets, puts e basta?
    Comunque gia ho fatto l'ordinamento.. utilizzando strcmp e strcopy

  8. #18
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Quote Originariamente inviata da Ronald940 Visualizza il messaggio
    Oregon gentilmente mi spiegheresti come fare l'inserimento dei valori (stringhe) nel mio programma?? ç_ç
    Si utilizza gets, puts e basta?
    Comunque gia ho fatto l'ordinamento.. utilizzando strcmp e strcopy
    È preferibile usare fgets. Cerca nel forum e avrai molte risposte.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  9. #19
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    struct elemento{ 
    char valore[100]; 
    struct elemento *next;
    };
    void menu();
    struct elemento *insElemento(struct elemento *); 
    struct elemento *ordLista(struct elemento *);
    void printElemento(struct elemento *);
    int main(){
     struct elemento *Lista=NULL ; 
     int comando; 
     do{
     menu(); 
     printf("\nComando:\t"); 
     scanf("%d", &comando); 
     
     switch(comando){  
     case 1:{   
     Lista=insElemento(Lista);   
     break;  
     }   
     case 2:{   
     Lista=ordLista(Lista);   
     break;  
     } 
     case 3:{
     printElemento(Lista);
     break;
     }
     } 
    }while(true);
    return 0; 
    }
    void menu(){ 
     printf("\n--------------------------"); 
     printf("\n1 - Inserisci Elemento\n"); 
     printf("2 - Ordinamento Lista\n"); 
     printf("3 - Visualizza Lista\n"); 
     printf("--------------------------\n");
    }
    //INSERIMENTO LISTA
    struct elemento *insElemento(struct elemento *list_head){    
    struct elemento *list_pointer, *list_record;    
    int i, n=0;
    char val[100], newval[100]; 
    printf("Specificare il numero di stringhe della lista:  "); 
    scanf("%d", &n);    
    list_record = (struct elemento *)malloc(sizeof(struct elemento));    
    printf("\nInserisci la 1 stringa ");    
    gets(list_record->valore); 
    list_head=list_record; 
    list_pointer = list_head; 
    for(i=2; i<=n; i++){          
     list_record->next = (struct elemento *)malloc(sizeof(struct elemento));          
     list_record = list_record->next;          
     printf("\nInserisci la %d stringa: ", i);                   
     gets(list_record->valore);                 
    }        
    list_record->next = NULL;       
    list_pointer = list_head;
     
    printElemento(list_head);
    return (list_head);
    }  
    //ORDINAMENTO LISTA
    struct elemento *ordLista(struct elemento *list_head) {
    struct elemento *list_pointer;
    int flag; 
    char temp[100];  
    flag = 1;  
    while (flag == 1) {    
    list_pointer = list_head;    
    flag = 0;    
    while (list_pointer->next != NULL) {      
    if (strcmp(list_pointer->valore, (list_pointer->next)->valore)>0) 
    {        
    strcpy(temp, list_pointer->valore);        
    strcpy(list_pointer->valore, (list_pointer->next)->valore);        
    strcpy((list_pointer->next)->valore, temp);        
    flag = 1;      
    }      
    list_pointer = list_pointer->next;    
    }     
    }      
    printElemento(list_head);
    return list_head;}
    //STAMPA LISTA
    void printElemento(struct elemento *Lista){ 
                                                
    struct elemento *list_pointer = Lista;    
    printf("\nlista -> ");         
    while(list_pointer != NULL){            
    printf("%s", list_pointer->valore);                
    printf(" -> ");               
    list_pointer = list_pointer->next;          
    }     
    printf(" NULL"); 
    }
    Perché non mi fa inserire la prima stringa??? E poi c'è un metodo per inserire tutte le stringhe richieste senza questo procedimento (inserire il primo valore per la testa e poi i seguenti valori)?

  10. #20
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Il thread non può essere lunghissimo e parlare di tutto ... Sai che devi aprirne uno apposito per il problema e descriverlo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.