problem z liczeniem
Ostatnio zmodyfikowano 2009-01-12 21:58
Sinoku Temat założony przez niniejszego użytkownika |
problem z liczeniem » 2009-01-12 19:37:45 Mam problem z zliczeniem tzn chce napisać program który pozwoli na wpisanie wybrana ilość liczb i ich pomnożenie dobrze działa wybieranie liczb ale potem wynik jest kosmiczny a z reszta sami luknijcie :D #include <iostream> #include <conio.h>
using namespace std; int main() { int ilosc; float skladnik; float wynik; cout << "Podaj ilosc liczb: "; cin >> ilosc; for( int i = 1; i <= ilosc; i++ ) { cout << "Podaj liczbe nr " << i << ": "; cin >> skladnik; } if( ilosc > 0 ) wynik *= skladnik; cout << "Wynik mnozenia wynosi: " << wynik; getch(); }
|
|
DejaVu |
» 2009-01-12 19:43:08 #include <iostream> #include <conio.h>
using namespace std; int main() { int ilosc; float skladnik; float wynik = 0; cout << "Podaj ilosc liczb: "; cin >> ilosc; if( ilosc > 0 ) wynik = 1; for( int i = 1; i <= ilosc; i++ ) { cout << "Podaj liczbe nr " << i << ": "; cin >> skladnik; wynik *= skladnik; } cout << "Wynik mnozenia wynosi: " << wynik; getch(); } |
|
Sinoku Temat założony przez niniejszego użytkownika |
» 2009-01-12 20:00:52 Dobra muszczu ^^ thx za tamto ale teraz mi powiedz jak zrobić tak odejmowanie i dzielenie znaczy odejmowanie robię ale liczby są cały czas - ileś tam np liczba 1 35 liczba 2 14 liczba 3 12 liczba 4 5 i wychodzi -65 :| a dzielenie taki kod #include <iostream> #include <conio.h>
using namespace std; int main() { int ilosc; float skladnik; float wynik = 0; cout << endl << "Podaj ilosc liczb: "; cin >> ilosc; if( ilosc > 0 ) wynik = 1; for( int i = 1; i <= ilosc; i++ ) { cout << "Podaj liczbe nr " << i << ": "; cin >> skladnik; wynik /= skladnik; } cout << endl << "Wynik dzielenia wynosi: " << wynik; getch(); }
|
|
DejaVu |
» 2009-01-12 20:42:53 Twoje kroki obliczeń dla mnożenia: wynik = 1; wynik*= liczba1; wynik*= liczba2; wynik*= liczba3; w rzeczywistości otrzymasz: wynik = 1; wynik = 1*liczba1; wynik = 1*liczba1*liczba2; wynik = 1*liczba1*liczba2*liczba3; W przypadku dodawania/odejmowania wykonujesz ten sam algorytm stąd masz wynik błędny. Błąd jest na samym początku. Co do dzielenia... sprawa wygląda dokładnie tak samo. Napisz sobie matematycznie rekurencyjny wzór funkcji np. mnożenia: f(1)=1; dla x=1 f(x)=f(x-1)*x; dla x>1 Dokładnie taki sam algorytm Ty masz obecnie zaimplementowany. Komputer wykona obliczenia dokładnie tak jak oprogramujesz, więc jeśli otrzymujesz złe wyniki to znaczy, że wykonałeś złe operacje matematyczne (lub wartości są zbyt duże/zbyt małe i to generuje błędy, jednak na liczbach używanych na codzień wyniki praktycznie zawsze będą prawidłowe). |
|
manfred |
» 2009-01-12 21:58:19 "Komputery nie robią tego co chcemy, a jedynie to, co im zaprogramowaliśmy". Warto do tego dodać "Bez względu na ilość czasu poświęconą na szukanie błędu zawsze jakiś w kodzie powstanie". Ogólnie programista to taki stwór, który przez 99% czasu naprawia błędy, a przez 100% czasu robi nowe. Na tym niestety ta rabota polega... |
|
« 1 » |