Program 9 Program pobierający od uŜytkownika oceny, jakie

Transkrypt

Program 9 Program pobierający od uŜytkownika oceny, jakie
Program 9
Program pobierający od uŜytkownika oceny, jakie uzyskali uczniowie z pracy klasowej, a
następnie wypisujący ile wprowadzono ocen, ile procentowo poszczególnych ocen uzyskano,
oraz rysujący histogram odpowiadający wprowadzonym danym. Wprowadzone liczby nie
mogące być ocenami (mniejsze od 2 i większe od 5) mają być ignorowane; liczby nie będące
liczbami całkowitymi - zaokrąglane odpowiednio do wartości całkowitych lub
"połówkowych" (3.24 zaokrąglamy do 3.0, 3.25 do 3.5 itp).
#include<iostream>
using namespace std;
int main()
{
double ile=0;
double ocena;
double oceny[6]={2,3,3.5,4,4.5,5};
double iloscOcen[6]={0,0,0,0,0,0};
char odp;
do
{
cout << "Podaj ocene: ";
cin >> ocena;
if((2<=ocena)&&(ocena<=2.49)){ iloscOcen[0]++; ile++; }
else if ((2.5<=ocena)&&(ocena<=3.24)){ iloscOcen[1]++; ile++; }
else if((3.25<=ocena)&&(ocena<=3.74)){ iloscOcen[2]++; ile++; }
else if((3.75<=ocena)&&(ocena<=4.24)){ iloscOcen[3]++; ile++; }
else if((4.25<=ocena)&&(ocena<=4.74)){ iloscOcen[4]++; ile++;}
else if((4.75<=ocena)&&(ocena<=5)){ iloscOcen[5]++; ile++; }
cout << "Czy chcesz podac kolejna ocene? (t-tak,n-nie) ";
cin >> odp;
}
while(odp != 'n');
cout << "liczba wprowadzonych ocen: "<< ile << endl;
for(int i=0;i<6;i++)
{
if(iloscOcen[i]!=0){ cout<<oceny[i]<<":
"<<(iloscOcen[i]*100)/ile<<"%\n"; }
}
cout << "histogram: "<<endl;
for(int i=0;i<6;i++)
{
if(iloscOcen[i]!=0)
{
cout<<oceny[i]<<" ";
for(int j=0;j<iloscOcen[i];j++) cout<<"*";
cout<<endl;
}
}
system("PAUSE");
}
Omówienie programu
Definicja zmiennej typu double o nazwie ile i nadanie jej wartości 0:
double ile=0;
Wartość zmiennej ile będzie zwiększana o 1 za kaŜdym razem gdy zostanie wprowadzona
ocena.
Definicja zmiennej typu double o nazwie ocena:
double ocena;
Definicja sześcioelementowej tablicy typu double o nazwie oceny:
double oceny[6]={2,3,3.5,4,4.5,5};
Tablica oceny zawiera moŜliwe oceny.
Definicja sześcioelementowej tablicy typu double o nazwie iloscOcen:
double iloscOcen[6]={0,0,0,0,0,0};
W tablicy iloscOcen będzie zawierała informację ile i jakich ocen wprowadzono:
element
element
element
element
element
element
iloscOcen[0]
iloscOcen[1]
iloscOcen[2]
iloscOcen[3]
iloscOcen[4]
iloscOcen[5]
będzie zawierał liczbę wprowadzonych 2,
będzie zawierał liczbę wprowadzonych 3,
będzie zawierał liczbę wprowadzonych 3.5,
będzie zawierał liczbę wprowadzonych 4,
będzie zawierał liczbę wprowadzonych 4.5,
będzie zawierał liczbę wprowadzonych 5,
Definicja zmiennej typu char o nazwie odp:
char odp;
Następnie mamy w programie następującą pętle:
do
{
cout << "Podaj ocene: ";
cin >> ocena;
if((2<=ocena)&&(ocena<=2.49)){ iloscOcen[0]++; ile++; }
else
ile++; }
else
ile++; }
else
ile++; }
else
ile++;}
else
}
if ((2.5<=ocena)&&(ocena<=3.24)){ iloscOcen[1]++;
if((3.25<=ocena)&&(ocena<=3.74)){ iloscOcen[2]++;
if((3.75<=ocena)&&(ocena<=4.24)){ iloscOcen[3]++;
if((4.25<=ocena)&&(ocena<=4.74)){ iloscOcen[4]++;
if((4.75<=ocena)&&(ocena<=5)){ iloscOcen[5]++; ile++;
cout << "Czy chcesz podac kolejna ocene? (n-nie) ";
cin >> odp;
}
while(odp != 'n');
Pętla ta „jest odpowiedzialna” za wprowadzenie ocen. Na początku pojawia się na ekranie
komunikat Podaj ocene:
cout << "Podaj ocene: ";
Wprowadzoną z klawiatury ocenę zapisujemy w zmiennej ocena:
cin >> ocena;
Następnie mamy instrukcję warunkową postaci:
if((2<=ocena)&&(ocena<=2.49)){ iloscOcen[0]++; ile++; }
else if ((2.5<=ocena)&&(ocena<=3.24)){ iloscOcen[1]++;
ile++; }
else if((3.25<=ocena)&&(ocena<=3.74)){ iloscOcen[2]++;
ile++; }
else if((3.75<=ocena)&&(ocena<=4.24)){ iloscOcen[3]++;
ile++; }
else if((4.25<=ocena)&&(ocena<=4.74)){ iloscOcen[4]++;
ile++;}
else if((4.75<=ocena)&&(ocena<=5)){ iloscOcen[5]++; ile++;
}
Sprawdzamy wartość zmiennej ocena. Na początku sprawdzamy warunek:
if((2<=ocena)&&(ocena<=2.49))
Warunek jest spełniony wtedy gdy wartość zmiennej ocena jest większa równa od 2
(2<=ocena) i jednocześnie (&& - operator koniunkcji) jest mniejsza równa od 2.49.
Zgodnie z załoŜeniami programu (patrz opis programu na pierwszej stronie) jeŜeli wartość
wprowadzona z klawiatury (i zapisana w zmiennej ocena) jest zawarta w takim przedziale
wówczas interpretujemy ją jako ocenę 2.
A zatem ilość ocen 2 musimy zwiększyć o 1 czyli mamy:
iloscOcen[0]++;
Ponadto zwiększamy o 1 ilość wprowadzonych ocen:
ile++;
Warunki dla pozostałych ocen są analogiczne.
Po sprawdzeniu jaką ocena została wprowadzona na ekranie jest wypisany komunikat Czy
chcesz podac kolejna ocene? (n-nie):
cout << "Czy chcesz podac kolejna ocene? (n-nie)";
Następnie wprowadzamy literę z klawiatury i zapisujemy ją w zmiennej odp:
cin >> odp;
JeŜeli wprowadzona litera to ‘n’ pętla zostaje przerwana:
while(odp != 'n');
Następnie na ekranie wypisana jest informacja ile ocen wprowadzono:
cout << "liczba wprowadzonych ocen: "<< ile << endl;
Dalej mamy w programie następującą pętle for:
for(int i=0;i<6;i++)
{
if(iloscOcen[i]!=0){ cout<<oceny[i]<<":
"<<(iloscOcen[i]*100)/ile<<"%\n"; }
}
Pętla ta ma za zadanie wypisanie ile procentowo poszczególnych ocen uzyskano. Nie
wypisywane są przy tym informacja o ocenach, których nie uzyskano. Czyli na początku
sprawdzamy czy liczba wystąpień danej oceny (czyli iloscOcen[i]) jest róŜna od zera
(i=0 to ocena 2, i=1 to ocena 3, i=2 to ocena 3.5,…, i=5 to ocena 5):
if(iloscOcen[i]!=0)
{
cout<<oceny[i]<<":"
<<(iloscOcen[i]*100)/ile<<"%\n";
}
JeŜeli liczba wystąpień np. oceny 4 jest róŜna od zera tzn. spełniony jest warunek:
iloscOcen[3]!=0
wówczas wypisywana jest ocena 4 (czyli oceny[3]- patrz definicje tablicy oceny):
cout<<oceny[i]
Następnie w tej samej linii jest wypisywany dwukropek:
<<":"
oraz informacja ile procentowo uzyskano ocen 4:
<<(iloscOcen[i]*100)/ile<<"%\n";
Podobnie dla pozostałych ocen.
Następnie wypisywany jest na ekran komunikat:
cout << "histogram: "<<endl;
Następnie mamy pętle for:
for(int i=0;i<6;i++)
{
if(iloscOcen[i]!=0)
{
cout<<oceny[i]<<" ";
for(int j=0;j<iloscOcen[i];j++) cout<<"*";
cout<<endl;
}
}
Pętla ta jest odpowiedzialna za narysowanie histogramu pokazującego ile poszczególnych
ocen wprowadzono (jedna ocena - *).
Instrukcja:
for(int j=0;j<iloscOcen[i];j++) cout<<"*";
jest odpowiedzialna za wypisanie na ekran tylu gwiazdek ile ocen uzyskano. Np. jeŜeli
uzyskano cztery oceny 3 wówczas:
iloscOcen[1]=3
i na ekran będą wypisane 3 gwiazdki *.