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

Program wskazujący wartość najbliższą średniej nie działa poprawnie

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
91 wizyt
pytanie zadane 8 stycznia 2021 w C i C++ przez Frog17 Nowicjusz (190 p.)

Jest to zadanie domowe z odcinka 11 kursu C++. Użytkownik ma wprowadzić 5 liczb, a program ma mu podać średnią i liczbę, która jest najbliżej wartości średniej. Podczas podawania niektórych wartości program podaje złą liczbę np. 1 2 3 5 4 (w tej kolejności). Proszę o zlokalizowanie błędu. Z góry dziękuje.

#include <iostream>

using namespace std;
float a[5]; //WARTOSCI
float srednia; //SREDNIA
float odleglosc[5]; //ODLGELOSCI DANYCH LICZB OD SREDNIEJ
float najblizej; //LICZBA NAJBLIZEJ SREDNIEJ
int main()
{
    cout<<"Podaj 5 liczb oddzielonych spacja i zatwierdz enterem: "; 
    cin>>a[0]>>a[1]>>a[2]>>a[3]>>a[4];
    srednia=(a[0]+a[1]+a[2]+a[3]+a[4])/5;

    for (int i=0; i<5; i++)
    {
        odleglosc[i]=a[i]-srednia;
        if (odleglosc[i]<0) 
            odleglosc[i]=odleglosc[i]*-1;
    }
    najblizej=a[0];

    for (int i=1; i<5; i++)
        {
            if (odleglosc[i]<odleglosc[i-1]) 
                najblizej=a[i];
        }

    cout<<"Srednia wynosi: "<<srednia<<endl;
    cout<<"Najblizej jest: "<<najblizej<<endl;

    return 0;
}

 

2 odpowiedzi

+1 głos
odpowiedź 8 stycznia 2021 przez manjaro Nałogowiec (36,750 p.)
wybrane 9 stycznia 2021 przez Frog17
 
Najlepsza

W zasadzie to cały blok od 24-26 linijki jest błędny. Ty sprawdzasz tylko różnice między aktualną wartością a poprzednią, a powinieneś sprawdzać między aktualną a globalnie najmniejszą.

Trochę zmodyfikowałem ten kod:

#include <iostream>
 
using namespace std;
float a[5]; //WARTOSCI
float srednia; //SREDNIA
float odleglosc[5]; //ODLGELOSCI DANYCH LICZB OD SREDNIEJ
float najblizej; //LICZBA NAJBLIZEJ SREDNIEJ
int indeks;

int main() {
    cout<<"Podaj 5 liczb oddzielonych spacja i zatwierdz enterem: "; 
    cin>>a[0]>>a[1]>>a[2]>>a[3]>>a[4];
    srednia=(a[0]+a[1]+a[2]+a[3]+a[4])/5;
 
    for (int i=0; i<5; i++) {
        odleglosc[i]=a[i]-srednia;
        if (odleglosc[i]<0) odleglosc[i]=odleglosc[i]*-1;
    }

    najblizej = odleglosc[0];
    indeks = 0;

    for (int i=1; i<5; i++) {
        if (odleglosc[i] < najblizej) {
            najblizej = odleglosc[i];
            indeks = i;
        }
    }

    cout<<"Srednia wynosi: "<<srednia<<endl;
    cout<<"Najblizej jest: "<< a[indeks] <<endl;
 
    return 0;
}

 

 

komentarz 8 stycznia 2021 przez Frog17 Nowicjusz (190 p.)
Bardzo dziękuje za odpowiedź :)
0 głosów
odpowiedź 8 stycznia 2021 przez tangarr VIP (140,920 p.)
Błąd znajduje się w 24 linijce.
komentarz 8 stycznia 2021 przez manjaro Nałogowiec (36,750 p.)
heh wyprzedziłeś mnie ;)

Podobne pytania

0 głosów
1 odpowiedź 117 wizyt
0 głosów
3 odpowiedzi 202 wizyt
0 głosów
2 odpowiedzi 125 wizyt

89,745 zapytań

138,348 odpowiedzi

309,377 komentarzy

59,659 pasjonatów

Advent of Code 2022

Top 15 użytkowników

  1. 747p. - Argeento
  2. 696p. - Mikbac
  3. 693p. - Michal Drewniak
  4. 692p. - rucin93
  5. 688p. - Łukasz Eckert
  6. 679p. - ssynowiec
  7. 678p. - TheLukaszNs
  8. 654p. - JMazurkiewicz
  9. 645p. - Hubert Chęciński
  10. 645p. - Jarosław Roszyk
  11. 640p. - adrian17
  12. 592p. - nidomika
  13. 506p. - tokox
  14. 501p. - Rafał Budzis
  15. 498p. - overcq
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...