Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

[C++] Średnia na 4 fronty

Awatar użytkownika
Darlington
-
-
Posty:574
Rejestracja:12 lis 2007, o 18:18
Lokalizacja:stąd!
[C++] Średnia na 4 fronty

Postautor: Darlington » 3 kwie 2009, o 00:01

Program liczy 2 rodzaje średniej:
- 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; }
Proszę o komentarze, krytykę i wytknięcie błędów o ile zauważycie. :)

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?

atelszewski
-
-
Posty:3
Rejestracja:4 kwie 2009, o 22:55
Lokalizacja:Banie

Postautor: atelszewski » 4 kwie 2009, o 23:07

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.
Napisz kod, który nie chce działać (włączając while i switch), wtedy może uda się coś wymyślić.

Wróć do „PLD/FPGA i inne zagadnienia techniki cyfrowej”

Kto jest online

Użytkownicy przeglądający to forum: Google [Bot] i 15 gości