Io ho dato una mia interpretazione all'esercizio , ma non so se ho capito bene ,
essenzialmente codice modello lo stesso dell'archivio S !? cosa vuol dire ?
io avrei risolto in questo modo , modificando il codice che hai postato , ma poi se è corretto , se è interpretato il problema nel modo giusto , non SAPREI
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
int codice_modello;
int durata_batteria;
int peso;
float prezzo_acquisto;
int tot_pezzi_modello;} scheda_cellulare;
typedef struct {
int codice_modello; //DICE DI INSERIRE LO STESSO CODICE
float prezzo_vendita;
int pezzi_arrivati_modello;} scheda_magazzino;
#define Smax 3
#define Nmax 5
typedef scheda_cellulare S[Smax];
typedef scheda_magazzino N[Nmax];
void leggi(S S1);
int magazzino(N Neg);
void aggiorna(S S1,N Neg,int pezzi_arrivati_modello );
int Return_peso(S S1, int codice);
void crealista(N Neg,S S1, int numero_arrivi);
int main() {
S S1={0};
N N1={0};
int numero_arriviN1=0;
leggi(S1);
numero_arriviN1=magazzino(N1);
crealista(N1,S1, numero_arriviN1);
system("PAUSE");
return 0;
}
void leggi(S S1) {
int i;
for(i=0;i<Smax;i++) {
S1[i].codice_modello=i+1;
printf("Inserire la durata batteria del modello cell %d\n",i+1);
scanf("%d",&S1[i].durata_batteria);
printf("Inserire il peso del modello cell %d\n",i+1);
scanf("%d",&S1[i].peso);
printf("Inserire il prezzo di acquisto del modello cell %d\n",i+1);
scanf("%f",&S1[i].prezzo_acquisto);}
}
int magazzino(N Neg) {
int i;
int numero_arrivi=0;
for(i=0;i<Nmax;i++) {
printf("Inserire codice numerico dell'arrivo Nro %d\n",i+1);
scanf("%d",&Neg[i].codice_modello);
printf("Inserire il prezzo di vendita dell'arrivo Nro %d\n",i+1);
scanf("%f",&Neg[i].prezzo_vendita);
printf("Inserire il num di pezzi arrivati dell'arrivo Nro %d\n",i+1);
scanf("%d",&Neg[i].pezzi_arrivati_modello);
numero_arrivi++;
}
return numero_arrivi;
}
struct nodo{
scheda_magazzino cellulare;
struct nodo *next;};
int Return_peso(S S1, int codice)// FUNZIONE SECONDARIA DI APPOGGIO
{
int i;
for(i=0;i<Smax;i++)
if(S1[i].codice_modello==codice)
return S1[i].peso;
return 0;
}
void crealista(N Neg,S S1, int numero_arrivi) {
struct nodo *testaL1;
struct nodo *nuovoElementoL1;
testaL1=NULL;
struct nodo *testaL2;
struct nodo *nuovoElementoL2;
testaL2=NULL;
int i;
for(i=0;i<numero_arrivi;i++) {
if( Return_peso(S1,Neg[i].codice_modello)>100)
{
nuovoElementoL1=(struct nodo*)malloc(sizeof(struct nodo));
nuovoElementoL1->cellulare=Neg[i];
nuovoElementoL1->next=testaL1;
testaL1=nuovoElementoL1;
}
else if(Return_peso(S1,Neg[i].codice_modello)<100)
{
nuovoElementoL2=(struct nodo*)malloc(sizeof(struct nodo));
nuovoElementoL2->cellulare=Neg[i];
nuovoElementoL2->next=testaL2;
testaL2=nuovoElementoL2;
}
}
struct nodo *tmp;
tmp=testaL1;
while(tmp!=NULL)
{
printf("%d ",tmp->cellulare.codice_modello);
tmp=tmp->next;
}
}