Esercizio sulle struct in C

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 varibile 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 immatricolazine, 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

Media per riga e per colonna

Somma elementi diagonale principale di una matrice

Come sommare gli elementi della cornice esterna

Come sommare due matrici

Sommare dei numeri di una matrice

Matrice trasposta

Prodotto tra matrici

Ricerca elementi in una matrice

Inserire dati in una matrice

Tavola pitagorica in C

Array multidimensionali

Programma sui triangoli in C

Media dei numeri in un array

Array con numeri random

Quick sort in C

Selection sort in C

Merge sort in C

Insertion Sort in C

Autore dell'articolo: cristina

Avatar per Coding Creativo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *