obi2exe Temat założony przez niniejszego użytkownika |
zadanie z poradnika c++ » 2013-06-24 21:54:51 Witajcie! Mam do rozwiązania zadanie z poradnika. Może i proste, ale kurs jest powierzchowny i bardzo ogólny, więc ciężko cokolwiek z niego wyciągnąć pożytecznego. Zagadnienia w nim umieszczone to raczej ogólne wytyczne bez sensownie ukazanych przykładów. Tak czy inaczej chcę go ukończyć i zabrać się za jakąś dobrą książkę C++. Mam do rozwiązania następujące zadanie: 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. To mój kod, funkcję miałem ale zrezygnowałem z niej. Dlaczego to nie działa i jak to naprawić? #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
int main() { int a, b, c, losowanie1, losowanie2; cout << "Wybierz pierwsza liczbe:" << endl; cin >> a; cout << "Wybierz druga liczbe:" << endl; cin >> b; cout << "Wybierz trzecia liczbe:" << endl; cin >> c; int tablica[ 3 ]; tablica[ 0 ] = a; tablica[ 1 ] = b; tablica[ 2 ] = c; srand( time( NULL ) ); do { losowanie1 =( rand() % tablica[ 3 ] ) + tablica[ 0 ]; losowanie2 =( rand() % tablica[ 3 ] ) + tablica[ 0 ]; } while( losowanie1 == losowanie2 ); cout << losowanie1 << losowanie2; return 0; } |
|
Matix8741 |
» 2013-06-24 22:02:59 Po pierwsze radzę nadawać wartości tablicy od razu przy definicji: int tablica[] = { a, b, c }; , według mnie ładniej i wygodniej, ale poza tym to przy losowaniu używasz czwartego elementu tablicy, którego nie ma tablica[ 3 ] |
|
obi2exe Temat założony przez niniejszego użytkownika |
» 2013-06-24 22:06:52 Nie jest tak. Przecież tablica[3] to przedział losowania, a dopiero za + jest element od którego zaczynam czyli od tablica[3]. |
|
Matix8741 |
» 2013-06-24 22:08:36 twoja tablica ma 3 elementy [0],[1] i [2], nie ma elementu [3] |
|
obi2exe Temat założony przez niniejszego użytkownika |
» 2013-06-24 22:10:55 Tak wiem ale natrafiłem na taki schemat: jakies_loswanie(rand()%przedział_losowania)+miejsce_losowania. przedzial_losowania to cala tablica przeciez a nie jej 3 element, natomiast miejsce to poczatek tablicy czyli 0. |
|
pekfos |
» 2013-06-24 22:11:03 Nie jest tak. Przecież tablica[3] to przedział losowania |
Właśnie, że jest. Jak chcesz losować indeksy, to losuj indeksy, a nie wartości z tablicy. Poza tym, masz wylosować dwie liczby z tych wprowadzonych przez użytkownika, a nie z zakresu podanego przez użytkownika. |
|
obi2exe Temat założony przez niniejszego użytkownika |
» 2013-06-24 22:15:17 To w takim razie jak poprawnie wygląda konstrukcja takiego wyrażenia dla mojego programu? Jak zapisać ten przedział, oraz początek i koniec losowania? Jak już wcześniej pisałem kurs C++ nie jest zupełny więc robię błędy często nie wynikające z mojego niedbalstwa. |
|
obi2exe Temat założony przez niniejszego użytkownika |
» 2013-06-24 22:17:02 Odnośnie tego co napisałeś... Jak losować indeksy? Nie jestem w stanie sam tego wykombinować. |
|
« 1 » 2 |