[Lekcja 18] Czy da się pododawać wszystkie wypisane liczby programie za pomocą pętli do... while?
Ostatnio zmodyfikowano 2016-06-26 10:28
_barto567_ Temat założony przez niniejszego użytkownika |
[Lekcja 18] Czy da się pododawać wszystkie wypisane liczby programie za pomocą pętli do... while? » 2016-06-25 17:21:29 Jak (jeśli w ogóle) da się pododawać wszystkie liczby w pętli do... while w zadaniu: Napisz program, który wylosuje 999 liczb całkowitych z zakresu od 4 do 10 włącznie, wypisze te wartości na ekran, po czym zsumuje je i wynik wypisze na ekran. Program ma wykorzystywać tablicę, która zostanie najpierw wypełniona liczbami losowymi z określonego przedziału, a następnie wynik zostanie obliczony na podstawie zawartości całej tablicy. ? Czy po prostu pododawać te wszystkie liczby ( czyli 999 ) pisząc normalnie: nazwa_tablicy[ 1 ] + nazwa_tablicy[ 2 ] + zmienna[ 3 ] + nazwa_tablicy[ 4 ]... + nazwa_tablicy[ 996 ] + nazwa_tablicy[ 997 ] + nazwa_tablicy[ 998 ] + nazwa_tablicy[ 999 ]... #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main() { srand( time( NULL ) ); int liczby[ 999 ]; int licznik = 0; do { liczby[ licznik ] =( rand() % 6 ) + 4; licznik++; } while( licznik < 999 ); std::cout << "Wylosowane są nastepujace liczby: "; licznik = 0; do { std::cout << liczby[ licznik ] << ", "; licznik++; }while( licznik < 999 ); return 0; }
Z góry dziękuję za pomoc :) ! P.S
Jakby się nie dało to moglibyście to napisać, że się nie da?
|
|
carlosmay |
» 2016-06-25 18:57:14 Jakby się nie dało to moglibyście to napisać, że się nie da? |
Da się :) (i to na kilka sposobów). Rozbij program na funkcje: - pierwsza niech losuje i zwraca liczbę z zadanego przedziału, - druga niech wypełni przekazaną tablicę za pomocą pętli, - trzecia niech wypisze wszystkie wartości z tablicy, - czwarta niech zsumuje i zwróci wynik wszystkie wartości za pomocą pętli, - wynik wypisz w main(). #include <array> #include <iostream> #include <random>
constexpr int SIZE = 999; std::random_device rd; std::mt19937 generator( rd() );
int getRandomedNumber( int begin, int end ) { std::uniform_int_distribution < int > distance( begin, end ); return distance( generator ); }
void fillArray( std::array < int, SIZE >& arr, int begin, int end ) { for( int i = 0; i < arr.size(); ++i ) { arr[ i ] = getRandomedNumber( begin, end ); } }
void printArray( std::array < int, SIZE >& arr ) { for( int i = 0; i < arr.size(); ++i ) { std::cout << arr[ i ] << '\n'; } }
int comptArray( std::array < int, SIZE >& arr ) { int sum = 0; for( int i = 0; i < arr.size(); ++i ) { sum += arr[ i ]; } return sum; }
int main() { int begin = 4; int end = 10; std::array < int, SIZE > arr { }; fillArray( arr, begin, end ); printArray( arr ); std::cout << "Suma wszystkich elementów tablicy wynosi: " << comptArray( arr ) << '\n'; } @edit: funkcja sumująca z użyciem do { } while; int comptArray( std::array < int, SIZE >& arr ) { int sum = 0; std::size_t i = 0; do { sum += arr[ i++ ]; } while( i < arr.size() ); return sum; } |
|
_barto567_ Temat założony przez niniejszego użytkownika |
Dzięki ale... » 2016-06-26 10:28:20 Widać że się postarałeś mi odpowiedzieć tylko ja jeszcze nie miałem tematu z tablicami i funkcją i ogólnie nie chce robić czegoś w sposób który jeszcze nie znam ale mimo wszystko dzięki.
P.S
Wiem że to dziwne, ale ja takk mam :) Aczkolwiek jeśli bym chciał do tego zadania wrócić kiedy bym już się na tym znał to by to wykorzystał. |
|
« 1 » |