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

Liczby większe od średniej

Object Storage Arubacloud
0 głosów
1,045 wizyt
pytanie zadane 2 maja 2018 w C i C++ przez XSPACE Użytkownik (690 p.)

Witam od niedawna próbuję coraz częściej sił w c++ i zacząłem wykonywać zadanie w którym było trzeba podać 10 wartości typu double, a program na tej podstawie ma obliczyć średnią podanych liczb oraz wartości większe od średniej. Problem jest w tym że szukanie liczby większej od średniej działa niepoprawnie i niestety nie wiem jak to naprawić.

 

#include <iostream>

using namespace std;

int main()
{
    const int Max = 10;
    double gift[Max], suma = 0, naj[Max];
    int licznik = 0, ile = 0;
    float srednia;

    cout<< "Ile chcesz wplacic, podaj 10 wartosci: \n";
        for (int i = 1; i < 11; i++ ){
            while (!(cin>> gift[i]))
                cin.clear();
            while (cin.get() != '\n')
                continue;

            suma++;
             licznik+=gift[i];
            cout<< "Proszę podać "<< i + 1<< " wartosc: ";
            srednia = licznik / suma;
        }

        for (int j = 0; j < Max; j++){
            if (srednia < gift[j])
                ile++;
                naj[j] = gift[j];

        }


        cout<<endl<<endl<< "Srednia wynosi: "<< srednia<< endl;

        for (int k = 0; k < ile; k++)
        cout<<endl<< "Liczba wyzsza niz srednia to "<<naj[k];

    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 2 maja 2018 przez niezalogowany
wybrane 2 maja 2018 przez XSPACE
 
Najlepsza

Podczas wczytywania wartości do tablicy wychodzisz poza jej zakres (gift[10] jest poza tablicą). Liczenie średniej było niepoprawne. Podczas kopiowania wartości większych od średnich do nowej tablicy powinieneś użyć zmiennej ile, a nie j. Poprawiłem też kilka innych rzeczy:

#include <iostream>
#include <limits>

int main() {
	const int max = 10;
	double gifts[max], sum = 0;
	std::cout << "Ile chcesz wplacic, podaj 10 wartosci: \n";
	for (int i = 0; i < max; i++) {
		std::cout << "Proszę podać " << i + 1 << " wartosc: ";
		while (!(std::cin >> gifts[i])) {
			std::cin.clear();
			std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
			std::cout << "UPS podales zlom wartosc nieliczbowom. Sprobuj jeszcze raz: ";
		}
		sum += gifts[i];
	}
	// obliczanie sredniej dopiero po zakonczeniu petli:
	double average = sum / max; // jak double to trzymajmy sie go do konca

	int greater_size = 0;
	double greater_than_avg[max];
	for (int j = 0; j < max; j++) {
		if (average < gifts[j]) {
			greater_than_avg[greater_size] = gifts[j]; /* osobny iterator 
				dla drugiej tablicy, bo wartosci chcesz 
				miec od 0 do greater_size, a nie rozlozone jak 
				w pierwszej tablicy
			*/
			greater_size++;
		}
	}

	std::cout << "\n\nSrednia wynosi: " << average << std::endl;

	for (int k = 0; k < greater_size; k++) {
		std::cout << "\nLiczba wyzsza niz srednia to " << greater_than_avg[k];
	}
}

Podobne pytania

0 głosów
3 odpowiedzi 174 wizyt
pytanie zadane 24 października 2018 w C i C++ przez KmNwK Nowicjusz (210 p.)
0 głosów
1 odpowiedź 154 wizyt
pytanie zadane 5 grudnia 2018 w C i C++ przez Cevet Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 1,711 wizyt
pytanie zadane 4 listopada 2017 w C i C++ przez mn130496 Gaduła (3,530 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

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

...