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

Jak można polepszyć mój kod ?

Object Storage Arubacloud
0 głosów
197 wizyt
pytanie zadane 14 lutego 2017 w C i C++ przez PoczatkowyKoder Nowicjusz (140 p.)
#include <iostream>
using namespace std;
int ilosc;
float liczba;
float suma;
float srednia;




int main()
{
    cout<<"Witaj ten program obliczy Ci srednia."<<endl;
    cout<<"Teraz musisz podac ile masz liczb : ";
    cin>>ilosc;
    cout<<"Teraz podaj Jakie masz liczby ."<<endl;
    for (int i=1; i<=ilosc; i++)
    {
        cout<<"Podaj "<<i<<" liczbe :";
        cin>>liczba;
        cout<<""<<endl;
        suma+=liczba ;
    }
    srednia=suma/ilosc ;
    cout<<"Twoja srednia to : "<<srednia ;


    return 0;
}

Jestem otwarty na wszelką krytykę i dobre rady.

komentarz 14 lutego 2017 przez PoczatkowyKoder Nowicjusz (140 p.)
czysto estetycznie
komentarz 14 lutego 2017 przez 10kw10 Pasjonat (22,880 p.)
cout<<endl;
komentarz 14 lutego 2017 przez PoczatkowyKoder Nowicjusz (140 p.)
dzięki
komentarz 14 lutego 2017 przez Mariusz M Obywatel (1,640 p.)
Jeśli będziesz sumował całkowite użyj rzutowania typów
komentarz 14 lutego 2017 przez draghan VIP (106,230 p.)

Chciałbym zwrócić uwagę, że std::endl nie tylko przełamuje linię, ale również wywołuje std::ostream::flush(). Czasem to jest okej, ale w większości niepotrzebnie wywołujemy flush().

Jeśli chce się tylko nowy wiersz, należy w strumieniu umieścić znak '\n'.

To taka rada, jakby ktoś kiedyś planował pisać coś na poważnie.

1 odpowiedź

0 głosów
odpowiedź 14 lutego 2017 przez koczurekk Gaduła (3,420 p.)
edycja 14 lutego 2017 przez koczurekk
  1. Nie używaj zmiennych globalnych;
  2. Nie używaj using namespace std;
  3. Dorzuć trochę enterów i spacji dla czytelności;
  4. Taka pętla będzie lepsza: for (auto i = 0u; i < ilosc; ++i). Warto dodać, że ++i jest z reguły lepsze od i++.
komentarz 14 lutego 2017 przez galezovsky Nowicjusz (230 p.)
Dlaczego nie używać using namespace?
komentarz 14 lutego 2017 przez draghan VIP (106,230 p.)
Z większością się zgodzę, jednak poproszę wymierny powód dla punktu czwartego (preinkrementacja typu int/uint to nie jest powód ;).
komentarz 14 lutego 2017 przez koczurekk Gaduła (3,420 p.)
Yep, jednak w tym wypadku nie tyle chodzi o prędkość co o świadomość co dzieje się w kodzie. ++zmienna – podbija wartość, najlogiczniejsze podejście w większości wypadków, zmienna++ – kopiuje zawartość, podbija to co jest w zmiennej i wtedy zwraca. Jeśli ktoś nie oczekuje specjalnie drugiego zachowania to powinien użyć tego pierwszego, nie sądzisz? No i jak wspomniałeś, typy podstawowe nie robią różnicy, ale jeśli postanowi zmienić to na iterator to nawet nie ma gwarancji czy istnieje operator postinkrementacji.
komentarz 14 lutego 2017 przez koczurekk Gaduła (3,420 p.)
  1. Auto zapewnia dużą elastyczność;
  2. 0u uczytelnia kod wyjaśniając dodatkowo jakich wartości na pewno nie będzie miał licznik;
  3. Iterowanie po zakresie [0; n) to w praktyce standard i swoista konwencja, taki kod często dużo lepiej się czyta i IMHO warto się tego trzymać.

Ps. Teraz zobaczyłem, że mam tam w kodzie literówkę, pętla miała oczywiście jechać w przedziale [0; n), nie [1, n), zaraz to poprawię.

komentarz 14 lutego 2017 przez draghan VIP (106,230 p.)

Auto zapewnia dużą elastyczność;

Owszem, ale nie tutaj. Akurat ta pętla z jawną specyfikacją typu jest czytelniejsza, nie pozostawia pola na jakąkolwiek wątpliwość i jest krótsza. W czym tutaj auto jest bardziej elastyczne od int? Gdyby chcieć zmienić tę pętlę na zakresową, i tak całość idzie do kosza.

[EDIT] Oglądałem sobie ostatnio nagranie z CppCon2014, w którym Herb Sutter mówił m.in. o przeniesieniu typowania na prawą stronę. Dla zapewnienia jednolitości kodu, mogę się zgodzić z tym, że auto i = 0u; może być lepsze również tutaj, jednak nie ma to związku z elastycznością. ;) [/EDIT]

0u uczytelnia kod wyjaśniając dodatkowo jakich wartości na pewno nie będzie miał licznik;

[opinia]Wystarczy spojrzeć na wyrażenia sterujące, które są wystarczająco jasne.[/opinia]

Iterowanie po zakresie [0; n) to w praktyce standard i swoista konwencja, taki kod często dużo lepiej się czyta i IMHO warto się tego trzymać.

Pełna zgoda.

Podobne pytania

0 głosów
2 odpowiedzi 469 wizyt
pytanie zadane 6 kwietnia 2017 w HTML i CSS przez Kumixx Początkujący (250 p.)
0 głosów
2 odpowiedzi 1,201 wizyt
pytanie zadane 8 listopada 2017 w Grafika i multimedia przez Krzysiek_34 Mądrala (6,050 p.)
0 głosów
8 odpowiedzi 870 wizyt
pytanie zadane 14 czerwca 2015 w Offtop przez Kuroi Obywatel (1,390 p.)

92,536 zapytań

141,376 odpowiedzi

319,451 komentarzy

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

...