Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <ctype.h>
- #include <stdlib.h>
- #define MAX_STUD 500
- #define N_MAT 2
- #define VOTOMIN 1
- #define VOTOMAX 10
- #define SUFF 6
- #define TRUE 1
- #define FALSE 0
- #define STR_LEN 30
- // Studenti
- struct
- { char cognome[STR_LEN +1];
- char nome[STR_LEN +1];
- int matricola;
- //int anno_di_corso;
- float voto[N_MAT]; //elenco dei voti dello studente nelle diverse materie
- }stud[MAX_STUD];
- // Materie
- struct
- { int codice;
- char descr[STR_LEN +1];
- char docente[STR_LEN +1];
- } materia[N_MAT] =
- {{1,"Programmazione","Carli"},{2,"Analisi Matematica","Alberti"}};
- int main()
- {
- float media, somma, verificafloat;
- char trovato;
- int i, j, nStud, matricola, num_insuff, scelta, verifica;
- // inizializzazione dimensioni
- do
- {
- printf("Quanti studenti (max%d)? ",MAX_STUD);
- verifica=scanf("%d",&nStud);
- fflush(stdin);
- if (verifica!=1)
- {
- printf("\nErrore...Inserire un numero adatto. ");
- }
- }while(nStud> MAX_STUD||nStud<= 0);
- // inserimento studenti e voti
- printf("\n\nInserimento STUDENTI e VOTI...\n");
- for (i = 0; i < nStud; i++)
- {
- printf("\nStudente[%d]:\n", i);
- printf("Matricola: ");
- verifica=scanf("%d",&stud[i].matricola);
- fflush(stdin);
- if (verifica!=1)
- {
- while(verifica!=1)
- {
- printf("\nErrore...Numero maticola non adatto. Ne inserisca uno corretto: ");
- verifica=scanf("%d",&stud[i].matricola);
- fflush(stdin);
- }
- }
- for (int a=i;a>0;a--)
- {
- while (stud[i].matricola==stud[a-1].matricola)
- {
- printf("Matricola gia\' inserita, ne inserisca una nuova:");
- scanf("%d",&stud[i].matricola);
- fflush(stdin);
- }
- }
- printf("Nome: ");
- fgets(stud[i].nome, STR_LEN, stdin);
- printf("Cognome: ");
- fgets(stud[i].cognome, STR_LEN, stdin);
- printf(" Voti studente: \n");
- //Harambe vive nei commenti dei programmi
- for(j = 0; j < N_MAT; j++)
- {
- do
- {
- printf("\t%s: ",materia[j].descr);
- //inserisce i voti per ciascuna materia nel vettore dei voti dello studente i-esimo
- verificafloat=scanf("%f",&stud[i].voto[j]);
- if (verificafloat!=1)
- {
- while(verificafloat!=1)
- {
- printf("\nErrore...Voto non adatto. Ne inserisca uno corretto: ");
- verificafloat=scanf("%f",&stud[i].voto[j]);
- fflush(stdin);
- }
- }
- }while(stud[i].voto[j] > VOTOMAX || stud[i].voto[j] < VOTOMIN);
- }
- }
- // Inserimento matricola da cercare
- for (i=0;i<MAX_STUD;i++)
- {
- printf("\nScegli l'opzione che vuoi compiere:\n");
- printf("(1) per aggiungere un nuovo studente;\n");
- printf("(2) per cercare una matricola;\n");
- printf("(3) per cercare una matricola e modificarne il piano di studi;\n");
- printf("(4) per far terminare il programma;\n");
- printf("\nQuale operazione vuoi eseguire? ");
- verifica=scanf("%d",&scelta);
- fflush(stdin);
- //verifica per minore e maggiore di 4 e lettere
- if (verifica!=1||scelta<1||scelta>4)
- {
- while(scelta<1||scelta>4)
- {
- printf("Errore...Inserire una tra queste 4 possibilita\': ");
- scanf("%d",&scelta);
- fflush(stdin);
- }
- }
- if (scelta==1)
- {
- for (i=nStud;i<nStud+1; i++)
- {
- printf("\nStudente[%d]:\n", i);
- printf("Matricola: ");
- verifica=scanf("%d",&stud[i].matricola);
- fflush(stdin);
- if (verifica!=1)
- {
- printf("\nErrore...Numero maticola non adatto. ");
- }
- for (int a=i;a>0;a--)
- {
- while (stud[i].matricola==stud[a-1].matricola)
- {
- printf("Matricola gia\' inserita, ne inserisca una nuova:");
- scanf("%d",&stud[i].matricola);
- fflush(stdin);
- }
- }
- printf("Nome: ");
- fgets(stud[i].nome, STR_LEN, stdin);
- printf("Cognome: ");
- fgets(stud[i].cognome, STR_LEN, stdin);
- printf(" Voti studente: \n");
- //Harambe vive nei commenti dei programmi
- for(j = 0; j < N_MAT; j++)
- {
- do
- {
- printf("\t%s: ",materia[j].descr);
- //inserisce i voti per ciascuna materia nel vettore dei voti dello studente i-esimo
- scanf("%f",&stud[i].voto[j]);
- }while(stud[i].voto[j] > VOTOMAX || stud[i].voto[j] < VOTOMIN);
- }
- nStud++;
- }
- }
- else if (scelta==2)
- {
- trovato = FALSE;
- do
- {
- printf("\n\nInseriscila matricola dello studente da ricercare: ");
- scanf("%d",&matricola);
- for (i = 0; i < nStud&& !trovato; i++)
- {
- if(stud[i].matricola==matricola)
- trovato=TRUE;
- if(!trovato)
- printf("La matricola inserita non esiste.");
- }
- //aggiungere la matricola(s/n) se dice n rifare il ciclo con un continue,se dice s far aggiungere la atriolaa
- /***/
- }while(!trovato);
- // Ricerca insufficienze e calcolo media
- somma = 0;
- num_insuff= 0;
- printf("Nome:%s",stud[i].nome);
- printf("Cognome:%s",stud[i].cognome);
- printf("Materie insufficienti:\n");
- i--;// indice della matricola cercata
- for(j = 0; j < N_MAT; j++)
- {
- somma += stud[i].voto[j];
- if(stud[i].voto[j] < SUFF)// verifica materie insufficienti
- {
- printf("%s (Prof. %s) %.1f\n",materia[j].descr, materia[j].docente, stud[i].voto[j]);
- num_insuff++;
- }
- }
- if(!num_insuff)
- printf("Nessuna materia insufficiente");
- // calcolo media
- media = somma/N_MAT;
- printf("\nMedia: %.1f\n",media);
- }
- else if (scelta==3)
- {
- }
- else if (scelta==4)
- {
- printf("\nChiusura del programma...\n\n");
- exit(1);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement