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

Poprawna forma wykonania zadania?

Object Storage Arubacloud
0 głosów
469 wizyt
pytanie zadane 25 lipca 2022 w C i C++ przez Wiktor Kiślak Użytkownik (610 p.)

W toku nauczania wracam z kolejnym pytaniem:

Otóż wykonuje zadanie o treści:

Napisz krótki program, który poprosi o podanie wzrostu w centymetrach, a następnie przekonwertuj ten wzrost na stopy i cale (1 cal to 30,48 cm). Niech program za pomocą podkreślenia odróżnia rodzaj odpowiedzi. Użyj stałej symbolicznej const, aby zapisać współczynnik konwersji.

Pomijamy fakt, że podana jednostka jest błędna 1 stopa to 30,48  a cal to 1/12 stopy.

O to konkretne zadanie ktoś już pytał w 2017r. odpowiedź co prawda została udzielona, ale porównałem sobie całość z moim kodem, który jest znacznie krótszy i zacząłem się zastanawiać czy może coś zrobiłem nie tak. 

https://forum.pasja-informatyki.pl/239578/ocena-kodu-c

Wprowadziłem kod podany pod linkiem do kompilatora i wyrzuca on identyczne dane jak moje ale ilość tekstu jest znacznie mniejsza.

#include<iostream>

using namespace std;

main()

{

  cout << "Podaj swoj wzrost w centymetrach:"; 
  int centymetry;
  cin >> centymetry;

  const double stopa = 30.48;  // 1 stopa =12 cali
  const double cal = 30.48 / 12 ;


  cout << "Sprawdzam ile wynosi on w stopach i calach." << endl;
  cout << "Masz: " <<  centymetry / stopa << " stop, lub " << centymetry / cal << " cali."  << endl; 

}

Rozumiem, że zadanie ma mnie oswoić z używaniem stałej symbolicznej const. Brakuje mi w książce trochę tego, że autor nie podaje przykładowego rozwiązania, dzięki czemu miałbym pewność, że zadanie zostało wykonane zgodnie ze "sztuką" 

Dzięki za wszelkie uwagi. wink

komentarz 25 lipca 2022 przez VBService Ekspert (253,340 p.)

Rozumiem, że zadanie ma mnie oswoić z używaniem stałej symbolicznej const.

warto tu też wspomnieć o:

1
komentarz 25 lipca 2022 przez Whiskey_Taster Pasjonat (15,610 p.)

Najlepiej odstawić Pratę i szukać wiedzy w nowszych źródłach, chociażby tutaj. Od tego czasu wyszło trochę nowych standardów, a więc i nowych rzeczy, o których się w Pracie nie dowiesz. 

1
komentarz 25 lipca 2022 przez Wiktor Kiślak Użytkownik (610 p.)

Whiskey_Taster zerknę na podesłany link.

 

 

1 odpowiedź

+1 głos
odpowiedź 25 lipca 2022 przez SzkolnyAdmin Szeryf (86,360 p.)
Wzrost w formacie "anglosaskim" podajemy raczej jako np. 6 stóp i 3 cale, a nie 6,25 stopy lub 75 cali. Najpierw zatem dzielenie całkowite (wynik jest liczbą całkowitą) wzrostu przez stałą stopa, następnie dzielenie pozostałości przez stałą cale (tu chyba może być część dziesiętna, ale można też zaokrąglić wynik do liczby całkowitej). Lub prościej: liczysz liczbę cali, a potem dzielisz przez 12 i masz liczbę stóp, a reszta z dzielenia to cale.
komentarz 25 lipca 2022 przez Wiktor Kiślak Użytkownik (610 p.)
#include<iostream>

using namespace std;

main()

{

  cout << "Podaj swoj wzrost w centymetrach:"; 
  int centymetry;
  cin >> centymetry;



  const double stopa = 30.48;  // 1 stopa =12 cali
  const double cal = 30.48 / 12 ; // 1 stopa = 30,48 cm

  int wynik_stopa = centymetry / stopa ; 
  int w_na_cal = centymetry / cal ;

  int wynik_cale = (wynik_stopa * 12);
  int wynik_cale2  = w_na_cal - (wynik_stopa * 12);

  cout << "Masz: " << wynik_stopa << " stop, oraz " << wynik_cale2  << " cali." << endl; ;
  
  



  

Odniosłem się do uwag, które mi naświetliłeś, z czego powstał powyższy kod, taka forma jest odpowiednią?

komentarz 25 lipca 2022 przez VBService Ekspert (253,340 p.)
edycja 25 lipca 2022 przez VBService

Obliczasz wynik_cale i nie "używasz" go. wink

#include<iostream>
 
using namespace std;
 
int main() 
{ 
  cout << "Podaj swoj wzrost w centymetrach:"; 
  int centymetry;
  cin >> centymetry; 
 
  const double stopa = 30.48;  // 1 stopa =12 cali
  const double cal = 30.48 / 12 ; // 1 stopa = 30,48 cm
 
  int wynik_stopa = centymetry / stopa ; 
  int w_na_cal = centymetry / cal ;
 
  int wynik_cale = (wynik_stopa * 12);
  int wynik_cale2  = w_na_cal - (wynik_stopa * 12);
 
  cout << "Masz: " << wynik_stopa << " stop, oraz " << wynik_cale2  << " cali." << endl;

  return 0;
}

 

Twój kod zapisałbym np. tak

#include <iostream>
 
using namespace std;
 
int main()
{
  cout << "Podaj swoj wzrost w centymetrach: "; 
  int centymetry;
  cin >> centymetry;
 
  const double stopa = 30.48;
  const double   cal = stopa / 12;
 
  int wynik_stopa = centymetry / stopa; 
  
  cout << "Masz: " << wynik_stopa << " stop, oraz "
       << (int)((centymetry / cal) - (wynik_stopa * 12)) << " cali" << endl;
  
  return 0;
}

 

lub cale z większą "precyzją"

#include <iostream>
 
using namespace std;
 
int main()
{
  cout << "Podaj swoj wzrost w centymetrach: "; 
  int centymetry;
  cin >> centymetry;
 
  const double stopa = 30.48;
  const double   cal = stopa / 12;
 
  int wynik_stopa = centymetry / stopa; 
  
  cout << "Masz: " << wynik_stopa << " stop, oraz ";
  printf("%.1lf cali", ((centymetry / cal) - (wynik_stopa * 12)));
  
  return 0;
}

 

1
komentarz 26 lipca 2022 przez Wiktor Kiślak Użytkownik (610 p.)
Na pewno zajrzę jeszcze do kodu w późniejszym czasie, żeby na świeżo rzucić okiem, czy mogę go "napisać" lepiej. Na ten moment wydaje mi się, że najważniejsze jest dojście do sedna zadania, używając do tego zagadnień z danego rozdziału.

Dziękuje wszystkim za wypowiedzi, które naprowadziły mnie na właściwą drogę odnośnie wykonania zadania.

Podobne pytania

0 głosów
1 odpowiedź 227 wizyt
pytanie zadane 20 września 2022 w C i C++ przez MrMock Bywalec (2,890 p.)
0 głosów
1 odpowiedź 154 wizyt
pytanie zadane 15 lipca 2020 w PHP przez Kacperhehe Bywalec (2,930 p.)
0 głosów
1 odpowiedź 91 wizyt

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 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!

...