Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Cicli media scolastica

  1. #1

    Cicli media scolastica

    Ciao a tutti, premetto che sono un principiante e ho da poco iniziato ad usare c++.
    A scuola ci hanno dato un compito che richiede di calcolare la media di 3 materie e creare un menù all'inizio. Vi allego la consegna in power point su google drive: https://drive.google.com/open?id=0B2...XYzRkJ6enh0SkE

    Io sono riuscito a fare solo questo programma , ma il prof richiede che : Il programma non fa quanto richiesto


    • "NOTA: IL PROGRAMMA PUO' CALCOLARE LA MEDIA DI UN MASSIMO DI 3 NUMERI"; non deve essere vero
    • Usi solo numeri interi
    • La media deve essere stampata e aggiornata dopo ogni inserimento (come il menu)




    #include<stdio.h>
    #include<iostream>
    using namespace std;


    main ()
    {
    int N;
    int Info;
    int Mate;
    int Italiano;
    int Media;
    int C;

    C=0;

    cout<<"DIVERTITI AD USARE IL MIO PROGRAMMA! :-) "<<endl;
    cout<<endl;
    cout<<"NOTA: IL PROGRAMMA PUO' CALCOLARE LA MEDIA DI UN MASSIMO DI 3 NUMERI";
    cout<<endl;
    cout<<endl;
    cout<<endl;
    cout<< "1) Inserire Il Voto Di Italiano"<<endl;
    cout<<endl;
    cout<< "2) Inserire Il Voto Di Matematica"<<endl;
    cout<<endl;
    cout<< "3) Inserire Il Voto Di Informatica"<<endl;
    cout<<endl;
    cout<< "4) Esci"<<endl;
    cout<<endl;
    cout<<endl;

    while (C!=3)
    {
    cout<<endl;
    cout<<"Inserire il numero della materia che voi calcolare : ";
    cin>>N;
    cout<<endl;
    if (N==1)
    {
    cout<< "2) Inserisci Il Voto Di Italiano : ";
    cout<<endl;
    cin>> Italiano;
    if (Italiano>10)
    {
    cout<< "Hai Inserito Un Numero Errato";
    cout<<endl;
    cout<<endl;
    cout<< "2) Inserisci Il Voto Di Italiano : ";
    cin>> Italiano;
    }
    else
    {
    C=C+1;
    Media=Media+Italiano;
    cout<<endl;
    }
    }
    if (N==2)
    {
    cout<< "2) Inserisci Il Voto Di Matematica : ";
    cin>> Mate;
    if (Mate>10)
    {
    cout<< "Hai Inserito Un Numero Errato";
    cout<<endl;
    cout<<endl;
    cout<< "2) Inserisci Il Voto Di Matematica : ";
    cin>> Mate;
    }
    else
    {
    C=C+1;
    Media=Media+Mate;
    cout<<endl;
    }
    }
    if (N==3)
    {
    cout<< "2) Inserisci Il Voto Di Informatica : ";
    cin>> Info;
    if (Info>10)
    {
    cout<< "Hai Inserito Un Numero Errato";
    cout<<endl;
    cout<<endl;
    cout<< "2) Inserisci Il Voto Di Informatica : ";
    cin>> Info;
    }
    else
    {
    C=C+1;
    Media=Media+Info;
    cout<<endl;
    }
    }
    if (N==4)
    {
    return 0;
    }
    if ((N>4) || (N==0))
    {
    cout<< "Grazie per aver usato il mio programma, spero ti sia piaciuto!";
    return 0;
    }
    }
    Media = Media / 3;
    cout<< "La Media Dei Voti Che Hai Inserito E'"<<Media;

    }



    In pratica non so come far stampare la media aggiornata e il menù dopo ogni inserimento... spero che qualcuno riesca ad aiutarmi

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Il testo non è chiaro, sembra che tu possa inserire un numero illimitato di voti di italiano, matematica e inglese. In questo caso non serve fare alcuna distinzione, basta sommare i voti e dividere per il numero di voti inseriti all'interno di un ciclo while.
    codice:
    #include <iostream>#include <iomanip>
    
    
    using namespace std;
    
    
    int main ()
    {
    	int n = 0;
    	double sum = 0;
    	int choise;
    	
    	while(true) {
    		cout << "Programma di Pinco Pallino" << endl;
    		cout << "   Media attuale: ";
    		if(n > 0) {
    			cout << fixed << setprecision(2) << sum/n;
    		}
    		else {
    			cout << "N/A";
    		}
    		cout << endl;
    		cout << "1) Inserisci voto di Italiano" << endl;
    		cout << "2) Inserisci voto di Matematica" << endl;
    		cout << "3) Inserisci voto di Informatica" << endl;
    		cout << "4) Esci" << endl;
    		cout << endl;
    		
    		cin >> choise;
    		if(choise == 4) {
    			break;
    		}
    		else if(choise == 1 || choise == 2 || choise == 3) {
    			cout << "Inserisci il voto: ";
    			double voto;
    			cin >> voto;
    			while(voto < 0 || voto > 10) {
    				cout << "Il voto deve essere compreso fra 0 e 10, reinserisci: ";
    				cin >> voto;
    			}
    			sum += voto;
    			n++;
    		}
    		else {
    			cout << "Scelta non valida" << endl;
    		}
    		
    		cout << endl;
    	}
    	
    	return 0;
    }
    Se invece puoi inserire un solo voto per materia la cosa si complica un po'. Questa può essere una soluzione
    codice:
    #include <iostream>
    #include <iomanip>
    
    
    #define N 3
    
    
    using namespace std;
    
    
    int main ()
    {
    	const char *materia[N] = {"Italiano", "Matematica", "Informatica"};
    	double voto[N];
    	bool flag[N];
    	for(int i = 0; i < N; i++) {
    		flag[i] = false;
    	}
    	int choise;
    	
    	while(true) {
    		cout << "Programma di Pinco Pallino" << endl;
    		cout << "   Media attuale: ";
    		
    		int n = 0;
    		double sum = 0;
    		for(int i = 0; i < N; i++) {
    			if(flag[i]) {
    				sum += voto[i];
    				n++;
    			}
    		}
    		
    		if(n > 0) {
    			cout << fixed << setprecision(2) << sum/n;
    		}
    		else {
    			cout << "N/A";
    		}
    		cout << endl;
    		for(int i = 0; i < N; i++) {
    			cout << i+1 << ") Inserisci il voto di " << materia[i] << endl;
    		}
    		cout << N+1 << ") Esci" << endl;
    		cout << endl;
    		
    		cin >> choise;
    		if(choise == N+1) {
    			break;
    		}
    		else if(choise >= 1 && choise <= N) {
    			cout << "Inserisci il voto: ";
    			cin >> voto[choise-1];
    			while(voto[choise-1] < 0 || voto[choise-1] > 10) {
    				cout << "Il voto deve essere compreso fra 0 e 10, reinserisci: ";
    				cin >> voto[choise-1];
    			}
    			flag[choise-1] = true;
    		}
    		else {
    			cout << "Scelta errata" << endl;
    		}
    		
    		cout << endl;
    	}
    	
    	return 0;
    }
    Se non comprendi qualcosa chiedi pure, ma prima di questo chiedi al tuo professore cosa vuole che facciate. Chiedegli anche degli use cases.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Grazie mille mi sei stato molto d'aiuto. Volevo chiederti a cosa serve mettere #include <iomanip> e se ne è strettamente necessario.
    Non ho capito anche perché nella prima IF hai messo cout <<fixed<< setprecision(2)


  4. #4
    Grazie mille mi sei stato molto d'aiuto. Volevo chiederti a cosa serve mettere #include <iomanip> e se ne è strettamente necessario.
    Non ho capito anche perché nella prima IF hai messo cout <<fixed<< setprecision(2)

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    #include <iomanip> serve a poter usare << fixed << setprecision(2)
    <<fixed<< setprecision(2) serve per la formattazione del numero
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.