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

Miejsca po przecinku, ale nie taki problem jak zawsze, lecz odwrotnie.

Ostatnio zmodyfikowano 2011-02-06 18:52
Autor Wiadomość
Krump
Temat założony przez niniejszego użytkownika
Miejsca po przecinku, ale nie taki problem jak zawsze, lecz odwrotnie.
» 2011-02-06 15:18:43
Znowu tępy problem xD

mam zmienne typu double i podaje ich wartości całkowite, po czym daje takie dzielenie:

e = c / d

po czym wynik z: 14 / 3
wychodzi: 4.5
a powinien: 4.666666666666666666666666666666666+E12 czy jakoś tak końcówka.

Pytanie, jak zrobić żeby mi pokazywało to co powinno a nie zaokrąglenie do połówek?
P-27883
pekfos
» 2011-02-06 15:24:44
podaj typy tych zmiennych.
P-27884
Krump
Temat założony przez niniejszego użytkownika
» 2011-02-06 15:27:43
no pisze wyżej, wszystkie są double

PS. Jak zmienne są typu float, czyli zmienne przecinkowe to mi zaokrągla do całkowitych ;/
P-27885
pekfos
» 2011-02-06 15:32:16
no to daj kod. gdzieś musi być błąd.
P-27886
Krump
Temat założony przez niniejszego użytkownika
» 2011-02-06 15:35:00
C/C++
// Pamiętaj poprawić pętle i if'a dla yeti

#include "stdafx.h"
#include <iostream>

using namespace std;

int main()
{
    int a, d;
    double b, c, e;
    setlocale( LC_ALL, "" );
    do
    {
        //do
        //{
        system( "cls" );
        d++;
        cout << "Aktualnie program policzy średnią z " << d - 1 << " liczb." << endl << endl
        << "Jeśli chcesz dodać liczbę wpisz 1." << endl
        << "Jeśli chcesz zakończyć wpisz 2." << endl;
        cin >> a;
        if( a == 1 )
        {
            cout << "Podaj liczbe do wyliczenia średniej: ";
            cin >> b;
        }
        else
        {
            /*if(a != 2) // Tego if'a trzeba poprawić razem z pętlą
            {
            cout << endl << "Ehem... Miałeś wpisać albo 1 albo 2. Innych wartości nie przyjmuję." << endl;
            system("pause");
            }
            else
            {*/
            cout << endl << "Teraz program podliczy średnią z " << d - 1 << " liczb." << endl;
            //}
        }
        c = c + b;
        //}
        //while(a != 1 || a != 2);
    }
    while( a == 1 );
   
    e = c / d;
    cout << endl << "\Średnia z tych liczb wynosi: " << e << endl << endl;
    system( "pause" );
    return 0;
}

PS. Co błędu nie ma xD
P-27887
pekfos
» 2011-02-06 15:50:38
a gdzie inicjalizacja d?
P-27888
Krump
Temat założony przez niniejszego użytkownika
» 2011-02-06 15:53:01
dobrze jest, ma być int, żeby liczył 1, 2, 3...

Chyba ze programowi różnica jak dzieli double przez int, czekaj naniosę poprawken i sprawdzę.

Ale robiłem wcześniej wszystkie double i było to samo ;/
P-27889
pekfos
» 2011-02-06 15:53:55
wiesz co to inicjalizacja?

spróbuj
cout.precision( 10 );
P-27890
« 1 » 2 3 4
  Strona 1 z 4 Następna strona