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