#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 5
#define FFLUSH while(getchar()!='\n')
typedef struct {
int collocazione_magazzino;
char codice_prodotto[N];
unsigned int prezzo_unitario;
unsigned int numero_pezzi;
}TB_Lista;
struct nodolista{
TB_Lista info;
nodolista *next;
};
typedef struct nodolista NODO_Lista;
typedef NODO_Lista * P_Lista;
P_Lista InserOrd(P_Lista l, TB_Lista x){
P_Lista temp, p;
temp=(P_Lista)malloc(sizeof(NODO_Lista));
temp->info=x;
if(l==NULL){
temp->next=NULL;
l=temp;
}else{
if(strcmp(l->info.codice_prodotto,x.codice_prodotto)>0){
temp->next=l;
l=temp;
}else{
p=l;
while(p->next!=NULL){
if(strcmp(p->next->info.codice_prodotto,x.codice_prodotto)<0) p=p->next;
else break;
}temp->next=p->next;
p->next=temp;
}
} return (l);
}
void VisualTB(TB_Lista x){
printf("Collocazione magazzino: %d\n",x.collocazione_magazzino);
printf("Codice prodotto: %s\n",x.codice_prodotto);
printf("Prezzo unitario: %d\n",x.prezzo_unitario);
printf("Numero pezzi: %d\n",x.numero_pezzi);
}
void VisualLista(P_Lista l){
while(l->next!=NULL){
VisualTB(l->info);
l=l->next;
}
}
int main(){
int scelta,n,magazzino;
P_Lista l=NULL;
TB_Lista ele;
do{
printf("Scegleire operazione\n");
printf("1)Scegliere dimensione del vettore\n");
printf("2)Inserire un nuovo prodotto\n");
printf("3)Vendere un prodotto\n");
printf("4)Visualizzare elementi\n");
printf("0)FINE\n");
printf("--->");
scanf("%d",&scelta);
switch (scelta){
case 1:{printf("Dimensione vettore\n");
scanf("%d",&n);
l=(P_Lista)calloc(n,sizeof(NODO_Lista));
free(l);
break;
}
case 2:{printf("Inserire collocazione magazzino:\n");
scanf("%d",&ele.collocazione_magazzino);
printf("Inserire codice prodotto:\n");
scanf("%s",&ele.codice_prodotto);
printf("Inserisci prezzo unitario:\n");
scanf("%d",&ele.prezzo_unitario);
printf("Inserisci numero pezzi:\n");
scanf("%d",&ele.numero_pezzi);
InserOrd(l[ele.collocazione_magazzino],ele);
break;
}
case 3:{
break;
}
case 4:{printf("Scegliere magazzino\n");
scanf("%d",&magazzino);
VisualLista(l[magazzino]);
break;
}
}
}while(scelta!=0);
}
Ho creato questo programma seguendo il tuo consiglio del calloc ma nel compilarlo mi spunta
[Error] cannot convert 'NODO_Lista {aka nodolista}' to 'P_Lista {aka nodolista*}' for argument '1' to 'NODO_Lista* InserOrd(P_Lista, TB_Lista)' .
Non riesco proprio a capire dove sia l' errore. Quel calloc non mi crea un vettore di puntatori ?