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

    [C] Lista di liste (problema implementazione)

    Ciao a tutti,

    sono infine arrivato all ultimo argomento (nonche il piu carognoso...): le liste...
    Dopo essermi sorbito la teoria dal libro, sto provando ad implementare una lista di liste... e qui vengono i problemi:

    Codice
    Codice PHP:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    // Programma per gestire la lista di liste
    // Gestione di un database di macchine 
    // Chiede di inserire il tipo di macchina e poi tutti gli accessori

    // Strutture dati

    typedef struct accessori  //struttura accessori
     
    {
       
    char accessorio[20];
       
    struct accessori *next;
     } 
    Acc,*PointAcc;
     
    typedef struct automobile  //struttura accessori
     
    {
       
    char macchina[20];
       
    PointAcc pointer;
       
    struct automobile *next;
     } 
    Auto,*PointAuto;
       
    int main()
    {
     
    char temp[20];
     
    PointAuto HeadAuto,CurrPtr,PrevPtr// puntatori a struct automobile
     
    PointAcc  HeadAcc,CurrentPtr,PreviousPtr=NULL;            // puntatori a struct accessori
     
    HeadAuto=(PointAuto)malloc(sizeof(PointAuto)); // crea il primo elemento della lista;
     
     
    CurrPtr=HeadAuto
     
     
    printf("Inserire l'automobile, F per finire:");
     
    scanf("%s",temp);
     
     while(
    strcmp(temp,"F")!=0// ciclo per le auto
      
    {
       
    strcpy(CurrPtr->macchina,temp); // copia il nome dell auto nel campo macchina della struttura automobile
       
       
    printf("Inserire gli accessori, E per finire:");  // immisione degli accessori;
       
    scanf("%s",temp);
       
       
    HeadAcc=(PointAcc)malloc(sizeof(PointAcc)); // creazione primo elemento lista accessori
       
    PreviousPtr=CurrentPtr=HeadAcc;
       
       
    CurrPtr->pointer=HeadAcc// metto il valore del puntatore a accessori nell elemento della lista automobile
       
       
    while(strcmp(temp,"E")!=0// ciclo per gli accessori
        
        
    {
         
    strcpy(CurrentPtr->accessorio,temp); //copio l accesserio nel suo campo
         
         
    PreviousPtr=CurrentPtr;
         
    CurrentPtr=(PointAcc)malloc(sizeof(PointAcc)); //crezione di un nuovo elemento per accessorio
         
    PreviousPtr->next=CurrentPtr;
         
         
    printf("Inserire gli accessori, E per finire:");  // immisione degli accessori;
         
    scanf("%s",temp);   
        }
        
        
    PreviousPtr->next=NULL// metto a NULL l elemento creato prima di immettere il carattere E
        
        
    PrevPtr=CurrPtr;
        
    CurrPtr=(PointAuto)malloc(sizeof(PointAuto)); //Crezione del nuovo elemento della lista macchine 
        
    PrevPtr->next=CurrPtr// creo il link al prossimo elemento della lista 
        
    printf("Inserire l'automobile, F per finire:");
        
    scanf("%s",temp);
      
      } 

    PrevPtr->next=NULL;
    CurrPtr=HeadAuto;

    while(
    CurrPtr->next!=NULL)
     {
      
    printf("%s\n",CurrPtr->macchina);
      
    printf(" |\n");
      
    printf(" V\n");
      
      
    CurrPtr=CurrPtr->next;
     }
    printf("%s\n",CurrPtr->macchina);
    free(HeadAuto);
    system("pause"); 


    allora (uso DevC++):
    1) la compilazione non da errori (CRTL+F9)
    2) quando lo faccio girare (F9) succede questo: immetto il nome di una macchina (es Alfa) poi mi chede l accessorio (metto E per uscire subito), dopo di che non mi chiede il nome di una nuova macchina bensi esce dal programma ignorando il system"pause".....
    3) se invece lo faccio girare con il tasto F8 (debug) prende le macchine e gli accessori, e alla fine fa pure il ciclo di stampa....ma finito questo rimane li bloccato e continua a ignorare il system("pause")....any idea?

    4) cosa ancora piu strana: se lo faccio girare immettendo anche qualche accessorio il programma funziona perfettamente -.- Help please!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Moderazione

    Evitiamo le esclamazioni inutili nei titoli. Non servono a capire quale sia il problema.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3

    Re: Moderazione

    Originariamente inviato da LeleFT
    Evitiamo le esclamazioni inutili nei titoli. Non servono a capire quale sia il problema.


    Ciao.
    Corretto

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