• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ - Pomoże mi ktoś w tym zadaniu?

Object Storage Arubacloud
0 głosów
805 wizyt
pytanie zadane 14 listopada 2016 w C i C++ przez niezalogowany

Zadanie wygląda tak:

Uzupełnij ciało tej funkcji w taki sposób, aby:

1. zwracała wartość 1 jeżeli różnica między obiema wartościami temperatur mieści się w przedziale 1 - 2 oC

2.  zwracała wartość 2 jeżeli ta różnica mieści się w przedziale 3 - 5 oC

3.  zwracała wartość 5 jeżeli ta różnica mieści się w przedziale 6 - 10 oC

4. zwracała wartość 10 jeżeli ta różnica mieści się w przedziale 11 - 20 oC

5. zwracała wartość 20 jeżeli ta różnica jest większa niż 20 oC

6. Jeżeli obie temperatury są równe, funkcja powinna zwrócić 0.

Aktualna temperatura cieczy przekazywana jest do funkcji w parametrze temp_actual, temperatura pożądana w parametrze temp_desired.

Nie wiem jak się za to zabrać mój aktualny kod wygląda tak


int temperature( int temp_actual, int temp_desired ) 
{
    int wynik;
    
    if(temp_actual == temp_desired)
    {
        wynik = 0;
    }
    
    if (( temp_actual - temp_desired ) > 2 )
    {
        wynik = 1;
    }
    
    if (( temp_actual - temp_desired ) > 5 )
    {
        wynik = 2;
    }
    
    if (( temp_actual - temp_desired ) > 10 )
    {
        wynik = 5;
    }
    
    if (( temp_actual - temp_desired ) > 20 )
    {
        wynik = 10;
    }
    
    return wynik;
}

 

4 odpowiedzi

0 głosów
odpowiedź 14 listopada 2016 przez niezalogowany
 
Najlepsza

Dziękuje wszystkim za pomoc :D

Końcowy kod wyglada tak :)

int temperature( int temp_actual, int temp_desired ) 
{
    int wynik;
    int A = abs(temp_actual - temp_desired);
      
    if(A > 20)
    {
        wynik = 20;
    }
    else if(A > 10)
    {
        wynik = 10;
    }
    else if(A > 5)
    {
        wynik = 5;
    }
    else if(A > 2)
    {
        wynik = 2;
    }
    else if(A > 0)
    {
        wynik = 1;
    }
    else if(A == 0)
    {
        wynik = 0;
    }
    else if(A < 0)
    {
        wynik = -1;
    }
    return wynik;
}

 

+1 głos
odpowiedź 14 listopada 2016 przez lnkoc Stary wyjadacz (13,960 p.)

wyglada dobrze, ale wynik temp_actual - temp_desired moze tez byc ujemny dlatego aby zmienić go na zawsze dodatni proponuję użycie funkcji abs() opis funkcji

+1 głos
odpowiedź 14 listopada 2016 przez Knayder Nałogowiec (37,640 p.)
int temperature( int temp_actual, int temp_desired )
{
    int value = temp_actual - temp_desired;
    if(value > 20)
        return 20;
    else if(value > 10) //Tutaj może być if
        return 10;
    else if(value > 5) //Tutaj może być if
        return 5;
    else if(value > 2) //Tutaj może być if
        return 2;
    else if(value > 0)
        return 1;
    else if (value==0)
        return 0;
}

Pozdrawiam :)

komentarz 14 listopada 2016 przez Knayder Nałogowiec (37,640 p.)
Poprawiłem kod, ponieważ zrobiłem falstart i nie uwzględniłem dwóch warunków
komentarz 14 listopada 2016 przez niezalogowany

Po małej adaptacji

int temperature( int temp_actual, int temp_desired ) 
{
    int wynik;
    int A = temp_actual - temp_desired;
    
    if(A > 20)
    {
        wynik = 20;
    }
    else if(A > 10)
    {
        wynik = 10;
    }
    else if(A > 5)
    {
        wynik = 5;
    }
    else if(A > 2)
    {
        wynik = 2;
    }
    else if(A > 0)
    {
        wynik = 1;
    }
    else if(A == 0)
    {
        wynik = 0;
    }
    
    return wynik;
}

Nadal jest nie zadowolony :/

komentarz 14 listopada 2016 przez Knayder Nałogowiec (37,640 p.)
Masz na myśli te linijki które zaczynają się od FAILED?
komentarz 14 listopada 2016 przez niezalogowany
Tak
komentarz 14 listopada 2016 przez Knayder Nałogowiec (37,640 p.)

Jest tak ponieważ funkcja nie ma przypisanej akcji jeżeli wartość A jest mniejsza od zera :)
 


int temperature( int temp_actual, int temp_desired ) 
{
    int wynik;
    int A = temp_actual - temp_desired;
     
    if(A > 20)
    {
        wynik = 20;
    }
    else if(A > 10)
    {
        wynik = 10;
    }
    else if(A > 5)
    {
        wynik = 5;
    }
    else if(A > 2)
    {
        wynik = 2;
    }
    else if(A > 0)
    {
        wynik = 1;
    }
    else if(A == 0)
    {
        wynik = 0;
    }
    else if(A < 0)
    {
        wynik = -1;
    }
    return wynik;
}

Tak to powinno wyglądać żeby wszystko było poprawne. (-1 można zmienić na inną liczbę całkowitą) :)

PS. Ciekawi mnie co to za aplikacja którą pokazałeś, ta z PASSED i FAILED

komentarz 14 listopada 2016 przez niezalogowany

:/ Nadal to samo 

+1 głos
odpowiedź 14 listopada 2016 przez Sinnley Stary wyjadacz (12,810 p.)

Kod Khaydera należałoby poprawić na wypadek gdyby temp_actual bylo mniejsza od temp_desired. Funkcja zwroci wtedy ujemna liczbe, a nam zależy na różnicy, więc wartości bezwzględnej.

#include <math.h>

int temperature( int temp_actual, int temp_desired )
{
    int value = abs(temp_actual - temp_desired); // abs - wartosc bezwgledna.
    if(value > 20)
        return 20;
    else if(value > 10) //Tutaj może być if
        return 10;
    else if(value > 5) //Tutaj może być if
        return 5;
    else if(value > 2) //Tutaj może być if
        return 2;
    else if(value > 0)
        return 1;
    else if (value==0)
        return 0;
}

 

komentarz 14 listopada 2016 przez Knayder Nałogowiec (37,640 p.)
no tak :) Nie pomyślałem o różnicy większej od mniejszej tylko o różnicy actual - desired :)

Podobne pytania

0 głosów
1 odpowiedź 622 wizyt
0 głosów
2 odpowiedzi 702 wizyt
pytanie zadane 31 października 2016 w C i C++ przez niezalogowany
0 głosów
0 odpowiedzi 1,119 wizyt
pytanie zadane 11 października 2016 w Egzaminy zawodowe przez BIREXD Obywatel (1,180 p.)

92,568 zapytań

141,420 odpowiedzi

319,624 komentarzy

61,956 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...