[C++] losowanie 100 liz z przedziału a następnie zsumowanie tych które są podzielne przez 3

Alister14
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 21 paź 2019, o 10:42
Płeć: Mężczyzna
wiek: 26

[C++] losowanie 100 liz z przedziału a następnie zsumowanie tych które są podzielne przez 3

Post autor: Alister14 »

Jak w temacie
Potrzebuje wylosować 100 licz z przedziału \(\displaystyle{ p,k}\) a następnie zsumować te podzielne przez 3

Kod: Zaznacz cały

#include <iostream>
#include <cstdlib>
#include <time.h>
#include<stddef.h>
#include<math.h>

using namespace std;

int main()
{
    int tab[100],i;
    int k,p,suma;
    srand (time(NULL));
    cout << "Patryk Zielewski" << endl;
    cout<<"podaj p"<<endl;
    cin>>p;
    cout<<"podaj k"<<endl;
    cin>>k;
    for(int i=p; i<=k; i++)
    {
     tab[i]=rand()%(k-p+1)+p;
    cout<<tab[i]<<endl;}

    if (tab[i]%3==0);
      cout<<tab[i];}
     suma+=tab[i];}

    cout<<"suma liczb podzielnych przez 3 to:"<<suma<<endl;

    return 0;}

Będę wdzięczny za każdą rade.
Pozdrawiam
Ostatnio zmieniony 21 paź 2019, o 11:02 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
jeeey
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 28 paź 2019, o 12:05
Płeć: Mężczyzna
wiek: 33

Re: [C++] losowanie 100 liz z przedziału a następnie zsumowanie tych które są podzielne przez 3

Post autor: jeeey »

Powinno dzialac.
Pamietaj tylko, ze to jest wersja pod c++11.

Kod: Zaznacz cały


#include <random>
#include <iostream>

using namespace std;

int main()
{
	int p, k;
   	cout << "Patryk Zielewski" << endl;
    	cout << "podaj p" << endl;
    	cin >> p;
    	cout << "podaj k" << endl;
    	cin >> k;

	//https://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution
	//https://www.fluentcpp.com/2019/05/24/how-to-fill-a-cpp-collection-with-random-values/
	random_device rd;
	mt19937 generator(rd());
	uniform_int_distribution<> dis(p, k);

	int suma = 0;
	for(int i = 0; i < 100; ++i)
	{
		int random_number = dis(generator);
		if(not (random_number%3))
		{
			suma += random_number;
		}
	}

	cout << suma << endl;
}

ODPOWIEDZ