libri-javascript-python

Struct in C – In questa lezione faremo un esempio di utilizzo di strutture in C molto semplice. Nella lezione precedente abbiamo introdotto le strutture in C, fornendo definizioni di base e concetti fondamentali. Ora, per comprendere meglio come utilizzare le strutture, svilupperemo un esempio pratico:

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

Iniziamo definendo una struttura chiamata alunno, che contiene i campi cognome, nome (entrambi di tipo char) e voto (di tipo int). Questa struttura rappresenta un singolo alunno.

Per evitare inserimenti non validi, utilizzeremo un ciclo do while per controllare il numero di alunni che l’utente desidera inserire.

Successivamente, utilizzando un ciclo for, chiederemo all’utente di inserire i dati di ciascun alunno. Dopo aver inserito tutti i dati, l’utente potrà inserire il cognome di un alunno da cercare. Utilizzando la funzione strcmp, controlliamo se ci sono corrispondenze con il cognome inserito e, se troviamo degli alunni corrispondenti, visualizziamo i risultati. Se nessun cognome corrisponde, viene visualizzato un messaggio appropriato.

È da notare che in questa implementazione non è stato incluso un identificatore univoco per ciascun alunno, il che potrebbe causare problemi nel caso in cui due alunni abbiano lo stesso cognome. Affronteremo questo problema nelle prossime lezioni.

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;
}

Il programma che abbiamo sviluppato in questo esempio utilizza le strutture in C per gestire i dati degli alunni, consentendo agli utenti di inserire informazioni come nome, cognome e voto di ciascun alunno e successivamente effettuare ricerche in base al cognome.

Ecco una spiegazione dettagliata del codice:

  1. Definizione della Struttura alunno: All’inizio del programma, abbiamo definito una struttura chiamata alunno, che contiene tre campi: cognome, nome e voto.
  2. Input del Numero di Alunni: Utilizzando un ciclo do while, chiediamo all’utente di inserire il numero di alunni che desidera gestire. Questo ciclo assicura che il numero inserito sia compreso tra 1 e il massimo numero di alunni consentito (definito come MAX, con valore 20).
  3. Input dei Dati degli Alunni: Attraverso un ciclo for, chiediamo all’utente di inserire i dati di ciascun alunno, inclusi cognome, nome e voto. Questi dati vengono memorizzati nelle rispettive variabili della struttura alunno.
  4. Ricerca degli Alunni per Cognome: Dopo aver inserito tutti i dati degli alunni, chiediamo all’utente di inserire il cognome di un alunno da cercare. Utilizzando un altro ciclo for, scansioniamo tutti gli alunni per trovare corrispondenze con il cognome inserito. Se troviamo un alunno con il cognome corrispondente, visualizziamo i suoi dati (nome e voto). Se nessun alunno corrisponde al cognome inserito, viene visualizzato un messaggio appropriato.
  5. Utilizzo della Funzione strcmp: La funzione strcmp viene utilizzata per confrontare due stringhe, in questo caso per confrontare il cognome inserito dall’utente con i cognomi degli alunni memorizzati nella struttura. Se il cognome inserito corrisponde a uno degli alunni, la funzione restituisce 0 e viene eseguita l’istruzione all’interno del blocco if.
  6. Visualizzazione dei Risultati: Se troviamo un alunno con il cognome corrispondente, visualizziamo i suoi dati (nome e voto). In caso contrario, viene visualizzato un messaggio che informa l’utente che l’alunno non è stato trovato.

In questo modo, il programma consente agli utenti di gestire i dati degli alunni in modo organizzato e di effettuare ricerche rapide in base al cognome.

Conclusioni

In questa lezione abbiamo sviluppato un programma in C che utilizza le strutture per gestire i dati degli alunni. Attraverso questo esempio pratico, abbiamo imparato come definire una struttura per rappresentare gli alunni e come utilizzarla per memorizzare e manipolare le informazioni relative ai loro cognomi, nomi e voti.

Abbiamo inoltre implementato un meccanismo per consentire agli utenti di cercare gli alunni in base al cognome, utilizzando la funzione strcmp per confrontare i cognomi inseriti con quelli memorizzati nella struttura.

Questo esempio ci ha fornito una comprensione pratica dell’utilizzo delle strutture in C per organizzare e manipolare dati complessi. Nei prossimi passi, potremmo esplorare ulteriori funzionalità e applicazioni delle strutture, nonché approfondire altri concetti di programmazione.

Alcuni link utili

Corso linguaggio C

Media per riga e per colonna

Come fare la somma degli elementi della diagonale principale di una matrice

Sommare elementi cornice esterna

Somma di due matrici

Come sommare i 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