• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pomoc w zadaniu z losowaniem liczb bez powtórzeń

Object Storage Arubacloud
0 głosów
718 wizyt
pytanie zadane 20 grudnia 2015 w C i C++ przez Munvik Dyskutant (9,350 p.)

Witam.

Mam problem, głowie się cały dzień jak napisać program o takiej treści:

1. Napisz program, który wczyta 3 liczby podane przez użytkownika do tablicy, a następnie wylosuje 2 z nich bez powtórzeń. Wynik wypisz na ekran. Postaraj się napisać ten program w oparciu o funkcje. 

 

Potrzebuje konkretnych wskazówek bo kompletnie nie wiem jak to napisać

4 odpowiedzi

0 głosów
odpowiedź 20 grudnia 2015 przez natrov Gaduła (3,970 p.)
W internecie jest masa funkcji, w których za parametry podstawiasz tablicę i ilość liczb do wylosowania.

 

Pozdrawiam
0 głosów
odpowiedź 20 grudnia 2015 przez Ivan Maniak (60,650 p.)

Cześć niestety kod nie napiszę Ci ale mogę powiedzieć jak takie coś stworzyć.

  1. Musisz pobrać liczby od użytkownika i oczywiście zapisać do jednej tabeli. Jak pobrać informacje od użytkownika  możesz znaleźć w tym filmiku: https://www.youtube.com/watch?v=Kc98tH59A_U
  2. Musisz stworzyć funkcję, która będzie losowała liczbę od 1 - 3 lub od 0 - 2 [ 3 liczby ], jeżeli dana liczba się powtórzy to będziesz musiał powtórzyć funkcję [rekurencja], następnie pobrać z pierwszej tabeli liczbę i według wylosowanej liczby wybrać odpowiednią liczbę podaną przez użytkownika i zapisać ją do drugiej tabeli. Losowe liczby: https://www.youtube.com/watch?v=QapjTCGV7GM, tworzenie własnych funkcji: https://www.youtube.com/watch?v=HHplT1A4_A4 oraz rekurencja: https://www.youtube.com/watch?v=jNi_X5bvmQ0
  3. Wypisać z drugiej tabeli wszystkie rekodry. Jak to zrobić znajdziesz tutaj: https://www.youtube.com/watch?v=Kc98tH59A_U
komentarz 20 grudnia 2015 przez Munvik Dyskutant (9,350 p.)
Wydawało mi się, przedtem, że to proste. Teraz uważam to za jedno z wyzwań dla mnie.

Dzięki za opis :)
komentarz 20 grudnia 2015 przez niezalogowany
Przecież rekurencja jest całkowicie nie potrzebma w tym zadaniu!
komentarz 20 grudnia 2015 przez Ivan Maniak (60,650 p.)
Możliwe, ale w jaki sposób możemy wylosować liczbę bez powtórzeń?
komentarz 20 grudnia 2015 przez niezalogowany
Losujemy liczbę i sprawdzamy czy już takiej nie ma w tablicy, jeśli nie przypisujemy ją do jakiegoś indeksu tablicy, a jeśli tak to losujemy jeszcze raz i sprawdzamy. Przy odpowiednim zaplanowaniu nie potrzeba rekurencji.
komentarz 20 grudnia 2015 przez Ivan Maniak (60,650 p.)

Dobra, a jeżeli przy ponownym losowaniu wypadnie taka sama liczba? "jeśli tak to losujemy jeszcze raz i sprawdzamy" No własnie, jeżeli za drugim, trzecim, czwartym, piątym razem wypadnie taka sama liczba to co wtedy? Piszemy 5000 ifów tak aby być pewnym? Baaa.. nadal może wypaść za tym 5001 razem taka sama liczba. Pewnie jest na to około 33% [za każdym razem] szansy ale jednak jest. Wtedy na ekran wypiszą się dwie takie same liczby.

komentarz 20 grudnia 2015 przez niezalogowany
Wyśle ci na pw kod.
komentarz 20 grudnia 2015 przez Ivan Maniak (60,650 p.)
Faktycznie miałeś racje, ale to też nie zmienia że nie można zrobić rekurencją :) Pewnie używając do, while będzie też szybciej ale tu już nie jestem pewien.
komentarz 20 grudnia 2015 przez niezalogowany
Co do kodu który ci wysłałem w funkcji losuj jest błąd logiczny(zamiast 2 ma być 3). Ale masz racje rekurencja będzie szybsza(ale tylko przy większej ilości liczb co nie zmienia faktu że i tak jest szybsza).
0 głosów
odpowiedź 16 kwietnia 2017 przez piotrsz109 Stary wyjadacz (13,730 p.)
W funkcji wpisz kod losowania i zapisz wylosowana liczbę. Następnie zapętl, aby losowało dopóki nie będzie inna niż któraś z wylosowanych. Wywołaj funkcję pownownie lub skopiuj kod kilka razy i dopisz wypisywanie. Proste
0 głosów
odpowiedź 16 kwietnia 2017 przez mokrowski Mędrzec (155,460 p.)
edycja 16 kwietnia 2017 przez mokrowski

Algorytmy jak lot na księżyc.. 

1. Wczytaj 3 liczby do vector'a.. proste ... 

#include <vector>
#include <iostream>

int main() {
    using namespace std;

    vector<int> liczby(3);
    cin >> liczby[0] >> liczby[1] >> liczby[2];

}

2. Wykonaj pętlę po każdym elemencie vector przestawiając element jednego indeksu do wylosowanego innego indeksu z zakresu. Będziesz miał "pomieszaną kolejność"

3. Wyświetl pierwsze 2 liczby.

KONIEC :-)

PS. Aha.. następny męczony tablicami.. Do tablic podobnie...

#include <iostream>

int main() {
    int liczby[3];
    cin >> liczby[0] >> liczby[1] >> liczby[2];
}

 

Podobne pytania

0 głosów
4 odpowiedzi 139 wizyt
pytanie zadane 18 kwietnia 2017 w C i C++ przez Tomatek Początkujący (260 p.)
+1 głos
1 odpowiedź 504 wizyt
pytanie zadane 25 czerwca 2016 w C i C++ przez Jardee Początkujący (420 p.)
0 głosów
2 odpowiedzi 172 wizyt
pytanie zadane 24 maja 2016 w JavaScript przez Adam Jakś Dyskutant (8,940 p.)

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...