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

Zadanie domowe odcinek 11 Kurs C++

42 Warsaw Coding Academy
+1 głos
151 wizyt
pytanie zadane 24 lutego 2022 w C i C++ przez WojtekNa Nowicjusz (130 p.)

Mój pierwszy post na forum, więc wypada się przywitać!

Cześć jestem Wojtek i stawiam swoje pierwsze kroki w programowaniu. Jestem totalnym noobem jeśli chodzi o programowanie i jako start wybrałem kurs C++ pana Zelenta.

Rozwiązując zadanie domowe z 11 odcinka kursu C++

"Napisz program:

1. Liczący średnią z 5 liczb,

2. Wskazujący z podanych liczb, wartość najbliższą wyliczonej średniej."

 

Utknąłem w teście numer 3, gdzie dla liczb 6.5 , 3.5, 0, 15, 0; są dwa rozwiązania: 6.5 i 3.5. Problemem jest to, że nie wiem w jaki sposób wydrukować na ekran oba rozwiązania. W moim programie rozwiązanie wyrzuca 0.

Chciałbym prosić o wskazówki w jaki sposób mógłbym rozwiązać ten problem.

Wertując forum natrafiłem na rozwiązanie z dodaniem kolejnej zmiennej ale niestety nie rozumiem powiązania z resztą obcych kodów.

Kod mojego programu:

#include <iostream>

using namespace std;

float liczby[5]; float suma=0, srednia,x;//-najblizsza liczba do sredniej;

int main()
{
    for (int i=0; i<5; i++)
    {
        cout<<endl<<"Podaj "<<i+1<<" liczbe: ";
        cin>>liczby[i];
        suma+=liczby[i];
    }
    srednia= suma/5;
    cout<<endl<<"Srednia = "<<srednia;

    //Najblizsza liczba do sredniej

    x=liczby[0];
    if      (x<liczby[0]) (x=liczby[1]);
    else if (x<liczby[1]) (x=liczby[2]);
    else if (x<liczby[2]) (x=liczby[3]);
    else if (x<liczby[3]) (x=liczby[4]);

    cout<<endl<<"Liczba najblizej sredniej to: "<<x<<endl;


    return 0;
}

Z góry dziękuję za wskazówki!

 

1 odpowiedź

0 głosów
odpowiedź 24 lutego 2022 przez j23 Mędrzec (195,240 p.)
x = liczby[0];
float min_diff = fabs(srednia - x);

for(int i = 1; i < 5; ++i) {
    float diff = fabs(srednia - liczby[i]);
    if(diff < min_diff) {
        min_diff = diff;
        x = liczby[i];
    }
}

 

komentarz 27 lutego 2022 przez VBService Ekspert (256,600 p.)

Proponuję taką "zmianę"  wink

[ on-line ]

#include <iostream>
#include <math.h>
 
using namespace std;
 
int main()
{
    float liczby[5], suma=0, srednia=0;
    
    for (int i=0; i<5; i++)
    {
        cout << endl << "Podaj " << i+1 << " liczbe: ";
         cin >> liczby[i];
        suma += liczby[i];
    }
    
    srednia = suma/5;
    cout << endl << "Srednia = " << srednia << endl;

    float min_diff=suma, x=0, y=0;
     
    for (int i=0; i<5; ++i) {
        float diff = fabs(srednia - liczby[i]);
        
        if (min_diff > diff || min_diff == diff) {
            if (srednia > liczby[i]) x = liczby[i];
            else y = liczby[i];
            
            min_diff = diff;
        }
    }
 
    cout << "Liczby najblizej sredniej to: " << x << " " << y << endl;
 
    return 0;
}

 

Podobne pytania

0 głosów
0 odpowiedzi 354 wizyt
0 głosów
1 odpowiedź 291 wizyt
pytanie zadane 7 października 2016 w Nasze projekty przez unbearable Początkujący (450 p.)
+1 głos
1 odpowiedź 849 wizyt

93,377 zapytań

142,379 odpowiedzi

322,528 komentarzy

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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...