Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

problem z liczeniem

Ostatnio zmodyfikowano 2009-01-12 21:58
Autor Wiadomość
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

C/C++
#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();
}
P-3637
DejaVu
» 2009-01-12 19:43:08
C/C++
#include <iostream>
#include <conio.h>

using namespace std;
int main()
{
    int ilosc;
    float skladnik;
    float wynik = 0; //1. nie ustawiłeś początkowej wartości zmiennej wynik
    cout << "Podaj ilosc liczb: ";
    cin >> ilosc;
    if( ilosc > 0 ) wynik = 1; //3. jeśli conajmniej jedna liczba będzie wprowadzana, to początkową wartością może być wynik = 1, ponieważ i tak będziemy mnożyli dalej. Jeśli tego nie zrobimy, wynik stale będzie = 0
   
    for( int i = 1; i <= ilosc; i++ )
    {
        cout << "Podaj liczbe nr " << i << ": ";
        cin >> skladnik; //2. zmienna 'skladnik' jest jedna, więc wynik musisz odrazu obliczać lub zapamiętać sobie wszystkie wczytane wartości
        wynik *= skladnik;
    }
    cout << "Wynik mnozenia wynosi: " << wynik;
    getch();
}
P-3638
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

C/C++
#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();
}
P-3640
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).
P-3643
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...
P-18709
« 1 »
  Strona 1 z 1