Problem z sumowaniem liczb z tablicy.
Ostatnio zmodyfikowano 2017-01-06 15:03
arsen358 Temat założony przez niniejszego użytkownika |
Problem z sumowaniem liczb z tablicy. » 2017-01-06 14:42:41 Treść zadania: Wylosuj 16 liczb float z zakresu 0..9 i wpisz do tablicy. Wypisz tablicę. Oblicz średnią wszystkich wartości większych, niż 5. Wypisz tę średnią. Doszedłem do tego etapu: #include <iostream> #include <windows.h> #include <time.h>
using namespace std;
float tab[ 10 ], liczba, a, b, suma = 0;
int main() { cout << "Oto 16 wylosowanych liczb:" << endl; a = 0, b = 9; srand( time( 0 ) ); for( int i = 0; i < 16; i++ ) { tab[ i ] = a +( float ) rand() / RAND_MAX *( b - a ); cout << tab[ i ] << endl; } cout << "---" << endl; for( int i = 0; i < 16; i++ ) { if( tab[ i ] > 5 ) { suma = suma + tab[ i ]; cout << tab[ i ] << endl; } } cout << "Suma: " << suma << endl; return 0; } I tu mam problem. Suma liczb większych od 5 wychodzi dziwaczna. Raz jest jest sporo za mała od rzeczywistej, następnym razem liczba wychodzi koło 100000. Gdzie leży błąd? Z góry bardzo dziękuje za wszystkie komentarze.[/i] |
|
Gibas11 |
» 2017-01-06 14:53:30 1. Nie używaj zmiennych globalnych ani using namespace std; . 2. Zadeklarowałeś nieużywaną zmienną 'liczba'. 3. Do sumowania użyj std::accumulate. suma = std::accumulate( tab, tab + 10, 0.f,[]( float total, float i ) { if( i > 5 ) { total += i; } return total; } ); 4. Iterujesz w pierwszej pętli po 16 elementach 10-elementowej tablicy. |
|
mokrowski |
» 2017-01-06 14:56:48 Jak napisał @Gibas11, iterowałeś po 16 elementach 10 elementowej tablicy. Od indeksu 10 do 15 mogły być śmieci stąd niedorzeczna średnia. Ja dodam jeszcze od siebie: 5. Nazywaj zmienne tak aby było wiadomo o co chodzi (a i b to złe nazwy). 6. Deklaruj stałą z ilością indeksów zamiast wpisywać pracowicie wszędzie 16. |
|
arsen358 Temat założony przez niniejszego użytkownika |
Dzięki wielkie » 2017-01-06 15:03:30 Głupi błąd ale prawdopodobnie bez Waszej pomocy nie wpadłbym na niego. Będę próbował zastosować Wasze uwagi. Jeszcze raz wielkie dzięki! |
|
« 1 » |