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

Kurs C++ odc. 11 liczba najbliższa średniej

Object Storage Arubacloud
0 głosów
374 wizyt
pytanie zadane 18 marca 2016 w C i C++ przez emilime Nowicjusz (220 p.)

Witajcie,

Jestem początkujący i właśnie przeszedłem lekcje 11 kursu c++, jednak nie do końca mogę poradzić sobie "zadaniem domowym". Otóż po uruchomieniu programu jaki zrobilem okazuje się, że działa on dla każdej konfiguracji liczb jaką sobie mogłem wymyślić, jednak nie działa tylko dla dwóch ostatnich przykładów z zadania (-55 -44 -33 11 22)(6.5 4.5 0 15 0). Podaje złe liczby jako najbliższe średniej, mimo, że zgodnie z tym co wypisuje się na ekranie kontrolnie, kiedy sprawdzam to w myślach, tak na logike z kodami "if", to powinno działać i podawać zupełnie inna liczbę. Może ktoś podpowie, co jest nie tak z tym kodem, bo głowie się i nic nie moge poradzić, aha no i zaznaczam, że jak zaczynałem pisać to nie znałem funkcji wartości bezwzględnej i chciałem zostać przy swoim rozwiązaniu :) 

#include <iostream>
#include <math.h>
#include <cstdlib>
#include <conio.h>
using namespace std;



int main()
{
    float tab[5];
    float tab2[5];
    int a = 0;
    float suma = 0;


    cout << "Podaj 5 liczb: "<<endl;
    cin>>tab[0]>>tab[1]>>tab[2]>>tab[3]>>tab[4];



    for(int i=0;i<5;i++) //wypisywanie tablicy (kontrolnie)
    {
        cout<<tab[i]<<" ";
        suma += tab[i];
    }
    cout<<endl<<"suma = "<<suma; //wypisywanie sumy (kontrolnie)

    float srednia = suma/5;
    cout<<endl<<"srednia = "<<srednia<<endl; //wypisywanie sredniej

    for(int j=0;j<5;j++)
    {

        if((srednia-(tab[j]))<0)
        {
            tab2[j] = -(srednia-(tab[j]));
            cout<<tab2[j]<<endl;
        }else{tab2[j] = (srednia-(tab[j])); cout<<tab2[j]<<endl;}
        //cout<<"wartosc bezwzgledna: "<<tab[j]<<endl;
    }
    float m = tab[0];
    if(tab2[0]<tab2[4]){m=tab[0];}
    if(tab2[1]<tab2[0]) {m=tab[1];}
    if(tab2[2]<tab[1])  {m=tab[2];}
    if(tab2[3]<tab2[2]) {m=tab[3];}
    if(tab2[4]<tab2[3]){m=tab[4];}


    cout<<"liczba najblizsza sredniej to: "<<m;

    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 18 marca 2016 przez Grzyboo Nałogowiec (28,860 p.)
    float m = tab[0];
    if(tab2[0]<tab2[4]){m=tab[0];}
    if(tab2[1]<tab2[0]) {m=tab[1];}
    if(tab2[2]<tab[1])  {m=tab[2];}
    if(tab2[3]<tab2[2]) {m=tab[3];}
    if(tab2[4]<tab2[3]){m=tab[4];}

 

Co to jest o.O?

komentarz 18 marca 2016 przez Piotr Zborowski Obywatel (1,670 p.)
Przypuszczam, że to nieudolna próba zastąpienia czymś pętli :v
komentarz 18 marca 2016 przez emilime Nowicjusz (220 p.)
To jest sposób podany w lekcji, tylko zrobiony na tablicach, robilem na tablicach, zeby mozna bylo ewentualnie rozbudowac kod na wiecej liczb. tab2 przechowuje wartość bezwzględną różnicy sredniej i liczby.
komentarz 18 marca 2016 przez Grzyboo Nałogowiec (28,860 p.)
int closestId = 0;

for(int i=1; i<5; ++i)
{
    if(tab2[i] < tab2[closestId])
        closestId = i;
}

cout << "Liczba najblizsza sredniej to: " << tab[closestId];

Obstawiam, że ten dziwny twór sprawia, że złe liczby się wyświetlają. Spróbuj tego.

komentarz 18 marca 2016 przez emilime Nowicjusz (220 p.)
No tak, pętla, śmiga :D starałem się to zrobić sposobem z lekcji, bo skoro był w lekcji, to czemu by nie xD dziękuje za pomoc i polecam się na przyszłość ;)

Podobne pytania

0 głosów
2 odpowiedzi 1,119 wizyt
0 głosów
2 odpowiedzi 621 wizyt
pytanie zadane 15 listopada 2015 w C i C++ przez Zangariev Początkujący (290 p.)
0 głosów
2 odpowiedzi 1,076 wizyt
pytanie zadane 9 października 2015 w C i C++ przez parimple Początkujący (260 p.)

92,568 zapytań

141,422 odpowiedzi

319,637 komentarzy

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

...