Pokaż wyniki 1 do 7 z 7

Temat: dzielenie z resztą w c++ - problem

  1. #1
    rcx
    rcx jest offline
    Zarejestrowany
    Jan 2008
    Postów
    13

    Domyślnie dzielenie z resztą w c++ - problem

    Witam. Dopiero się uczę więc proszę się nie śmiać
    Zastanawia mnie, dlaczego reszta z dzielenia ( x%y ) nie działa w typie zmiennych float i double (error: invalid operands of types `float' and `int' to binary `operator%'). Mam za zadanie napisać program, który będzie obliczał wynik ze wzoru z dokładnością do dwóch miejsc po kropce i nie wiem za bardzo jak to zrobić, a nic nie mogę znaleźć. Piszę w CodeBlocks jeśli ma to jakieś znaczenie. Pomożecie ?

  2. #2
    Avatar rafal44
    rafal44 jest offline logout
    Zarejestrowany
    Dec 2007
    Postów
    291

    Domyślnie

    Operatora reszty z dzielenia można używać na zmiennych całkowitoliczbowych(int). Gdy jedna ze zmiennych jest zmiennoprzecinkowa to wynik będzie zmiennoprzecinkowy, dlatego % nie działa. To że piszecz w Code::Blocks nie ma znaczenia.
    "a imię jego będzie czterdzieści i cztery"
    A. Mickiewicz Dziady cz. III

  3. #3
    rcx
    rcx jest offline
    Zarejestrowany
    Jan 2008
    Postów
    13

    Domyślnie

    W takim razie co wprowadzić zamiast % żeby to ładnie działało ?

  4. #4
    Avatar rafal44
    rafal44 jest offline logout
    Zarejestrowany
    Dec 2007
    Postów
    291

    Domyślnie

    Nie wiem co ma działać. Zapodaj trochę kodu, treść zadania.
    "a imię jego będzie czterdzieści i cztery"
    A. Mickiewicz Dziady cz. III

  5. #5
    rcx
    rcx jest offline
    Zarejestrowany
    Jan 2008
    Postów
    13

    Domyślnie

    spoko. Więc zadanie:
    Drzewo mające H metrów wysokości zostało złamane przez wiatr. Wierzchołek dotknął ziemi w odległości D metrów od podstawy pnia. Na jakiej wysokości się złamało.
    I teraz, podane jest, że:
    W jednym wierszu standardowego wejścia zapisano dwie wartości całkowite
    H (5<=H=2000000) i D (2<=D<=1999999) oddzielone spacją.
    W jednym wierszu standardowego wyjścia zapisz na jakiej wysokości w metrach nad ziemią drzewo zostało złamane. Wynik zapisz z dokładnością do dwóch miejsc po kropce.
    Napisałem jak na razie coś takiego:
    Kod:
    #include<iostream>
    #include<cmath>
    
    using namespace std;
    
    int main()
    {
       int H,D;
       float a,b,c,d;
       
       cout<<"Podaj wysokosc oraz odleglosc wierzcholka od podstawy drzewa po zlamaniu \n";
       cin>>H>>D;
    
       if(5<=H<=2000000&&2<=D<=1999999&&H>D)
       {
           a=(H/2)+((D*D)/(2*H));
           b=H-a;
    
           
           cout<<"drzewo zlamalo sie na wysokosci "<<b<<"\n";
          
       }
       else
       {
           cout<<"zle dane \n";
       }
    
    
    system("pause");
    }
    Program działa, ale nie wiem co zrobić z tą wartością, która ma być wyświetlona po kropce. Muszę coś dopisać w tym wzorze z tą resztą, ale coś mi to nie idzie...
    Ostatnio edytowane przez rcx : 10-13-2008 - 20:49

  6. #6
    Zarejestrowany
    Jul 2008
    Postów
    4

    Domyślnie

    #include <iostream>
    #include <cmath>
    #include <iomanip>
    using namespace std;

    int main()
    {
    int H,D;
    float a,b,c,d;
    cout<<"Podaj wysokosc oraz odleglosc wierzcholka od podstawy drzewa po zlamaniu \n";
    cin>>H>>D;

    if(5<=H<=2000000&&2<=D<=1999999&&H>D)
    {
    a=(H/2.0)+((D*D)/(2.0*H)); // tutaj zmiana
    b=H-a;


    cout<<"drzewo zlamalo sie na wysokosci "<< setprecision(3) <<b<<"\n"; // tutaj zmiana

    }
    else
    {
    cout<<"zle dane \n";
    }


    system("pause");
    }

    Zmieniłem 2 linijki:
    a=(H/2.0)+((D*D)/(2.0*H));
    cout<<"drzewo zlamalo sie na wysokosci "<< setprecision(3) <<b<<"\n";

  7. #7
    rcx
    rcx jest offline
    Zarejestrowany
    Jan 2008
    Postów
    13

    Domyślnie

    Oo, dzięki stary
    Mógłbym cię tylko prosić o wyjaśnienie co dokładnie robi 'setprecision(3)' ?
    I co trzeba by zrobić, żeby przy liczbach całkowitych w wyniku dopisywał zera (np. kiedy wynikiem jest 12, żeby pisał 12.00 ) ?

    EDIT:

    Ok znalazłem ;D
    Inny sposób to
    Kod:
    #include<iomanip> 
    .........................
    printf("%.2f\n",b);
    Teraz wszytsko działa jak należy. Dzięki za pomoc
    Ostatnio edytowane przez rcx : 10-18-2008 - 18:00

Podobne wątki

  1. PHP i obliczenia(dzielenie)
    By 4ndr1u in forum Newbie - dla początkujących!
    Odpowiedzi: 2
    Autor: 09-08-2008, 11:55

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj