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

Ocena kodu | C++

Object Storage Arubacloud
+1 głos
2,400 wizyt
pytanie zadane 29 marca 2017 w C i C++ przez WireNess Stary wyjadacz (11,240 p.)

Zadanie: 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.

 

Postanowiłem powrócić do początku i rozwiązywać tego typu zadania. Mile widziane wszelkie pochwały, ale również krytyka. Człowiek uczy się na własnych błędach :)

Kod:

#include <iostream>

//UZYLEM DLA WYGODY :)))
using namespace std;

//ZMIENNE
double wzrost_cm, cale, stopy;

//STALE
const double Cal=30.48;
const double Stopa=7.0;

int main()
{
    //ZAPYTANIE UZTYKOWNIKA O DANE
    cout << "Podaj wzrost w centymetrach: ";
    cin >> wzrost_cm;

    //KONWERSJA
    cale = wzrost_cm/Cal;
    stopy = wzrost_cm/Stopa;

    //POKAZANIE WYNIKIKU
    cout << endl;
    cout << wzrost_cm << "cm to " << cale << " cali i " << stopy << " stop" << endl;

    //KONIEC PROGRAMU
    return 0;
}

PS: Nie były podane stopy więc ustawiłem je na 7.0

PS2: Nie wiedziałem jak zrobić to podkreślenie więc go nie próbowałem :)

3 odpowiedzi

+1 głos
odpowiedź 29 marca 2017 przez mokrowski Mędrzec (155,740 p.)
wybrane 29 marca 2017 przez WireNess
 
Najlepsza
  1. Warto wydzielić funkcje które jasno opiszą cel i intencje swojego wykonania. Poprzez umieszczenie ich w main(), wyraźnie pokażesz logiczny przebieg programu.
  2. Z premedytacją usunąłem komentarze abyś mógł sprawdzić czy rozumiesz jego przebieg :-).
  3. Zwyczajowo notuje się stałe tak jak to widzisz w kodzie. Dodanie static, powoduje że w przyszłości nie będą one widoczne w kodzie poza tym plikiem. Poprawiłem także miary cali i stóp na prawidłowe anglosaskie. 
  4. Zmienne globalne naprawdę są niepotrzebne. Da się jak widzisz napisać czysty kod bez tych "śmieci".
#include <iostream>
 
using namespace std;
 
static const double CAL = 2.54;
static const double STOPA = 30.48;

double wczytanieWzrostu() {
    double wzrost;
    cout << "Podaj wzrost w centymetrach: ";
    cin >> wzrost;
    return wzrost;
}

double konwersjaNaCale(double wzrost) {
    return wzrost / CAL;
}

double konwersjaNaStopy(double wzrost) {
    return wzrost / STOPA;
}

void prezentacjaWyniku(double wzrost, double cale, double stopy) {
    cout << wzrost << " cm to " << cale << "\" (cali) i "
        << stopy << "\' (stóp)" << endl;
}

int main()
{
    double wzrost = wczytanieWzrostu();
    double cale = konwersjaNaCale(wzrost);
    double stopy = konwersjaNaStopy(wzrost);
    prezentacjaWyniku(wzrost, cale, stopy);
}

 

komentarz 29 marca 2017 przez mbabane Szeryf (79,280 p.)

Bardzo fajnie uprzadkowales ten kod.

Wydaje mi sie ze mozna jeszcze zrobic taki maly zabieg:

#include <iostream>
  
using namespace std;
  
static const double CAL = 2.54;
static const double STOPA = 30.48;

struct Wzrost
{
  double wCentymetrach;
  double wCalach;
  double wStopach;
}
 
double wczytanieWzrostu() {
    double wzrost;
    cout << "Podaj wzrost w centymetrach: ";
    cin >> wzrost;
    return wzrost;
}
 
double konwersjaNaCale(double wzrost) {
    return wzrost / CAL;
}
 
double konwersjaNaStopy(double wzrost) {
    return wzrost / STOPA;
}
 
void prezentacjaWyniku(Wzrost wzrost) {
    cout << wzrost.wCentymetrach << " cm to " << wzrost.wCalach << "\" (cali) i "
        << wzrost.wStopach << "\' (stóp)" << endl;
}
 
int main()
{
    Wzrost wzrost;

    wzrost.wCentymetrach = wczytanieWzrostu();
    wzrost.wCalach = konwersjaNaCale(wzrost.wCentymetrach);
    wzrost.wStopach = konwersjaNaStopy(wzrost.wCentymetrach);
    prezentacjaWyniku(wzrost);
}


Pozbywamy sie dzieki temu trojargumentowej funkcji, gdzie wystarczy ze podamy dane w innej kolejnosci i wynik bedzie zle wyswietlany.

Oczywiscie najbardziej czytelnym wyjsciem byloby stworzenie klasy i tam zamkniecie tych wszystkich funkcji, jednak mozliwe ze pytajacy jeszcze nie dotarl do tego etapu, wiec lepiej nie mieszac mu w glowie klasami.

komentarz 29 marca 2017 przez mokrowski Mędrzec (155,740 p.)

Ba The sky's the limit ... :-) 

Zależy co wie/umie pytający :-)

+2 głosów
odpowiedź 29 marca 2017 przez MararOn Bywalec (2,620 p.)
Może trochę niezwiązane z tematem, ale w treści zadania są błędne informacje - 1 cal to 2,54cm, a stopa to 30,48cm ;p
komentarz 29 marca 2017 przez WireNess Stary wyjadacz (11,240 p.)
U mnie nie są podane stopy :/
+1 głos
odpowiedź 29 marca 2017 przez 10kw10 Pasjonat (22,880 p.)

1. Zmienne globalne

2. Polskie nazwy zmiennych

3.

cout << wzrost_cm << "cm to " << wzrost_cm/Cal << " cali i " << wzrost_cm/Stopa << " stop" << endl; 

 

komentarz 29 marca 2017 przez WireNess Stary wyjadacz (11,240 p.)
No gdy teraz na to patrzę, to rzeczywiście nie potrzebnie zrobiłem publiczne zmienne, nazwy także mógłbym zmienić.

Dzięki za opinie! Zastosuje się do twoich rad!

Pozdrawiam
komentarz 29 marca 2017 przez Molester Bywalec (2,920 p.)
Komentarzy używaj tylko wtedy kiedy jest to naprawde konieczne, a nie nad każdą linijką. Ten kod ich w zasadzie nie potrzebuje.
komentarz 29 marca 2017 przez WireNess Stary wyjadacz (11,240 p.)
W zasadzie nie używam tylu komentarzy, lecz postanowiłem tutaj użyć dla wygody osób oglądających ten kod :)

Podobne pytania

0 głosów
2 odpowiedzi 316 wizyt
pytanie zadane 22 kwietnia 2017 w C i C++ przez SebekChlebek Stary wyjadacz (11,290 p.)
+1 głos
1 odpowiedź 328 wizyt
pytanie zadane 6 lutego 2019 w JavaScript przez Marchiew Dyskutant (7,690 p.)
0 głosów
1 odpowiedź 488 wizyt

92,631 zapytań

141,498 odpowiedzi

319,869 komentarzy

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

...