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

Ocena C++, kilka zadan

Object Storage Arubacloud
0 głosów
483 wizyt
pytanie zadane 15 października 2017 w C i C++ przez LockeLamora Użytkownik (740 p.)

Przerabiam sobie ksiazke Praty, prosze o pomoc i ocene kodu, krytyka mile widziana  :)

1.Podaj wzrost w cm, wyswietl w stopach i calach.

#include <iostream>

using namespace std;
const float cal=2.54;
const float stopa=30.48;
int wzrost_cm;


int cm_na_stopy(int c)
{
    return wzrost_cm/stopa;
}
float ile_cal(int x,int y)
{
    return (x-y*stopa)/cal;
}
int main()
{
    cout << "Podaj wzrost w centymetrach: ";
    cin>> wzrost_cm;
    cout<<"Twoj wzrost wynosi "<<cm_na_stopy(wzrost_cm)<<" stop i "<<ile_cal(wzrost_cm, cm_na_stopy(wzrost_cm))<<" cali"<<endl;

    return 0;
}

 

2.Podaj wzrost w stopach i calach, wage w funtach, podaj BMI

#include <iostream>

using namespace std;

float wzrost_stopy;
float wzrost_cale;
float waga_funty;

void wprowadz_dane()
{   cout<<"Podaj swoj wzrost:"<<endl<<"stopy: ";
    cin>>wzrost_stopy;
    cout<< "cale: ";
    cin>>wzrost_cale;
    cout<<"Podaj swoja wage w funtach: ";
    cin>>waga_funty;
}
float wzrost_na_metry(float s,float c)
{   float cale;
    cale=wzrost_stopy*12+wzrost_cale;
    return cale*0.0254;
}
float funty_na_kg(float f)
{   return f/2.2;
}
int main()
{   wprowadz_dane();
    float metry=wzrost_na_metry(wzrost_stopy,wzrost_cale);
    float kg=funty_na_kg(waga_funty);
    float BMI;

    BMI=kg/(metry*metry);
    cout<<"BMI wynosi: "<<BMI;
    return 0;
}

 

3.Podaj dlugosc geograficzna w stopniach minutach sekundach, podaj w stopniach.

#include <iostream>

using namespace std;
int stopnie, minuty, sekundy;
void wprowadz_dane()
{   cout <<"Podaj dlugosc geograficzna w stopniach minutach i sekundach: "<<endl;
    cout << "Najpierw podaj stopnie: ";
    cin >>stopnie;
    cout <<"Nastepnie podaj minuty stopnia luku: ";
    cin >> minuty;
    cout<<"Na koniec podaj sekundy luku: ";
    cin >> sekundy;
}
int main()
{   float dlugosc;  //dlaczego jak zmienie na int to wynik tez wyswietla sie jako int?
    float wynik;
    wprowadz_dane();
    dlugosc=(stopnie*3600)+(minuty*60)+sekundy;

    wynik=dlugosc/3600;
    cout<<endl<<stopnie<<" stopni, "<<minuty<<" minut, "<<sekundy<<" sekund = "<< wynik<<" stopni";
    return 0;
}

 

4.Podaj sekundy, wyswietl dni, godziny, minuty, sekundy.

#include <iostream>

using namespace std;
long sekundy;
const int dzien=86400;
const int godzina=3600;
const int minuta=60;

int obliczenia(int sekundy)
{

}
int main()
{   int liczba_dni;
    int liczba_godzin;
    int liczba_minut;
    int liczba_sekund;
    int reszta_dni;
    int reszta_godzin;
    cout << "Podaj liczbe sekund: ";
    cin>>sekundy;

    liczba_dni=sekundy/dzien;
    reszta_dni=sekundy%dzien;
    liczba_godzin=reszta_dni/godzina;
    reszta_godzin=reszta_dni%godzina;
    liczba_minut=reszta_godzin/minuta;
    liczba_sekund=reszta_godzin%minuta;

    cout<<sekundy<<" sekund = "<<liczba_dni<<" dni, "
    <<liczba_godzin<<" godzin, "<<liczba_minut
    <<" minut, "<<liczba_sekund<<" sekund";
    return 0;
}

Da sie to zrobic z mniejsza liczba zmiennych?

5.Podaj ludnosc swiata i polski, wyswietl % polski do swiata


#include <iostream>

using namespace std;
double swiat;
double polska;
void wprowadz_dane()
{
    cout << "Podaj liczbe ludnosci swiata: ";
    cin>>swiat;
    cout<< "Podaj liczbe ludnosci Polski: ";
    cin>>polska;
}
float obliczenia(double swiat, double polska)
{
    return (polska/swiat)*100;
}
int main()
{   wprowadz_dane();

    cout<<"Populacja Polski stanowi "<<obliczenia(swiat,polska)<<"% populacji swiata.";
    return 0;
}

w tresci zadania jest napisane zeby zapisac dane w zmiennych long long, a program zaczął dobrze obliczac dopiero jak zmieniłem na double, wiec jak to ma byc w koncu?

1 odpowiedź

+7 głosów
odpowiedź 16 października 2017 przez Gynvael Coldwind Nałogowiec (27,530 p.)

Cześć!

Kilka najważniejszych uwag, tak, żeby Cię nie przytłoczyć :)

  1. Staraj się używać angielskich nazw zmiennych, stałych, klas, funkcji itd. - to taki przyjęty standard w programowaniu.
  2. Staraj się być konsekwentny w używaniu spacji. Przykładowo, obecnie masz na przemian "cośtam<<cośtam", "cośtam<< cośtam" oraz "cośtam << cośtam" (np. ostatni program linie 8-10). Po pewnym czasie zainteresuj się jakimś style guide do pisania kodu, np. https://google.github.io/styleguide/cppguide.html - takie style guide'y mówią jak ładnie formatować kod, a także czego używać, a czego nie używać; jest ich sporo różnych, i warto ze 2-3 różne poznać (pewną oznaką profesjonalizmu jest umiejętność pisania kodu zgodnego ze style guide klienta/firmy w której się pracuje bez zbytniego narzekania :).
  3. Staraj się nie używać zmiennych globalnych; zamiast nich raczej używaj parametrów funkcji i przekazywania np. przez wskaźnik lub referencje. Po pewnym czasie zapewne zauważysz, że zazwyczaj się powiązane zmienne grupuje w struktury lub klasy, i przekazuje przez parametry/argumenty jako obiekty. Zmienne globalne jako narzędzie są bardzo mało wykorzystywane w profesjonalnym kodzie (ale na początku nauki jest OK ich używać).

Ad pytania:

"Da sie to zrobic z mniejsza liczba zmiennych?"
Tak - w zasadzie nie potrzebujesz reszta_dni i reszta_godzin - możesz zamiast nich użyć ponownie po prostu zmiennej sekundy. Natomiast nie ma nic złego w używaniu większej liczby zmiennych jeśli kod dzięki temu jest bardziej czytelny.

"w tresci zadania jest napisane zeby zapisac dane w zmiennych long long, a program zaczął dobrze obliczac dopiero jak zmieniłem na double, wiec jak to ma byc w koncu?"
Operowanie na liczbach całkowitych jest czasem dość zabawne, szczególnie, jeśli liczysz ułamki. Zwróć uwagę, co się stanie w przykładzie poniżej (to pseudokod):

polska = 30
świat = 70
polska/świat → 0 (czemu? bo wynikiem jest 0.42, a 0.42 przerzucone do liczby całkowitej to po prostu 0)
(polska/świat) * 100 → 0 (bo 0 * 100 daje nadal 0)

Zauważ, że można zrobić małą zmianę we wzorze, i najpierw pomnożyć zmienną polska przez 100, a potem dopiero podzielić:

polska = 30
świat = 70
polska * 100 → 3000
(polska * 100) / 70 -> 42

Powyższy manewr jest dość typowy przy obliczaniu procentów na liczbach całkowitych :)

Pozdrawiam,

komentarz 16 października 2017 przez LockeLamora Użytkownik (740 p.)
Wielkie dzieki za odpowiedz ;)

Podobne pytania

0 głosów
1 odpowiedź 341 wizyt
pytanie zadane 28 grudnia 2018 w Sieci komputerowe, internet przez Krystek102 Bywalec (2,440 p.)
0 głosów
4 odpowiedzi 4,270 wizyt
0 głosów
1 odpowiedź 193 wizyt

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

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

...