
Struct in C – In questa lezione faremo un esempio di utilizzo di strutture in C molto semplice, infatti nella scorsa lezione, strutture in C, avevamo solo dato qualche definizione.
Creare una semplice struct alunno che contiene il nome, il cognome e il voto. Dopo inserire da 1 a 20 alunni al massimo e permettere di effettuare una ricerca per cognome dell’alunno. Se ci sono più alunni con lo stesso cognome visualizzarli entrambi.
Procedimento esempio d’uso struct in C
Quindi, definiamo una struttura alunno con all’interno il campo nome e cognome di tipo char e voto di tipo int.
Per il momento non utilizzeremo le funzioni ma svilupperemo il programma all’interno del main.
Facciamo un controllo sul numero degli alunni, con il ciclo do while, in modo da evitare di inserire un numero non valido.
Dopo con un ciclo for inseriamo i dati degli alunni. Poi chiediamo quale cognome dobbiamo cercare, lo memorizziamo nella variabile cerca e utilizzando la funzione strcmp controlliamo se qualche dato nella nostra struttura contiene quel cognome e se troviamo i dati visualizziamo i risultati. Se a fine ciclo la variabile trovato è rimasta a zero, allora vuol dire che non abbiamo trovato nessun cognome.
N.B. Sarebbe opportuno inserire un identificato di ciascun alunno, in modo da identificarlo univocamente. Nelle prossime lezioni vedremo come fare.
Ecco dunque il listato completo di questo semplicissimo esempio della struct in C.
#include <stdio.h>
#include <string.h>
#define MAX 20
typedef struct {
char cognome[30];
char nome[20];
int voto;
}alunno;
int main() {
alunno a[MAX];
int n,i,j,trovato;
char cerca[20];
do{
printf("Inserisci il numero di alunni:");
scanf("%d", &n);
} while (n<1 || n>MAX);
for(i=0; i<n; i++){
printf("Inserisci il cognome dell'alunno:");
scanf("%s", a[i].cognome);
printf("Inserisci il nome dell'alunno:");
scanf("%s", a[i].nome);
printf("Inserisci il voto:");
scanf("%d", &a[i].voto);
}
printf("\nInserisci il cognome dell'alunno da cercare: ");
scanf("%s", cerca);
trovato=0;
for(j=0;j<n;j++){
if(strcmp(a[j].cognome, cerca)==0) {
printf("\nAlunno trovato in posizione %d.\n%s\t%d\n",j+1,a[j].nome, a[j].voto);
trovato=1;
}
}
if (!trovato)
printf("\nAlunno non trovato.\n");
return 0;
}
Chiaramente questo è un semplicissimo esempio di strutture in C, nella prossima lezione vedremo altri esempi.
Alcuni link utili
Come fare la somma degli elementi della diagonale principale di una matrice
Sommare elementi cornice esterna
Come sommare i numeri di una matrice
Ricerca elementi in una matrice