- 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?

