• 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

Aruba Cloud - Virtual Private Server VPS
0 głosów
432 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,680 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,378 wizyt
0 głosów
2 odpowiedzi 688 wizyt
pytanie zadane 15 listopada 2015 w C i C++ przez Zangariev Początkujący (290 p.)
0 głosów
2 odpowiedzi 1,350 wizyt
pytanie zadane 9 października 2015 w C i C++ przez parimple Początkujący (260 p.)

93,334 zapytań

142,328 odpowiedzi

322,406 komentarzy

62,670 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!

...