Uso delle Strutture/Richiamare una funzione

di il
4 risposte

Uso delle Strutture/Richiamare una funzione


#include <stdio.h>
#include <stdlib.h>

#define N 3
/* 

Si scriva un programma in linguaggio C che tramite:

la funzione leggi(), legga a terminale i dati di N corsi (con N definito come la costante 3) costituiti da NomeCorso, NomeDocente, VotoMedio, e li inserisca in un vettore V;
determini, con la funzione piu_facile(), quale tra i corsi ha il voto medio più alto e stampi il nome di tale corso a terminale.

*/

struct co
{
	
	char NomeCorso[30];
	char NomeDocente[30];
	int VotoMedio;
		
};
typedef struct leggi Corso;


void leggi(int n, struct co vet[]);

int pfacile(int n, struct co vet[]);

main() 
{
	
	int i;
	
	struct co V[N];                           
	
	leggi (N, V);
	
	
	for(i=0;i<2;i++)
	{	
		printf ("%s %s", V[i].NomeCorso,V[i].NomeDocente);	
	}
	
	i = pfacile (N, V);
	
	printf ("%d", V[i].NomeCorso);
	
		
}

void leggi(int n, struct co vet[])

{	
	int i;

	for(i=0;i<3;i++)
	{	
		printf("\nNome Corso:\t", vet[i].NomeCorso);
		scanf("%s", &vet[i].NomeCorso);	
		
		printf ("Nome Docente:\t", vet[i].NomeDocente);
		scanf("%s", &vet[i].NomeDocente);
		
		printf ("Voto Medio:\t", vet[i].VotoMedio);
		scanf ("%s", &vet[i].VotoMedio);	
		
		
	}
}


int pfacile(int n, struct co vet[])

{
	int i,max;
	for (i=0;i<3;i++)
	{
	if ((vet[i].VotoMedio) > (vet[max].VotoMedio)) max = i;	  
    }
    return max;
}

Il problema in questo codice è che quando lo esegui mi fa sì scegliere tutti i 3/4 relativi corsi, nomi docenti e voti. Il problema è che nel risultato mi printa il corso più facile, cioè quello col voto più alto. Poi subito dopo il corso a metà, cioè quello a difficoltà media seguito da una serie di numeri. Perchè? Dov'è l'errore?:/

4 Risposte

  • Re: Uso delle Strutture/Richiamare una funzione

    Ma dov'è l'errore .... cosa? Non ho capito nulla nella descrizione che hai fatto ... rileggila ...
  • Re: Uso delle Strutture/Richiamare una funzione

    oregon ha scritto:


    Ma dov'è l'errore .... cosa? Non ho capito nulla nella descrizione che hai fatto ... rileggila ...
    Allora, cercherò di spiegarmi meglio. Se non sono stato chiaro ti chiedo scusa.
    L'esercizio mi chiede di realizzare un programma in cui devo inserire tre corso, con i rispettivi docenti più il voto medio di ogni corso.
    Es. Corso : matematica Docente : Tizio VotoMedio : 23
    Dopo di questo il programma deve valutare il VotoMedio di ogni corso e decidere qual è quello più alto.
    Il Corso col voto più alto sarà il corso più facile.
    Quando però eseguo queste operazioni, inserisco tutti i dati, nell'opzione "Corso più facile" (se così lo possiamo chiamare), oltre a comparirmi il corso col voto più alto, mi printa anche il corso successivo, seguito da numeri a casaccio

    Es.
    Corso più facile : Matematica - Tizio - 24Italiano - Caio342423
    Una cosa del genere.
    Non capisco il perchè è così...
  • Re: Uso delle Strutture/Richiamare una funzione

    Tutti gli errori

    1) usa sempre la costante N e non 2 o 3 nei for
    2) l'ultimo printf nel main è %s e non %d
    3) nella funzione leggi l'ultima scanf è %d e non %s
    4) nella funzione pcfacile la variabile max va inizializzata con max=0

    Tutte cose semplici, che denotano poca attenzione ...
  • Re: Uso delle Strutture/Richiamare una funzione

    oregon ha scritto:


    Tutti gli errori

    1) usa sempre la costante N e non 2 o 3 nei for
    2) l'ultimo printf nel main è %s e non %d
    3) nella funzione leggi l'ultima scanf è %d e non %s
    4) nella funzione pcfacile la variabile max va inizializzata con max=0

    Tutte cose semplici, che denotano poca attenzione ...
    Ti ringrazio!^^
Devi accedere o registrarti per scrivere nel forum
4 risposte