Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

lekcja 18 praca domowa problem z sumą.

Ostatnio zmodyfikowano 2017-09-06 10:21
Autor Wiadomość
AmbitnyIdiota
Temat założony przez niniejszego użytkownika
lekcja 18 praca domowa problem z sumą.
» 2017-09-04 22:44:17
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. 


początek wydaje mi się, że wykonałem poprawnie ale bardzo proszę o sprawdzenie i doradzenie czy mógłbym zrobić coś lepiej, jedyny problem mam z pogrubioną częścią zadania, nie do konca wiem jak zapisać sumę wszystkich losowych liczb, zmieniłem na 100 dlatego że przy 999 wypisywało mi mniej, też w nie wiem dlaczego.

na razie napisałem takie coś:

#include <iostream>
#include <cstdlib>
#include<ctime>

using namespace std;

int main()

{
    srand(time(NULL));

    int i, ilosc = 1, suma = 0, wynik;
    int liczby[999];

    for(i = 0; i<100 ;i++)

{
    liczby[i] = rand()%7+4;
    cout << "numer "<< ilosc++<< ".   ";
    cout << liczby[i] << endl;
    suma+liczby[i]=wynik;
}
    return 0;
}
P-164601
pekfos
» 2017-09-04 23:07:32
C/C++
suma + liczby[ i ] = wynik;
Co to?
P-164602
AmbitnyIdiota
Temat założony przez niniejszego użytkownika
» 2017-09-05 11:07:04
Jeszcze nie wpadłem na to jak zsumować te wszystkie losowe liczby, ale zauważyłem jeden problem. Moja ilość wylosowanych liczb się nie zgadza, jak losuje od 0 do 1000 to program losuje 4128 razy. Co jest nie tak?

okej, miałem za mało zmiennych przypisanych do tablic jak chciałem losować od o do 1000. ale nadal nie wiem jak zsumować wszystkie liczby.
P-164610
karambaHZP
» 2017-09-05 12:26:33
Wypisuje mniej bo taka jest prawdopodobnie wysokość konsoli (patrz właściwości).
Przypisanie w C++ jest do lewej, a nie do prawej.
P-164611
Kinexity
» 2017-09-05 16:30:30
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main() {
    srand( time( NULL ) );
    int suma = 0;
    const int rozmiar = 999;
    int liczby[ rozmiar ];
    /* Jeżeli masz tablicę, to lepiej jest jej rozmiar trzymać w jakiejś stałej
    - usunie to wtedy problem tych "liczb magicznych" w kodzie
    oryginalny zapis: int liczby[999] */
    for( int i = 0; i < rozmiar; i++ ) {
        /* Zmienną można deklarować na początku pętli for - nie musisz tego robić wcześniej
        orginalny zapis:  for (i = 0; i < 100; i++)*/
        liczby[ i ] = rand() % 7 + 4;
        cout << "numer " << i + 1 << ".   " << liczby[ i ] << endl;
        /* Zmienna ilosc jest całkowicie niepotrzebna
        oryginalny zapis: cout << "numer " << ilosc++ << ".   " << liczby[i] << endl;*/
        suma += liczby[ i ];
        /* Tutaj to już w ogóle magia była - to nie jest matematyka
        - zmienna do której przypisujesz musi być z LEWEJ! W ogóle
        skoro musisz zsumować wylosowane liczby to nie rozumiem sensu zmiennej wynik
        oryginalny zapis: suma + liczby[i] = wynik;*/
    }
    cout << "Suma: " << suma << endl;
    /*Wypisania sumy mi tu brakowało*/
    return 0;
}
P-164616
karambaHZP
» 2017-09-05 20:14:30
zmienna do której przypisujesz musi być z prawej!
?
wynik = wartość wyrażenia
lewa = prawa
P-164619
Kinexity
» 2017-09-05 20:37:22
jestem idiotą - @karambaHZP trafnie zauważył mój błąd - zmienna do której przypisujemy musi być z lewej
P-164620
baziorek
Doradzenie co możnaby lepiej
» 2017-09-05 22:31:45
@Ambitny:
Pytałeś jak można by to zrobić lepiej, do sumowania liczb polecam funkcje:
std::accumulate(), przy jej użyciu możesz zsumować liczby w następujący sposób:
C/C++
const unsigned iloscLiczb = sizeof( liczby ) / sizeof( liczby[ 0 ] );
cout << "Suma wylosowanych liczb: " << accumulate( liczby, liczby + iloscLiczb, 0 );

Poza tym jeśli cenisz każdą sekundę czasu aby nie używać
std::endl
 w pętli, zamiast tego proponuję:
cout <<...<< '\n';

Poza tym jeśli losujesz liczby w C++ polecam użyć odpowiednich narzędzi z C++ np:
http://www.cplusplus.com​/reference/random​/uniform_int_distribution/, minimalistyczny przykład:
https://stackoverflow.com​/questions/13445688​/how-to-generate-a-random-number-in-c
P-164621
« 1 » 2
  Strona 1 z 2 Następna strona