Strutture

di il
9 risposte

Strutture

Buonasera a tutti, stavo facendo un programma C ma non riesco a finire l'ultima parte. Potreste aiutarmi per favore?
Devo implementare un programma che dato un vettore di studenti( il tipo di studente conterrà nome, cognome e i voti scritto, orale e pratica di ogni quadrimestre), individui e ritorni il nome dello studente più bravo nelle diverse materie e con media generale più alta.

Mi mancano proprio queste due informazioni per completarlo ma ho già impostato tutto. Ve lo mostro.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define N_STUDENTI 2
#define N_MATERIE 2  //Italiano, Matematica


typedef struct s_materia {
	char nome[15];
	float v1q[6];
	float v2q[6];
	float media;
} materia;


typedef struct s_studente {
	char cognome[20];
	char nome[20];
	materia m[N_MATERIE];
} studente;

void inserisci(int dim, studente ss[dim]){
	int i,j,k;
	char votoStr[10];

	//questo ciclo mi permette di 
	//inserire i dati di ogni studente
	for(i=0; i<dim; i++){
		printf("Cognome: ");
		gets(ss[i].cognome);
		printf("Nome: ");
		gets(ss[i].nome);
		//inserisco i dati delle materie
		for(j=0; j<N_MATERIE; j++){
			printf("Nome materia: ");
			gets(ss[i].m[j].nome);
			for(k=0; k<6; k++){
				printf("Voto 1° Q n° %d ", k+1);
				gets(votoStr);
				ss[i].m[j].v1q[k] = atof(votoStr);
			}
			for(k=0; k<6; k++){
				printf("Voto 2° Q n° %d ", k+1);
				gets(votoStr);
				ss[i].m[j].v1q[k] = atof(votoStr);
			}
		}

	}
}

void stampa(int dim, studente ss[dim]){
	int i, j, k;
	for(i=0; i<dim; i++){
		printf("Nominativo: %s %s\n", ss[i].cognome, ss[i].nome);
		for(j=0; j<N_MATERIE; j++){
			printf("Materia: %s\n", ss[i].m[j].nome);
			printf("Voti 1° Q\n");
			for(k=0; k<6; k++){
				printf("%f ", ss[i].m[j].v1q[k]);
			}
			printf("\nVoti 2° Q\n");
			for(k=0; k<6; k++){
				printf("%f ", ss[i].m[j].v2q[k]);
			}
			printf("\n");
		}
		printf("\n\n");

	}
}


void calcolaMedie(int dim, studente ss[dim]){
	int i,j,k;
	float somma;

	for(i=0; i<dim; i++){
		for(j=0; j<N_MATERIE; j++){
			somma = 0.0;
			for(k=0; k<6; k++){
				somma = somma + ss[i].m[j].v1q[k];
			}

			for(k=0; k<6; k++){
				somma = somma + ss[i].m[j].v2q[k];
			}

			ss[i].m[j].media = somma/12;
		}
	}

}


int main(void){
	studente ss[N_STUDENTI];

	inserisci(N_STUDENTI, ss);
	stampa(N_STUDENTI, ss);
	calcolaMedie(N_STUDENTI, ss);

} 
Grazie in anticipo a chi gentilmente mi aiuterà!

9 Risposte

  • Re: Strutture

    Non credo che riceverai risposte se non posti un codice indendato usando il tastino Tag Code [</>]
    Se non usi il tag code alcune parti del codice vengono interpretate come corsivo: tutti gli i tra parentesi quadre (corsivo) sono scomparsi...
    Per ora ho solo indendato e rimesso l'indice, per far partire la compilazione, non ho controllato null'altro, conferma che ora il codice è uguale a quello che ci volevi mostrare.
    Al riguardo dell'ultima parte qual è?
    
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    #define N_STUDENTI 2
    #define N_MATERIE 2 //Italiano, Matematica
    
    
    typedef struct s_materia {
        char nome[15];
        float v1q[6];
        float v2q[6];
        float media;
    } materia;
    
    
    typedef struct s_studente {
        char cognome[20];
        char nome[20];
        materia m[N_MATERIE];
    } studente;
    
    void inserisci(int dim, studente ss[dim]){
        int i,j,k;
        char votoStr[10];
    
        //questo ciclo mi permette di
        //inserire i dati di ogni studente
        for(i=0; i<dim; i++){
            printf("Cognome: ");
            gets(ss[i].cognome);
            printf("Nome: ");
            gets(ss[i].nome);
            //inserisco i dati delle materie
            for(j=0; j<N_MATERIE; j++){
                printf("Nome materia: ");
                gets(ss[i].m[j].nome);
                for(k=0; k<6; k++){
                    printf("Voto 1° Q n° %d ", k+1);
                    gets(votoStr);
                    ss[i].m[j].v1q[k] = atof(votoStr);
                }
                for(k=0; k<6; k++){
                    printf("Voto 2° Q n° %d ", k+1);
                    gets(votoStr);
                    ss[i].m[j].v1q[k] = atof(votoStr);
                }
            }
        }
    }
    
    void stampa(int dim, studente ss[dim]){
        int i, j, k;
        for(i=0; i<dim; i++){
            printf("Nominativo: %s %s\n", ss[i].cognome, ss[i].nome);
            for(j=0; j<N_MATERIE; j++){
                printf("Materia: %s\n", ss[i].m[j].nome);
                printf("Voti 1° Q\n");
                for(k=0; k<6; k++){
                    printf("%f ", ss[i].m[j].v1q[k]);
                }
                printf("\nVoti 2° Q\n");
                for(k=0; k<6; k++){
                    printf("%f ", ss[i].m[j].v2q[k]);
                }
                printf("\n");
            }
        printf("\n\n");
        }
    }
    
    
    void calcolaMedie(int dim, studente ss[dim]){
        int i,j,k;
        float somma;
    
        for(i=0; i<dim; i++){
            for(j=0; j<N_MATERIE; j++){
                somma = 0.0;
                for(k=0; k<6; k++){
                    somma = somma + ss[i].m[j].v1q[k];
                }
    
                for(k=0; k<6; k++){
                    somma = somma + ss[i].m[j].v2q[k];
                }
                ss[i].m[j].media = somma/12;
            }
        }
    }
    
    int main(void){
        studente ss[N_STUDENTI];
    
        inserisci(N_STUDENTI, ss);
        stampa(N_STUDENTI, ss);
        calcolaMedie(N_STUDENTI, ss);
    }
    
  • Re: Strutture

    Rubik... piuttosto che suggerire tu il codice non potevi attendere che usasse i tag Code come da REGOLAMENTO (che non rispetta nessuno neanche per utilizzare un titolo adeguato e non 'strutture')?

    E comunque Clara non è possibile vedere dei tentativi di codice che affronti i due problemi per capire dove sbagli?

    O vuoi che ti si scriva il codice dell'esercizio al posto tuo?
  • Re: Strutture

    oregon ha scritto:


    Rubik... piuttosto che suggerire tu il codice non potevi attendere che usasse i tag Code come da REGOLAMENTO (che non rispetta nessuno)?
    Se ti concentri a rispondere.... o sei il moderatore?
    Il codice non l'ho neanche guardato, non so se funziona o meno, ho solo aiutato Clara517, a superare una carenza evidente del sito, che non mostra in modo evidente come si inserisce un codice, forse se il REGOLAMENTO non lo rispetta nessuno sarà scritto male? Oppure uno non si aspetta di trovare le istruzioni d'uso del sito nel regolamento?, comunque se qualcuno non ha capito, non è sbagliato aiutarli a capire!
    Non so nenche se il codice che ho postato è uguale a quello che Clara517 averbbe voluto pubblicare, per questo gli ho chiesto di controllarlo.
    Non risponderò più ai tuoi inutili post, che dalla media che ho riscontrato dovrebbero essere circa 10000.
    Invece apprezzo e parteciperò agli altri utilissimi post che ogni tanto dispensi.
  • Re: Strutture

    Non sono moderatore ma posso esprimere un parere. Non parlerei proprio di "carenza del sito" ma di carenza di lettura del regolamento. Non è che è scritto male ma che non si legge.

    Tu non sai se il codice è quello espresso da Clara e proprio per questo è inutile proporre. Non stai aiutando ma aumenti la confusione.

    Sull'inutilità dei post, lasciamo stare, incommentabile.

    Abbi la pazienza di attendere la correzione di Clara moderando la tua smania di protagonismo.
  • Re: Strutture

    Il codice non l'ho neanche guardato, non so se funziona o meno, ho solo aiutato Clara517, a superare una carenza evidente del sito, che non mostra in modo evidente come si inserisce un codice, forse se il REGOLAMENTO non lo rispetta nessuno sarà scritto male?
    Quale sarebbe la carenza evidente del sito rispetto ai tag code?
    È un forum e come in tutti i forum, selezioni il testo da formattare e clicchi sul pulsante "</>".
    Metà dei Forum presenti sul web usa questa stessa piattaforma.
    Se non sai usare i forum basati su PHPBB hai a disposizione le FAQ.
    Il regolamento è scritto male?
    @Oregon ha scritto 10000 post inutili? davvero?
  • Re: Strutture

    X @Clara517: ho formattato il codice del tuo post, adesso è più in leggibile.
  • Re: Strutture

    Toki ha scritto:


    Quale sarebbe la carenza evidente del sito rispetto ai tag code?
    È un forum e come in tutti i forum, selezioni il testo da formattare e clicchi sul pulsante "</>".
    Metà dei Forum presenti sul web usa questa stessa piattaforma.
    Se non sai usare i forum basati su PHPBB hai a disposizione le FAQ.
    Risposta data da chi le cose le sa, e non accetta che qualcuno che scrive nel forum possa essere inesperto.
    Visto che il 99% dei nuovi utenti non usa il tag code, oltre a colpevolizzarli si potrebbero anche agevolare con un tasto [codice] invece di [</>]...
    Ma oramai Clara517 sarà fuggita in altro forum, contenti voi...
    Del resto 1 domanda 1 risposta e tutte polemiche... (non iniziate da me)
  • Re: Strutture

    oregon ha scritto:


    Rubik... piuttosto che suggerire tu il codice non potevi attendere che usasse i tag Code come da REGOLAMENTO (che non rispetta nessuno neanche per utilizzare un titolo adeguato e non 'strutture')?

    E comunque Clara non è possibile vedere dei tentativi di codice che affronti i due problemi per capire dove sbagli?

    O vuoi che ti si scriva il codice dell'esercizio al posto tuo?
    Mai vista tanta maleducazione in vita mia...
    Sono nuova nel campo e volevo solo capire il meccanismo per scrivere questo programma, ma soprattutto sono nuova in questo forum e penso mi sia concesso di sbagliare. Grazie agli altri che hanno avuto pazienza e hanno cercato di aiutarmi senza insultarmi. Mi dispiace per queste persone ma non mi rivolgerò più a questo forum.
  • Re: Strutture

    Piano con certi termini. Non ti permettere di dare del maleducato a chi non conosci.

    E non sei stata 'insultata'. Rileggi bene.

    Personalmente ti ho solo invitata a leggere e rispettare il regolamento e fornire del codice da te scritto per eventualmente aiutarti a risolvere gli errori.

    Anche se dopo 4 giorni dal primo post, avrai risolto.
Devi accedere o registrarti per scrivere nel forum
9 risposte