Newsgroup: it.comp.lang.c
Titolo: matrici o struct ?

Ciao a tutti.
Vorrei sapere che tipo di strutture dati debbono essere utilizzati per 
risolvere le seguenti prove d'esame, matrici o struct. Gli esercizi sono 
tutti simili gra loro.
**********************************************************Fidelity CARD
Fidelity CARD
Si consideri un ipermercato dove vengono venduti generi alimentari ed 
altri prodotti.
Ad alcuni clienti viene fornita una fidelity Card, ed ad ognuno di essi 
viene assegnato un codice sequenziale che va da 1 a 1.000 e viene 
registrato in un archivio A il suo nome e cognome, ed il totale delle 
spese di alimentari: tot-al e non alimentari: tot-na. Ogni volta che un 
cliente fa una spesa questa viene aggiunta al totale delle spese di 
alimentari ed altri prodotti.
Per convenzione le spese fatte da clienti privi di fidelity Card viene 
registrata al cliente codice 0.
ESERCIZIO BASE
Scrivere in C un programma che:
1)Ha un ciclo principale finchï¿œ vengono inseriti dall'utente (chiedere 
se vuole continuare), che legge da tastiera i totali della spesa di 
alimentari e non, chiede al cliente se ha la fidelity Card, se questi la 
ha gli da il numero (non considerare il caso che dia un numero 
sbagliato, se non la ha e non la vuole fare da il codice 0, se non la 
ha, ma la vuole fare restituisce il codice -1, quindi chiama una 
funzione inserisci che a seconda dei casi precedenti inserisce i due 
precedenti totali nel record relativo a quel codice cliente od in quello 
relativo al codice 0 oppure se il codice ï¿œ -1 chiede nome e cognome al 
cliente gli assegna un codice e lo stampa a video e registra i 2 totali.
2)Legge da tastiera un prezzo e chiama una funzione premio che cerca il 
primo cliente in ordine di codice di fidelity che ha un totale di spesa 
(tot-al + tot-na), superiore a quel prezzo e ne restituisce il codice al 
main e nel main viene stampato il suo nome e cognome.
3)Chiama una funzione media che restituisce la media dei valori di 
tot-al, tot-na e totale.
*********************************************************************
Anagrafe degli animali
Si consideri un'anagrafe di animali, ad ognuno viene messo un chip con 
un codice numerico intero sequenziale da 1 a 10.000 contenuto in una SD 
(struttura dati).
Per ogni animale viene registrato il codice del padrone (di tipo 
numerico intero) il tipo di animale identificato da un carattere 
(c=cane, g=gatto, t=tartaruga) e il sesso se ï¿œ maschio o femmina, quanti 
figli e se ï¿œ incinta o meno.
ESERCIZIO BASE
Scrivere in C un programma che:
1)Richiama una funzione "codifica" che assegna il codice del chip 
sequenziale, acquisisce il codice del padrone, il tipo dell'animale, il 
sesso, se ï¿œ incinta ed il numero dei figli e restituisce questi dati al 
main.
2)Esegua un ciclo che attende in input dall'utente un codice di animale 
oppure il codice 0 che indica l'uscita dal ciclo e chiami una funzione 
incinta che dato il codice di un animale registra che questo ï¿œ incinta e 
se l'animale ï¿œ maschio o giï¿œ incinto e segnali l'errore e restituisca la 
SD al main.
3)Chiami un programma figli dandogli in input il numero dei figli li 
aggiunge al totale e verifica se era incinta e restituisce la SD al main.
***********************************************************************
Ricovero per animali
Si consideri un ricovero per animali in cui ci sono gabbie per cani 
gatti e topi, ogni gabbia di cani puo' contenere massimo 4 cani, quelle 
dei gatti max 6, quelle di topi max 8 topi.
ESERCIZIO BASE
Scrivere in C un programma che:
1)Richiama una funzione leggi che acquisisce da tastiera i cani i gatti 
ed i topi (indicati con un numero 1, 2, 3, 4,...) e li metta in 3 
strutture dati che rende al programma principale, i dati vengono 
inseriti in ordine sparso, ad es. prima un cane poi un gatto poi un 
altro cane poi un topo.
2)chiami una funzione "conta" che conti quanti cani, gatti e topi sono 
presenti nelle strutture dati e restituisca questi valori al programma 
principale.
3)Calcoli quante gabbie ci vogliono per topi cani e gatti e lo stampi 
unitamente al numero totale.
********************************************************************
Societï¿œ di informatica
Si consideri una societï¿œ di informatica che ha un listino di Max 100 
articoli composti da un codice numerico progressivo (0..99), un 
codice-articolo numerico (no progressivo), ed un prezzo.
ESERCIZIO BASE
Scrivere in C un programma che:
1)Legge da tastiera gli articoli del listino: nome e prezzo e gli 
assegna un codice progressivo e li mette in una struttura dati A.
2)Chiama una funzione che legge da tastiera un prezzo e restituisce al 
programma principale una struttura dati B contenente tutti gli articoli 
di prezzo superiore a quello letto (codice, descizione e prezzo).
3)Chiama una funzione che calcola il prezzo medio degli articoli 
presenti in B e poi il prezzo medio degli articoli presenti in A e li 
stampa.
4)Chiama una funzione che dato un codice-articolo stampa tutti i dati 
dell'articolo.
**********************************************************************
Magazzini attrezzi
Si considerino 2 magazzino di attrezzi A e B con un numero di Max 100 
pezzi indicati da un codice numerico progressivo (0..99), un nome 
numerico (no progressivo), ed un peso.
ESERCIZIO BASE
Scrivere in C un programma che:
1)Legge da tastiera tutti i pezzi del magazzino A e poi del magazzino B: 
nome e peso e gli assegna un codice progressivo e li mette nelle 
strutture dati.
2)Legge da tastiera un nome e cerca il pezzo prima in A e poi 
eventualmente B chiamando una funzione "cerca" che restituisce al 
programma principale il codice numerico ed il peso di quel pezzo.
3)Chiama una funzione "media" che calcola il peso medio degli articoli 
presenti in A e poi quello in B.
***********************************************************************
Non mi interessa avere tracce di soluzione o altro, solo avere conferma
che gli esercizi vanno risolti facendo ricorso a matrici. Credo che per 
chi ha esperienza sia sufficiente una breve lettura per capirlo.
Grazie

 risolvere le seguenti prove d'esame, matrici o struct.
Non sarebbe pi� istruttivo per te se tu stesso dicessi quali sono le
strutture dati da utilizzare e perch�?
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 strutture dati da utilizzare e perch�?
hai ragione, volevo solo capire in che SD focalizzare meglio il mio 
studio, vedendo il discorso finalizzato al superamento dell'esame.
Comunque seguo il consiglio e ci provo
*********************************************************************
Anagrafe degli animali
Si consideri un'anagrafe di animali, ad ognuno viene messo un chip con 
un codice numerico intero sequenziale da 1 a 10.000 contenuto in una SD 
(struttura dati).
Per ogni animale viene registrato il codice del padrone (di tipo 
numerico intero) il tipo di animale identificato da un carattere 
(c=cane, g=gatto, t=tartaruga) e il sesso se � maschio o femmina, quanti 
figli e se � incinta o meno.
***************************
qua ad esempio, seguendo anche il suggerimento datomi da tetsuya, non 
potrei usare una matrice in quanto devo memorizzare dati di tipo diverso 
(int e char). Quindi probabilmente la struct (che non conosco bene) e' 
piu' idonea
**********************************************************************
Magazzini attrezzi
Si considerino 2 magazzino di attrezzi A e B con un numero di Max 100 
pezzi indicati da un codice numerico progressivo (0..99), un nome 
numerico (no progressivo), ed un peso.
ESERCIZIO BASE
Scrivere in C un programma che:
1)Legge da tastiera tutti i pezzi del magazzino A e poi del magazzino B: 
nome e peso e gli assegna un codice progressivo e li mette nelle 
strutture dati.
2)Legge da tastiera un nome e cerca il pezzo prima in A e poi 
eventualmente B chiamando una funzione "cerca" che restituisce al 
programma principale il codice numerico ed il peso di quel pezzo.
3)Chiama una funzione "media" che calcola il peso medio degli articoli 
presenti in A e poi quello in B.
********************************
qua userei una matrice:
int magazzino[100][3]
le colonne indicherebbero rispettivamente: codice, nome, peso
***********************************************************************
Ricovero per animali
Si consideri un ricovero per animali in cui ci sono gabbie per cani 
gatti e topi, ogni gabbia di cani puo' contenere massimo 4 cani, quelle 
dei gatti max 6, quelle di topi max 8 topi.
ESERCIZIO BASE
Scrivere in C un programma che:
1)Richiama una funzione leggi che acquisisce da tastiera i cani i gatti 
ed i topi (indicati con un numero 1, 2, 3, 4,...) e li metta in 3 
strutture dati che rende al programma principale, i dati vengono 
inseriti in ordine sparso, ad es. prima un cane poi un gatto poi un 
altro cane poi un topo.
2)chiami una funzione "conta" che conti quanti cani, gatti e topi sono 
presenti nelle strutture dati e restituisca questi valori al programma 
principale.
3)Calcoli quante gabbie ci vogliono per topi cani e gatti e lo stampi 
unitamente al numero totale.
***************************
in questo caso 3 array distinti (dice di metterli in 3 strutture dati)
int cani[MAX],gatti[MAX],topi[MAX];
per l'inserimento userei la funzione scanf:
scanf("%d",&cani[]);
ma non ho ben capito come gestire l'acquisizione in ordine sparso come 
richiesto ...
Grazie ciao