Affronteremo, in questa lezione, un altro esercizio sulle struct in C, prima di andare avanti con gli altri argomenti, al fine di consolidare quanto studiato finora.
Quindi proponiamo questo esercizio a scopo didattico:
Definire la struttura automobili che descrivere un’automobile in base alla marca, cilindrata, anno di immatricolazione e acquirente con nome e cognome. Scriviamo quindi un programma in C, che dichiara una tabella autosalone di tipo automobili con 5 elementi. Il programma deve consentire di inserire i dati delle auto vendute e di visualizzare le marche delle auto, secondo una ricerca. Inoltre deve visualizzare il cognome dei proprietari con auto che hanno una cilindrata superiore a 1800 cc. Infine occorre visualizzare il numero di auto immatricolate in un determinato anno.
Innanzitutto definiamo la struttura automobili, specificando i vari campi.
Facciamo i controlli dell’input su n, la variabile che stabilisce il numero di auto da inserire, in modo da inserire da 1 a un massimo di 10 auto.
Predisponiamo l’inserimento dei dati e anche qui facciamo un controllo che la cilindrata sia compresa tra 800 cc e 2500 cc.
Controlliamo inoltre anche gli anni di immatricolazione, facendo in modo che l’anno inserito sia un valore compreso tra il 2000 e il 2019.
Effettuiamo le ricerche chiedendo dapprima la marca dell’auto da ricercare, e se la marca viene trovata nella tabella autosalone allora visualizziamo il nome e il cognome del proprietario.
Dopo effettuiamo una ricerca di tutte le auto che hanno una cilindrata maggiore di 1800 cc.
Infine l’ultima ricerca la facciamo sulle auto immatricolate in un determinato anno, visualizzando il totale.
Ecco il listato completo dell’esercizio sulle struct in C proposto oggi.
#include <stdio.h>
#include <string.h>
#define MAX 10
typedef struct {
char marca[20];
int cilindrata;
int anno;
char cognome[20];
char nome[20];
} automobili;
int main(){
int i,n,anno,tot=0;
automobili autosalone[MAX]; /*tabella autosalone di tipo automobili che al più contiene 10 elementi*/
char marca[20];
do{
printf("Quante auto vuoi inserire?:");
scanf("%d", &n);
} while (n<1 || n>MAX);
for(i=0; i<n; i++){
printf("\nAuto %d", i+1);
printf("\nMarca:");
scanf("%s", autosalone[i].marca);
do {
printf("Cilindrata:");
scanf("%d", &autosalone[i].cilindrata);
} while ((autosalone[i].cilindrata)<800 || (autosalone[i].cilindrata)>2500);
do {
printf("Anno immatricolazione:");
scanf("%d", &autosalone[i].anno);
} while ((autosalone[i].anno)<2000 || (autosalone[i].anno)>2019);
printf("Cognome:");
scanf("%s", autosalone[i].cognome);
printf("Nome:");
scanf("%s", autosalone[i].nome);
}
printf("\nQuale marca di auto cerchi?:");
scanf("%s", marca);
for (i=0; i<n; i++)
if(strcmp(autosalone[i].marca,marca)==0)
printf("%s %s\n ", autosalone[i].cognome, autosalone[i].nome);
printf("\n\nProprietari con auto di cilindrata maggiore di 1800 cc:");
for (i=0; i<n; i++)
if(autosalone[i].cilindrata>1800)
printf(" %s", autosalone[i].cognome);
printf("\n\nAnno:");
scanf("%d", &anno);
for (i=0; i<n; i++)
if(autosalone[i].anno==anno)
tot++;
printf("Auto immatricolate: %d", tot);
}
Chiaramente ci possono essere altri modi per risolvere questo semplice esercizio sulle struct in C .
Alcuni link utili
Somma elementi diagonale principale di una matrice
Come sommare gli elementi della cornice esterna
Sommare dei numeri di una matrice
Ricerca elementi in una matrice