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

Sprawdzenie zadania domowego z Kurs C++ odc. 11: Znajdowanie największej liczby

Object Storage Arubacloud
+1 głos
594 wizyt
pytanie zadane 8 sierpnia 2015 w C i C++ przez matir85 Bywalec (2,410 p.)

Witam.

Czy ktoś ze starszych stażem programistów może sprawdzić i ocenić moje zad. dom z odcinka 11 kursu c++ ??? Będę bardzo wdzięczny za konstruktywną krytykę i rzetelną ocenę. Dodam tylko że jestem początkujący i nie wychoze z wiedzą ponad to co dopiero obejżałem do danego odcinka.

Za pomoc z góru dzięki :)

#include <iostream>
#include <math.h>

using namespace std;

float a,b,c,d,e,s,l;
float a1,b1,c1,d1,e1;

int main()
{
    cout << "Podaj 5 liczb: ";
    cin >> a >> b >> c >> d >> e;
    s=(a+b+c+d+e)/5; // wyliczenie średniej
    cout << "Srednia z podanych liczb wynosi: "<< s << endl;
    a1=fabs(s-a); // wyliczanie wartości bezwzględnej z różnicy między średnią a liczbą podaną przez użytkownika
    b1=fabs(s-b);
    c1=fabs(s-c);
    d1=fabs(s-d);
    e1=fabs(s-e);
    l=a1;
    if (l>b1) l=b1; // szukanie najmniejszej różnicy między średnią a liczbą podana przez użytkownika
    if (l>c1) l=c1;
    if (l>d1) l=d1;
    if (l>e1) l=e1;
    if(l==a1) l=a; // przypisanie liczby użytkownika do róznicy między średnią a liczbą podana przez użytkownika
    if(l==b1) l=b;
    if(l==c1) l=c;
    if(l==d1) l=d;
    if(l==e1) l=e;
    cout << "Liczba najblizej sredniej to: " << l << endl;

    return 0;
}

 

3 odpowiedzi

+1 głos
odpowiedź 8 sierpnia 2015 przez matir85 Bywalec (2,410 p.)
edycja 8 sierpnia 2015 przez matir85

Poprawiłem kod według waszych sugestii. Mojim zdaniem jest troche bardziej nieczytelny niz był przedtem i zajmuje więcej lini. Proszę o ocenę tego co zrobiłem źle.

#include <iostream>
#include <math.h>

using namespace std;

float liczby[5];
float suma, srednia,min_roznica;
float roznica[5];

int main()
{
    cout << "Podaj 5 liczb: ";
    for(int i=0;i<=4;i++)
    {
        cin >> liczby[i];
        suma += liczby[i];
    }
    srednia = suma /5;
    for(int i=0;i<=4;i++)
    {
        roznica[i]= fabs(srednia-liczby[i]); // Obliczanie wartosci bezwzglednej roznicy pomiedzy srednia a dana liczba
    }
    min_roznica=roznica[0];
    for(int i=0;i<=4;i++)
    {
        if (min_roznica>roznica[i]) min_roznica=roznica[i];   // Szukanie najmniejszej roznicy 
    }
    for(int i=0;i<=4;i++) // Przypisanie najmniejszej ruznicy do podanej liczby
    {
        if(min_roznica==roznica[i])min_roznica=liczby[i];
    }
    cout << "Suma podanych liczb wynosi: " << suma << endl;
    cout << "Srednia podanych liczb wynosi: " << srednia << endl;
    cout << "Liczba podana, ktora jest najblizsza sredniej to: " << min_roznica << endl;

    return 0;
}

Można zmniejszyć ilość lini ale wtedy całkiem staje się nie czytelny.

#include <iostream>
#include <math.h>

using namespace std;

float liczby[5];
float suma, srednia,min_roznica;
float roznica[5];

int main()
{
    cout << "Podaj 5 liczb: ";
    for(int i=0;i<=4;i++)
    {
        cin >> liczby[i];
        suma += liczby[i];
    }
    srednia = suma /5;
    for(int i=0;i<=4;i++) roznica[i]= fabs(srednia-liczby[i]); // Obliczanie wartosci bezwzglednej roznicy pomiedzy srednia a dana liczba
    min_roznica=roznica[0];
    for(int i=0;i<=4;i++) if (min_roznica>roznica[i]) min_roznica=roznica[i];   // Szukanie najmniejszej roznicy
    for(int i=0;i<=4;i++) if(min_roznica==roznica[i])min_roznica=liczby[i];  // Przypisanie najmniejszej ruznicy do podanej liczby
    cout << "Suma podanych liczb wynosi: " << suma << endl;
    cout << "Srednia podanych liczb wynosi: " << srednia << endl;
    cout << "Liczba podana, ktora jest najblizsza sredniej to: " << min_roznica << endl;

    return 0;
}

 

0 głosów
odpowiedź 8 sierpnia 2015 przez Grzyboo Nałogowiec (28,860 p.)
Zasadniczo jest ok, tylko przejrzystość kodu leży. Zrób to na tablicach, będzie mniej kodu i bardziej przejrzyste, a dodatkowo wszystko będzie można załatwić prostymi pętlami i zrobić to dla dowolnej ilości liczb.

Inna rzecz, już czysto estetyczna, deklarowanie zmiennych w jednym miejscu jest niepotrzebne.
0 głosów
odpowiedź 8 sierpnia 2015 przez criss Mędrzec (172,590 p.)
Liczby trzymaj w tablicach, wtedy będziesz mógł to wszystko robić w forze. Znacznie mniej roboty i znacznie czytelniej wygląda. No i nazewnictwo jakieś :P Gdyby nie te komentarze, raczej nie chciałoby mi się dochodzić co tu się dzieje.

Podobne pytania

+1 głos
1 odpowiedź 340 wizyt
+1 głos
1 odpowiedź 472 wizyt
0 głosów
2 odpowiedzi 645 wizyt

92,555 zapytań

141,402 odpowiedzi

319,539 komentarzy

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

...