vector i losowanie liczb bez powtórek

0

Witam mam do napisania program. Dla ludzi rozumiejących jezyk c++ to kilka minut ale ja nie ogarniam go nastawiony jestem na pascala ale cóż do rzeczy oto ono:
1.Wypełnij wektor losowymi wartościami z zakresu od 1 do 100. Napisz program, który stwierdzi, czy w wektorze znajduje się element o wczytanej dowolnej wartości, a jeśli tak, to na jakiej pozycji (poszukiwanie liniowe, czyli sekwencyjne).

2

Nie wiem czy komuś chce się pomagać leniom. Znalezienie niemal takiego gotowca nie zajmuje więcej niż 10 minut.

0

Od razu leniom nie ogarniam tego. Tzn wiem jak sie losuje ale nie wiem jak wyrzucac liczby z tablicy juz wylosowanie oraz jak podpisywać wektory.jeszcze jakby wektory byly po kolej to jakos by było. A to wyszukiwanie to w ogóle nie rozumiem. PLzzz pomocy

0

Prosty pseudo-kod

[code]
vector<int> liczby;

void losuj() {
for(int i = 0; i < 30; i ++)
{
int losowaLiczba = rand() % 100;

bool istnieje = false;

for(int j = 0; j < liczby.size(); j ++)
{
if(liczby[j] == losowaLiczba) istnieje = true;
}

if(!istnieje) liczby.push_back(losowaLiczba)
}
}
[/code]

0

nastawiony jestem na pascala

a dlaczego nastawiasz się na pascala? Co takiego ciekawego oferuję ten język? Potrafisz napisać to w pascalu? Jeżeli napiszesz, to napiszę Ci to w C++.

0

nie taki pseudo.. - kopernik 2 minuty temu ??

nie rozumiem

0

Psuedo-Kod mozna tez nazwa kod podony do jakiegos jezyka ( i niewiem o co sie czepiasz ja chociaz proboje pomoc ) :)

1

//Wypełnij wektor losowymi wartościami z zakresu od 1 do 100.
//Napisz program, który stwierdzi, czy w wektorze znajduje się
//element o wczytanej dowolnej wartości, a jeśli tak, to na jakiej pozycji
//poszukiwanie liniowe, czyli sekwencyjne).

#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <ctime>
using namespace std;

int main()

{

srand(int(time(NULL)));
int long losowa, a ,b;

cout<<"Od: ";
cin>>a;
cout<<"Do: ";
cin>>b;

long c = b - a;
c++;

losowa=(rand()%c)+a;
cout<<losowa;

getch();
} mam taki zarys ktos to uzupełnie?

6

Cześć pomoże mi ktoś napisać system operacyjny? Mam już zarys ale nie wiem co dalej robić. Programuję od jakiegoś czasu, a języki które znam to:

Ada ALGOL BASIC BCPL CLIPPER 5.3 CLush COBOL Cobra Common Lisp Corn Curl DASL Delphi DIBOL 
Dylan dylan.NET eC (Ecere C) Eiffel eLisp Emacs Lisp Erlang Factor Fancy Formula One Forth Fortran Go Groovy Haskell Harbour Java JOVIAL LabVIEW Objective-C Pascal RPG Scheme Smalltalk Urq Vala Visual Visual FoxPro Visual Prolog WinDev X++ XL Z++

Wnikliwi userzy zauważą pewnie iż w tej liście nie ma c++, a ja właśnie mój system muszę napisać w c++. Dla was to pewnie pryszcz jak siądziecie wszyscy razem to kiedyś coś sklecicie, a ja nie znając tego języka nie dam rady napisać tego nigdy.

a tutaj wspomniany wcześniej zarys mojego systemu:

 
#include <iostream>
int main()
{
    std::cout << "ladowanie systemu...";
}

co dalej? Sztopłem i nie wiem co robić ;( pomóżcie mi!

0

Dopisz sobie tylko obsługę użytkownika, podawanie zmiennych itd.

#include <iostream>
#include <algorithm>
#include <iterator>
#include <cstdlib>
#include <ctime>
#include <vector>
using namespace std;

void WypelnijWektor(vector<int> &vec, int min, int max, unsigned int rozmiar)
{
    if(vec.size() == 0)
    {
        int wylosowana;
        bool czyZawiera = false;
        vector<int>::iterator it;
        srand(time(0));

        while(vec.size() < rozmiar)
        {
            wylosowana = (rand()%max)+min;
            it = vec.begin();

            while(it != vec.end())
            {
                if(*it == wylosowana)
                {
                    czyZawiera = true;
                    break;
                }
                ++it;
            }

            if(!czyZawiera)
            {
                vec.push_back(wylosowana);
            }
            czyZawiera = false;
        }
    }
}

int ZnajdzElement(const vector<int> &vec, int element)
{
    for(unsigned int i = 0; i < vec.size(); i++)
    {
        if(vec[i] == element)
        {
            return i;
        }
    }
    return -1;
}

int main()
{
    vector<int> vec;
    int min = 1, max = 100, rozmiar = 50;

    WypelnijWektor(vec, min, max, rozmiar);

    copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, ", "));
    cout << vec.size();

    int szukanyElement = 5;

    cout << endl << endl;
    cout << ZnajdzElement(vec, szukanyElement);
}

http://cplusplus.com/reference/

2

Pytanie było do osób znających C++ – tak właśnie napisałaby to osoba znająca się. :)

#include <iostream>
#include <random>
#include <vector>
#include <algorithm>
#include <iterator>

int main()
{
	const int min = 1, max = 100;
	std::random_device seed;
	std::default_random_engine rand(seed());
	
	std::vector<int> vec(max - min + 1);
	int val = min;
	std::generate(vec.begin(), vec.end(), [&]() { return val++; });
	std::random_shuffle(vec.begin(), vec.end(), [&](ptrdiff_t i) { return rand() % i; });
	std::copy(vec.cbegin(), vec.cend(), std::ostream_iterator<int>(std::cout, " "));
	
	int num;
	std::cout << "\nGive the number to check: ";
	std::cin >> num;

	auto pos = find(vec.cbegin(), vec.cend(), num);
	if (pos == vec.end())
		std::cout << "There is no number " << num << " in the sequence.\n";
	else
		std::cout << "The number " << num << " is at the position " << distance(vec.cbegin(), pos) << ".\n";
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1