Esercizio con liste e strutture in C

di il
1 risposte

Esercizio con liste e strutture in C

Buongiorno a tutti, ho riscontrato dei problemi nella risoluzione del seguente problema:
si vuole realizzare un programma che riceve in ingresso una serie di risorse di tipo char (es. A,B,C,..) ognuna in una certa quantità numerica di tipo intera e le immagazzina separatamente.
Ad esempio in questo modo:
A 4
B 5
A 3
C 7
X
Dove 'X' indica la fine dell'inserimento.
Il programma deve:
1) leggere da input le risorse (come nell'esempio sopra);
2) memorizzarle in una adeguata struttura dati;
3) e alla fine stampare le quantità totali, avendo sommato le quantità ripetute.

io ho provato a scrivere un programma ma ho riscontrato dei problemi:

#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<malloc.h>

/*definizione di un elemento attraverso una struct*/
struct risorsa {
        char nome;
        int val;
        struct risorsa *next;
};

int main() {
        struct risorsa *p,*punt;
        if (p->nome=='X') {                 // Se il primo elemento è X allora non ci sono risorse
              printf("la lista è vuota\n");
        }
        p=(strust risorsa*)malloc(sizeof(struct risorsa));   //creo il primo elemento
                    scanf("%c %d", &p->nome, &p->val);
                    punt=p;
                    
        while(punt->nome!='X') {
                 punt->next=(struct risorsa*)malloc(sizeof(struct risorsa));  //creo elementi successivi
                 punt=punt->next;
                 scanf("%c %d", &punt->nome,&punt->val);
                 
/*ciclo scansione*/
              while(p!=NULL) {
                         if (punt->nome==p->nome) {
                                   p->val=p->val+punt->val;
                         }
                         p=p->next;  // scorre di un elemento
               }          
                         punt->next=NULL;
        }
             
/* Visualizza lista*/
            while(p!=NULL) {
                  printf("%c %d", &p->nome,&p->val);
                  p=p->next;
            }         
        
     exit(EXIT_SUCCESS);
}

Ci sono un pò di problemi: quando inserisco X il processo di inserimento non termina; non riesco a stampare la lista;e non riesco a definire la funzione di somma di elementi con stesso nome.

Ringrazio in anticipo per le risposte e per l'aiuto.

Ailusek0808

1 Risposte

  • Re: Esercizio con liste e strutture in C

    Il primo if esegue un controllo su una variabile non ancora inizializzata (non vi hai ancora inserito un valore e già lo controlli)?
Devi accedere o registrarti per scrivere nel forum
1 risposte