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

Kurs C++ Lekcja 11 Zadanie Domowe

Aruba Cloud - Virtual Private Server VPS
0 głosów
688 wizyt
pytanie zadane 15 listopada 2015 w C i C++ przez Zangariev Początkujący (290 p.)

Cześć,

Zrobiłem zadanie z odcinka 11 programowanie C++. 

Program poprawnie liczy wynik dla każdego z trzech przypadków podanych w filmiku.

Moje pytanie czy jest poprawnie napisany? I czy ewentualnie można jeszcze go zmniejszyć? Jeśli tak to poproszę jakieś wskazówki, bez poprawnego rozwiązania ;) (tak, abym mógł sam spróbować zmienić).

Dzięki!

#include <iostream>
#include <cmath>
#include <cstdlib>

using namespace std;
float sr,najblizsza,m,suma;
float tb[5];

int main()
{
    for (int i=0; i<5; i++)
    {
        cout<<"Podaj "<<i+1<<" liczbe: ";
        cin>>tb[i];
        suma=suma+tb[i];
    }
    sr=suma/5;
    najblizsza=tb[0];
    m=abs(tb[0]-sr);

    for (int i=0; i<=5; i++)
    {
        if (abs(tb[i]-sr)<m)(najblizsza=tb[i])&&(m=abs(tb[i]-sr));
    }
    cout<<endl;
    cout<<"Srednia to: "<<sr<<endl;
    cout<<endl;
    for (int i=0;i<5;i++)
    {
        if (najblizsza==tb[i]) i=i+1;
        if((abs(najblizsza-sr))==(abs(tb[i]-sr)))
            cout<<"Dwie najblizsze liczby to: "<<najblizsza<<" i "<<tb[i];
        else cout<<"Najblizsza to: "<<najblizsza;
            cout<<endl;
            exit(0);
    }
    return 0;
}

 

2 odpowiedzi

+1 głos
odpowiedź 15 listopada 2015 przez Porcupine Nałogowiec (31,560 p.)

1) Powinieneś inicjalizować zmienną suma

2) Wydaje mi się, że dobrym nawykiem przy działaniu na liczbach zmiennoprzecinkowych jest pisanie w formie typue: 
sr = suma / 5.0; To nie znaczy, że tak jak masz jest źle, tylko po prostu to poprawia czytelność, bo od razu wiadomo, że działasz na float / double bez patrzenia na definicje
3) 

 if((abs(najblizsza-sr))==(abs(tb[i]-sr)))

Nie wszystkie nawiasy są potrzebne, za dużo nawiasów pogarsza czytelność 

 

Tyle ode mnie :) Pozdrawiam :)

komentarz 15 listopada 2015 przez Zangariev Początkujący (290 p.)

Dzięki bardzo za uwagi :).

Ad 1) Wskazywać w samym programie, że np suma=0; , dobrze rozumiem?

Ad 2) W sumie racja, przy robieniu floatów, może być to czytelniejsze w dłuższym kodzie. Dzięki:)

Ad 3) Masz na myśli jak poniżej?

if(abs(najblizsza-sr))==(abs(tb[i]-sr))

 

komentarz 15 listopada 2015 przez Porcupine Nałogowiec (31,560 p.)

1) Dokładnie :)

3) 

if( abs(najblizsza-sr) == abs(tb[i]-sr) )

 

0 głosów
odpowiedź 15 listopada 2015 przez Zangariev Początkujący (290 p.)
Dzięki za odpowiedzi! :)

Zastosuję propozycje na pewno!

Podobne pytania

+1 głos
1 odpowiedź 1,247 wizyt
0 głosów
4 odpowiedzi 451 wizyt
pytanie zadane 9 grudnia 2015 w C i C++ przez baqazan Nowicjusz (230 p.)
–3 głosów
2 odpowiedzi 699 wizyt
pytanie zadane 1 marca 2016 w C i C++ przez Nowicjusz89 Obywatel (1,050 p.)

93,324 zapytań

142,323 odpowiedzi

322,389 komentarzy

62,652 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

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!

...