Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Pomoc zprostym kodem, PD, help


Gość Bylduda

Rekomendowane odpowiedzi

Opublikowano

Witam robie tutorialka i mam takie zadanko:

Zadanie domowe

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.

 

Już tyle się meczyłem z tym, wiem, że popaprałem to ale tyle wersji robiłem, błędy wyskakiwały, niech ktoś pomoże, tutaj macie ostatni kod jaki zrobiłem:

#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
srand( time( NULL ) );
int liczby =( std::rand() % 50 ) + 7 [ 400 ];
int licznik = 0;


do
{

    std::cout << "Liczby wylosowane" << liczby [licznik];


    licznik++;

} while ( licznik < 400);


    return 0;
}


Wiem, że ten kod jest zesrany ale się tak pogubiłem, dla mnie to za dużo. ten kurs robie od dzisiaj, myślę że jakieś postępy, ale w tym zadanku się zesrałem :/

Kod miał bardzo dużo form ale w końcu przestałem myśleć logicznie.

Opublikowano

1. Tworzysz tablicę, która ma 999 elementów. ( int tablica[999]; )

2. Tworzysz licznik, ustawiasz go na 0;

3. Tworzysz pętle while, która działa dopóki licznik jest mniejszy od 999.

4. W środku pętli:

- tablica[licznik] = std::rand()%7 + 4;

- ++licznik;

5. Poza pętlą tworzysz zmienną wynik, której wartość ustawiasz na 0

6. Tworzysz kolejną pętle, tym razem for, ustawiasz i(i = licznik) na 0, działa dopóki jest mniejsza od 999 (i < 999), dodajesz co krok 1 (++i).

7. W środku pętli:

- wynik += tablica;

8. Za pętlą wypisujesz wartość zmiennej wynik.

 

Raczej niczego nie pominąłem, spróbuj to zaimplementować.

Opublikowano

Nie prościej pętla for?

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

można i tak i tak, ale kiedyś tu było takie zadanie i mi się skojarzyło while

Opublikowano


#include <iostream>

#include <cstdlib>

#include <ctime>

 

using namespace std;

 

int main()

{

int tablica[999], suma_liczb = 0;//deklarujesz tablice 999 elementow i zmienna do //sumy

srand( time( NULL ) );

for(int i=0; i<999; ++i)

{

tablica =( rand() % 7 ) + 4 ; // generujesz libe z swojego przedzialu //chcesz od 4 do 10 to mod 7 +4

cout << tablica << endl; //wyświetlasz liczbe

}

for(int i=0; i<999; ++i)//ta petla sumuje tobie liczby z tablicy

suma_liczb+=tablica; // to to samo co suma_liczb = suma_liczb + tablica

 

cout << "Suma liczb = " << suma_liczb << endl;//wynik sumowania

return 0;

}

 

Opublikowano

Mozna to zrobić w jednym for (sumowanie zrobić od razu przy losowaniu), ale jest chyba ok

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Mozna to zrobić w jednym for (sumowanie zrobić od razu przy losowaniu), ale jest chyba ok

ale wtedy by się nie zgadzało z treścią zadani ;) Pewnie w tym zadaniu chodzi o przeszkolenie sobie pętli, dlatego powinny być 2.

Opublikowano

Na tamtym kursie(cpp0x) jeszcze nie poinformowali ich o istnieniu czegoś takiego jak pętla for. Dla wyjaśnienia:

for (coś, co wykona się przed rozpoczęciem pętli, np. int i = 0, warunek pętli, np. i < 999 , coś, co wykona się po każdym wykonaniu pętli, np. i++) { zawartość pętli }

Opublikowano
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
srand( time( NULL ) );
int tablica [ 400 ];
int licznik = 0;
int suma_liczb = 0;
do
{
    tablica[licznik] = std::rand()%7 + 4;
    ++licznik;
std::cout << tablica[licznik] << std::endl;

} while ( licznik < 400);
 for(int i=0; i<999; ++i)
        suma_liczb+=tablica[i]; 

    std::cout << "Suma liczb = " << suma_liczb << std::endl;
    return 0;


}


Zrobiłem tak, niby ok ale nie losuje z przedziału liczb. Help

Opublikowano

Losuje, ale w Twoim kodzie jest błąd.

 

Tworzysz tablicę 400 elementową:

int tablica [ 400 ];

i w pętli pierwszej jest wszystko prawie dobrze(ja wcześniej źle opisałem), powinno być nie (licznik < 400) tylko licznik < 399

W dodatku powinieneś najpierw wypisywać, a potem zwiększać licznik.

 

Po 2 w drugiej pętli wychodzisz ostro poza zakres tablicy. Tablica ma 400 elementów a Ty jedziesz aż po 998 element.

 

czyli musisz zmienić tam właśnie na i < 400, nie i < 999.

 

Poprawiony kod:

 

 

#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
    srand( time( NULL ) );
    int tablica [ 400 ];
    int licznik = 0;
    int suma_liczb = 0;
    do
    {
        tablica[licznik] = std::rand()%7 + 4;
         std::cout << tablica[licznik] << std::endl;
        ++licznik;
    }
    while ( licznik < 399);
    for(int i=0; i<399; ++i)
        suma_liczb+=tablica[i];

    std::cout << "Suma liczb = " << suma_liczb << std::endl;
    return 0;
}
 

 

 

 

@@ps. dobrym nawykiem jest tworzenie zmiennych dopiero gdy ich potrzebujemy, tutaj mógłbyś (ale nie musisz)po pierwszej pętli stworzyć zmienną suma_liczb.

Opublikowano

Losuje, ale w Twoim kodzie jest błąd.

 

Tworzysz tablicę 400 elementową:

int tablica [ 400 ];

i w pętli pierwszej jest wszystko prawie dobrze(ja wcześniej źle opisałem), powinno być nie (licznik < 400) tylko licznik < 399

W dodatku powinieneś najpierw wypisywać, a potem zwiększać licznik.

 

Po 2 w drugiej pętli wychodzisz ostro poza zakres tablicy. Tablica ma 400 elementów a Ty jedziesz aż po 998 element.

 

czyli musisz zmienić tam właśnie na i < 400, nie i < 999.

 

Poprawiony kod:

 

 

#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
    srand( time( NULL ) );
    int tablica [ 400 ];
    int licznik = 0;
    int suma_liczb = 0;
    do
    {
        tablica[licznik] = std::rand()%7 + 4;
         std::cout << tablica[licznik] << std::endl;
        ++licznik;
    }
    while ( licznik < 399);
    for(int i=0; i<399; ++i)
        suma_liczb+=tablica[i];

    std::cout << "Suma liczb = " << suma_liczb << std::endl;
    return 0;
}
 

 

 

 

@@ps. dobrym nawykiem jest tworzenie zmiennych dopiero gdy ich potrzebujemy, tutaj mógłbyś (ale nie musisz)po pierwszej pętli stworzyć zmienną suma_liczb.

Bo robiłem najpierw do 400 liczb i skopiowałem z tego tematu i kupa wyszła.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...