pekfos |
» 2014-07-27 11:35:27 Jest to funkcja w której następuje wczytanie 3 liczb podanych przez użytkownika do tablicy |
Że też to nie jest oczywiste by pomyśleć, dlaczego padło pytanie, zamiast dosłownie na nie odpowiedzieć.. Jak chcesz tak wczytać liczbę do tablicy, skoro najpierw przypisujesz, a potem dopiero wczytujesz..? Zmienna a nie jest tu do niczego potrzebna, poza stwarzaniem okazji do takich błędów. //edit: Znowu zły zakres losowania. |
|
Daedra Temat założony przez niniejszego użytkownika |
» 2014-07-27 12:00:00
#include <iostream> #include <cstdlib> #include <ctime>
using namespace std;
void wczytywanie_liczb( int tablica[], int element ) { cout << "Podaj 3 liczby" << endl; do { cin >> tablica[ element ]; cin.clear(); cin.sync(); element++; } while( element < 3 ); element = 0; cout << "Podales "; do { cout << tablica[ element ] << ", "; element++; } while( element < 3 ); cout << endl; }
int losowanie_elementu_tablicy() { return(( rand() % 3 ) + 0 ); }
bool sprawdzenie( int wylosowanab, int wylosowana ) { if( wylosowana != wylosowanab ) return false; else return true; }
int main() { srand( time( NULL ) ); int tab[ 3 ]; int ele = 0; wczytywanie_liczb( tab, ele ); int los, losb, nr; nr = 1; los = losowanie_elementu_tablicy(); cout << nr << ".Wylosowano: " << tab[ los ] << endl; do { losb = losowanie_elementu_tablicy(); if( sprawdzenie( losb, los ) == false ) { nr++; cout << nr << ". Wylosowano: " << tab[ losb ] << endl; } } while( nr < 2 ); }
Poprawiłem, działa tak jak działać miało, czyli zgodnie z poleceniem. Ale jak nie trudno zauważyć system sprawdzania czy los się nie powtórzył jest napisany śmiesznie z powodu mojego nierozgarnięcia. Przy kolejnym poleceniu wyglądałby o wiele śmieszniej... 2. Zmodyfikuj program z pierwszego zadania tak, aby użytkownik musiał podać 10 liczb, a 8 z nich będzie losowanych bez powtórzeń. Sprawdź czy wyniki są poprawne.
|
Zatem ponawiam pytanie, czy ktoś może napisać mi kod który zapewniam że przeanalizuję dokładnie? To nie jest praca domowa którą muszę zrobić... Robię to po to aby się nauczyć, chcę po prostu zrozumieć pewne rzeczy do których nie potrafię dojść sam. |
|
pekfos |
» 2014-07-27 12:08:05 Zadania domowe powinieneś robić samodzielnie, nie udzielamy gotowych odpowiedzi. Jeśli chcesz zepsuć sobie zadanie, szukaj gotowców w tematach podobnych do tego.
Wczytaj 10 liczb do tablicy i losuj indeksy do drugiej tablicy. Sprawdzanie ma obejmować wszystkie wylosowane już indeksy. |
|
Daedra Temat założony przez niniejszego użytkownika |
» 2014-07-28 12:22:29 #include <iostream> #include <ctime> #include <cstdlib>
using namespace std;
int losowanie( int ile ) { return( rand() % ile ) + 0; }
void podawanie( int tab[], int ile ) { cout << "Podaj " << ile << " liczb" << endl; int a, i; a = i = 0; do { cin >> a; cin.clear(); cin.sync(); tab[ i ] = a; i++; } while( i < ile ); }
bool sprawdzenie( int los, int tablica[], int ile ) { if( ile <= 0 ) return false; int i = 0; do { if( los == tablica[ i ] ) return true; else ++i; } while( i < ile ); return false; }
void wypisywanie( int tab[], int iileLosowac ) { int i; i = 0; do { cout << tab[ i ] << endl; i++; } while( i < iileLosowac ); }
int main() { srand( time( NULL ) ); int ileLiczb; cout << "Ile liczb wczytac?" << endl; cin >> ileLiczb; cin.clear(); cin.sync(); int t[ ileLiczb ]; int ileLosowac; cout << "Ile wylosowac?" << endl; cin >> ileLosowac; cin.clear(); cin.sync(); podawanie( t, ileLiczb ); int liczba; int i; int tzl[ ileLosowac ]; i = 0; do { liczba = losowanie( ileLiczb ); if( sprawdzenie( liczba, tzl, ileLosowac ) == false ) { tzl[ i ] = liczba; i++; } } while( i < ileLosowac ); cout << endl; wypisywanie( tzl, ileLosowac ); return 0; }
Ktoś ma jakieś uwagi, ewentualne sugestie czy można lub nawet trzeba coś poprawić? |
|
pekfos |
» 2014-07-28 14:32:15 Działa? if( los == tablica[ i ] ) return true; else ++i;
| else niepotrzebne, return kończy funkcję. Czasem niepotrzebnie rozdzielasz tworzenie zmiennej od nadania jej wartości. int t[ ileLiczb ];
int tzl[ ileLosowac ];
|
Tak się nie tworzy tablic. Zadanie zdaje się z góry określało ilości liczb. |
|
Daedra Temat założony przez niniejszego użytkownika |
» 2014-07-28 21:18:40 Rozumiem, kod poprawiłem i działa jak należy, większość moich wątpliwości została rozwiana jeżeli chodzi o to zadanie. Dzięki za rady, zamykam. |
|
1 « 2 » |