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

Zadanie popraw błędy C++

Object Storage Arubacloud
0 głosów
1,887 wizyt
pytanie zadane 29 listopada 2018 w C i C++ przez niezalogowany

Mam zadanie z C++ i dłubie przy nim od dawna 

Zadanie brzmi następująco

Zadanie:
jedna z funkcji obrabiarki numerycznej powinna sprawdzać czy obrabiany element wykonał 1/4 obrotu, po czym:
1. jeżeli ten warunek jest spełniony: 
- przypisać zmiennej distancewartość 5;
- wartość zmiennej total_distance zwiększyć o wartość zmiennej distance 
funkcja powinna zwrócić wartość zmiennej total_distance;
2. jeżeli warunek nie jest spełniony zmienna distancepowinna przyjąć wartość 0 i funkcja powinna zwrócić tę wartość. 
Aktualny kąt obrotu w stopniach jest przekazywany do funkcji przez parametr rotation_angle. 
Popraw błędy w funkcji tak, aby działała prawidłowo.

A kod do poprawienia tak

int move_tool(int rotation_angle, int total_distance)
{
   float distance = 0;
   if ( !rotation_angle % 45 );
   {
        distance = 5;
        total_distance *= distance;
   }
   return distance;
}

Ktoś coś?

1 odpowiedź

0 głosów
odpowiedź 29 listopada 2018 przez PanRik Gaduła (4,510 p.)
if ( !rotation_angle % 45 );

1. Po co ten średnik na końcu?
2. Warunek wygląda teraz w ten sposób:
    jeżeli -> negacja(rotation_angle) reszty z dzielenia 45 jest prawdą. Podpowiadam , brakuje gdzieś nawiasu.

- wartość zmiennej total_distance zwiększyć o wartość zmiennej distance 

Nie rozumiem trochę tego, jeżeli distance ustawiamy na 5 zawsze jeżeli warunek jest prawdziwy, to zawsze total_distance, będzie zwiększane o 5.
 

total_distance *= distance;

No to chyba wiadomo, że jak zwiększyć to nie poprzez mnożenie...

funkcja powinna zwrócić wartość zmiennej total_distance; 

return total_distance;

To chyba też wiadomo.

Co do całego drugiego podpunktu to brakuje Ci poprostu else , gdzie będzie zwracał distance, które jest równe 0

komentarz 30 listopada 2018 przez niezalogowany

Nie zdał testów 

Nie do końca rozumiem co mam w IF spriorytetyzować 

komentarz 30 listopada 2018 przez PanRik Gaduła (4,510 p.)
	
if ( !rotation_angle % 45 );

Mamy pierwszeństwo operatorów. Krok po kroku co się dzieje:
Przyjmijmy, że rotation_angle = 45 , czyli chcemy aby warunek był prawdziwy. Dlaczego w tym wypadku nie jest prawdziwy?
Jak sprawdzany jest warunek:
1. negacja(rotation_angle) -> Czyli negacja(45) -> Czyli 0
2. 0 % 45 -> Czyli 0
3. Warunek jest fałszywy
Teraz musi Ci się udać ^^

Podobne pytania

+1 głos
2 odpowiedzi 178 wizyt
pytanie zadane 21 kwietnia 2015 w C i C++ przez Mjollnir951 Użytkownik (770 p.)
0 głosów
2 odpowiedzi 398 wizyt
pytanie zadane 6 sierpnia 2015 w PHP przez Wiiiciu Obywatel (1,090 p.)
0 głosów
1 odpowiedź 121 wizyt
pytanie zadane 24 maja 2016 w C i C++ przez Matt987 Użytkownik (800 p.)

92,626 zapytań

141,486 odpowiedzi

319,844 komentarzy

62,009 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!

...