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

Poprawna forma wykonania zadania?

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
738 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 (256,320 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 (89,030 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 (256,320 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ź 325 wizyt
pytanie zadane 20 września 2022 w C i C++ przez MrMock Bywalec (2,890 p.)
0 głosów
1 odpowiedź 96 wizyt
0 głosów
1 odpowiedź 188 wizyt
pytanie zadane 15 lipca 2020 w PHP przez Kacperhehe Bywalec (2,930 p.)

93,164 zapytań

142,175 odpowiedzi

321,926 komentarzy

62,491 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 453p. - Marcin Putra
  2. 453p. - dia-Chann
  3. 447p. - Łukasz Piwowar
  4. 443p. - CC PL
  5. 431p. - Łukasz Eckert
  6. 428p. - rafalszastok
  7. 423p. - Michal Drewniak
  8. 423p. - Adrian Wieprzkowicz
  9. 418p. - rucin93
  10. 415p. - Mikbac
  11. 410p. - Piotr Aleksandrowicz
  12. 408p. - ksalekk
  13. 402p. - Mariusz Fornal
  14. 401p. - Dawid128
  15. 392p. - ikarek-one
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...