So che potrebbe sembrare una discussione già aperta molte volte, ma nelle altre risposte non ho capito molto bene le spiegazioni, dato che sono ancora agli inizi... L'argomento sono le strutture. L'esercizio è il seguente:
Scrivere un programma C che gestisca l’archivio dei componenti presenti in un magazzino. Il programma deve lavorare su un vettore (componenti) di strutture, dove ognuna di queste contiene le informazioni su un componente: identificativo del componente, nome del componente, quantità del componente presente in magazzino. Gestire poi un ulteriore vettore (ordini) di strutture dove ognuna di queste contiene le informazioni relative a un ordine di acquisto: identificativo ordine, identificativo componente, quantità richiesta. Il programma deve:
-Aggiungere un nuovo componente nell’archivio componenti (quindi nuovo identificativo, nuovo nome e nuova quantità iniziale) stampando un messaggio di errore se il componente è già presente o se l’archivio è pieno
- Dato l’identificativo di un componente stamparne il nome e la quantità disponibile se il componente è presente, un messaggio di errore in caso contrario
Dato l’identificativo di un componente modificare la quantità disponibile stampando un messaggio di errore se il componente non è presente nell’archivio
- Stampare tutte le informazioni dell’archivio nell’ordine con cui sono inserite
- Aggiungere un nuovo ordine nell’archivio ordini (quindi nuovo identificativo ordine, nuovo identificativo componente e nuova quantità richiesta) stampando un messaggio di errore se l’ordine è già presente o se l’archivio è pieno
- Verificare se gli ordini possono essere evasi, cioè se la quantità richiesta è inferiore a quella presente in magazzino, nel qual caso aggiornare le informazioni di magazzino e cancellare tutti gli ordini.
Ora, non voglio che mi diate la soluzione diretta, volevo arrivarci io. Il mio sorgente è questo:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct magazzino {
int identificativoComponente[5];
int nomeComponente[30];
int quantitaComponente[1000];
};
struct magazzino componenti[1500];
struct vendita {
int identificativoOrdine[50];
int identificativoComponenteOrdine[5];
int quantitaOrdine[1000];
};
struct vendita ordine[1500];
int main()
{
int i;
char k;
int esci = 0;
do{
printf("Inserire il codice identificativo del componente (massimo 5 caratteri): ");
scanf("%s", componenti[i].identificativoComponente);
componenti[i].identificativoComponente = 1;
for( k = 0; k < 5; k++)
{
if(componenti[i].identificativoComponente == k)
{
printf("Errore! Il codice e\' gia' stato inserito!\n");
}
}
printf("Inserire il nome del componente: ");
scanf("%s", componenti[i].nomeComponente);
printf("Inserire la quantita' del componente: ");
scanf("%s", componenti[i].quantitaComponente);
} while (esci == 0);
printf("Il numero e\' %d", componenti[i].identificativoComponente);
system("pause");
return 0;
}
Innanzitutto vorrei sottolineare che sto facendo per ora la prima parte, quella del controllo se l'elemento è già stato inserito nell'array... Quindi vi chiedo, potreste dirmi cosa c'è che non va? In pratica l'errore che mi si genera è:
[Error] incompatible types in assignment of 'int' to 'int [5]' (alla linea 37).
Inoltre, riuscireste a darmi qualche suggerimento per i punti successivi? Io sinceramente faccio molta fatica...
Vi ringrazio anticipatamente per la disponibilità, spero in una vostra mano.