- harmoniczną
- geometryczną
na 2 sposoby:
- dla z góry określonej liczby elementów (podaje użytkownik z klawiatury);
- dla liczby elementów takiej aż użytkownik nie naciśnie zera.
Zapętlone menu, 4 funkcje, wymuszenie dzielenia rzeczywistego, casting i parę innych bajerów.
Binary: http://odsiebie.com/pokaz/2034635---8d6d.html
Source:
Kod: Zaznacz cały
#include <iostream>
#include <cmath>
using namespace std;
double srednia_harmoniczna_n(void);
double srednia_harmoniczna_zero(void);
double srednia_geometryczna_n(void);
double srednia_geometryczna_zero(void);
//******************************************************
int main()
{
int wybor,dalej;
while(1)
{
system("cls");
cout << "Wybierz jedna z czterech opcji: "
<< "\n1. Srednia harmoniczna z n wyrazow"
<< "\n2. Srednia harmoniczna liczona do czasu wprowadzenia 0"
<< "\n3. Srednia geometryczna z n wyrazow"
<< "\n4. Srednia geometryczna liczona do czasu wprowadzenia 0\n"
<< "Twoj wybor: ";
cin >> wybor;
switch(wybor)
{
case 1:
{
cout << srednia_harmoniczna_n() << endl;
break;
}
case 2:
{
cout << srednia_harmoniczna_zero() << endl;
break;
}
case 3:
{
cout << srednia_geometryczna_n() << endl;
break;
}
case 4:
{
cout << srednia_geometryczna_zero() << endl;
break;
}
}
cout << "Czy chcesz dalej liczyc? Tak=1";
cin >> dalej;
if (dalej!=1) break;
}
return 0;
}
//*******************************************************
double srednia_harmoniczna_zero(void)
{
int i=1;
double wynik=0, liczba, liczba2=1, suma=0;
while(liczba2!=0)
{
cout << "Podaj liczbe nr " << (i++) << ": ";
cin >> liczba;
liczba2=int(liczba);
if(liczba)
{
liczba=1./liczba;
suma=suma+liczba;
}
}
cout << "Srednia z tych " << i-2 << " liczb wynosi: ";
wynik=(i-2)/suma;
return wynik;
}
//**********************************************************
double srednia_harmoniczna_n(void)
{
int n;
double wynik=0, liczba, suma=0;
cout << "Z ilu liczb chcesz policzyc srednia harmoniczna: ";
cin >> n;
for(int i=0; i<n; i++)
{
cout << "Podaj liczbe nr " << i+1 << ": ";
cin >> liczba;
liczba=1./liczba;
suma=suma+liczba;
}
cout << "Srednia z tych " << n << " liczb wynosi: ";
wynik=n/suma;
return wynik;
}
//**********************************************************
double srednia_geometryczna_n(void)
{
int n;
double wynik=0, liczba, iloczyn=1;
cout << "Z ilu liczb chcesz policzyc srednia geometryczna: ";
cin >> n;
for(int i=0; i<n; i++)
{
cout << "Podaj liczbe nr " << i+1 << ": ";
cin >> liczba;
iloczyn=iloczyn*liczba;
}
cout << "Srednia z tych " << n << " liczb wynosi: ";
cout << pow(iloczyn,(1./n));
return wynik;
}
//**********************************************************
double srednia_geometryczna_zero(void)
{
int i=1;
double wynik=0, liczba, liczba2=1, iloczyn=1;
while(liczba2!=0)
{
cout << "Podaj liczbe nr " << (i++) << ": ";
cin >> liczba;
liczba2=int(liczba);
if(liczba)
{
iloczyn=iloczyn*liczba;
}
}
cout << "Srednia z tych " << i-2 << " liczb wynosi: ";
wynik=pow(iloczyn,(1./(i-2)));
return wynik;
}
Aha i mam wątpliwość do tego kodu: jak dam w switchu default: continue, to mi zapętla w nieskończoność i pomimo cin >> wybor nie zatrzymuje się aby odczytać wartość z klawiatury. Dlaczego tak się dzieje?