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

Lekcja 17 Zadanie 4

Ostatnio zmodyfikowano 2017-03-01 18:41
Autor Wiadomość
IceMan85PL
Temat założony przez niniejszego użytkownika
Lekcja 17 Zadanie 4
» 2017-01-26 10:58:48
Mam problem z zdaniem, kod sie uruchamia, lecz nie losuje liczb z przedziału, nie wiem czy dobrze kombinuje:

C/C++
#include <iostream>
#include <ctime>
#include <cstdlib>

//Napisz funkcję, która losuje liczbę z przedziału, który zostanie podany poprzez argumenty funkcji. Przetestuj funkcję w poniższy sposób:

using namespace std;

int losowanie( int start, int stop )
{
    int a =( rand() % stop ) + start;
    return a;
   
}


int main()
{
    srand( time( NULL ) );
    int start;
    std::cin >> start;
    int stop;
    std::cin >> stop;
    int ile = 20;
    do
    {
        std::cout << losowanie( start, stop ) << std::endl;
        ile--;
    } while( ile > 0 );
   
    return 0;
}
P-156962
mateczek
» 2017-01-26 11:16:58
C/C++
int losowanie( int start, int stop ) //weźmy zakres od 5 do 8;
{
    //ile liczb wylosować
    int lileLiczb = stop - start + 1; //8-5+1 = 4. Tutaj liczymy ile różnych liczb będzie w przedziale. Otrzymany wynik oznacza że w przedziale od 5 do 8, są 4 liczby.
    int temp = rand() % ileLiczb; //w wyniku takiej operacji uzyskamy jedną z następujących liczb {0,1,2,3 }
    //bo reszta z dzielenia przez 4 jest jeną z liczb z przedziału od <0,3>
    int wynik = temp + start; // ta operacja sprawi że z liczb z przedziału {0,1,2,3 } po dodaniu dolnej granicy otrzymamy przedział {5 6 7 8}
    return wynik;
   
}
P-156963
IceMan85PL
Temat założony przez niniejszego użytkownika
» 2017-02-28 21:06:07
Może ktos powiedziec dlaczego funkcja zwraca wartosc z losowania pomimo tego ze nie ma
return a;
 w funkcji

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int losowanie( int start, int stop )
{
    int a =( rand() %( stop - start + 1 ) ) + start;
   
   
}

int main()
{
    srand( time( NULL ) );
    int start;
    std::cin >> start;
    int stop;
    std::cin >> stop;
    int ile = 20;
    do
    {
        std::cout << losowanie( start, stop ) << std::endl;
        ile--;
    } while( ile > 0 );
   
    return 0;
}
P-158388
carlosmay
» 2017-02-28 21:32:21
To nie powinno się skompilować.
Masz za niski poziom ostrzeżeń :)
P-158392
IceMan85PL
Temat założony przez niniejszego użytkownika
» 2017-03-01 18:09:14
Jednak sie skompilowalo, uzywam codeblocks nic w nim nie przestawialem. Wiec jedyny blad w kodzie to brak return?
P-158416
IceMan85PL
Temat założony przez niniejszego użytkownika
» 2017-03-01 18:41:52
A czy to zadanie z lekcj 18 jest poprawnie zrobione? Jak ustawic ostrzezenia w kompilatorze by bylo ok?
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.
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int los()
{
    int a;
    a =( rand() % 7 ) + 4;
    return a;
}

int main()
{
    srand( time( NULL ) );
    int liczby[ 999 ]; int licznik = 0, suma = 0;
    do
    {
        liczby[ licznik ] = los();
        licznik++;
    } while( licznik < 999 );
   
    licznik = 0;
    do
    {
        cout << licznik + 1 << "." << liczby[ licznik ] << endl;
        suma += liczby[ licznik ];
        licznik++;
    } while( licznik < 999 );
   
    cout << "Suma wylosowanych liczb:" << suma;
   
    return 0;
}
P-158417
« 1 »
  Strona 1 z 1