fufelek Temat założony przez niniejszego użytkownika |
[Lekcja 21] jedna z liczb jest z kosmosu » 2011-10-28 20:18:39 Witam ponownie :)
a więc, kto mi wytłumaczy, co robię źle, że program sam wpisuje do tablicy "z kosmosu" czasem jedną, czasem więcej liczb?
#include <iostream> #include <ctime> #include <cstdlib> using namespace std;
int losujemy() { return( rand() % 10 ) + 1; }
bool sprawdzam( int s_tablica[], int s_liczba, int s_ile ) { if( s_ile <= 0 ) { return false; } int i; i = 0; do { if( s_tablica[ i ] == s_liczba ) { return true; } i++; } while( i < s_ile ); return false; }
int main() { int tablica[ 5 ]; int liczba; int ile; srand( time( NULL ) ); ile = 0; do { liczba = losujemy(); if( sprawdzam( tablica, liczba, ile ) == false ) { tablica[ ile ] = liczba; } ile++; } while( ile < 4 ); ile = 0; do { cout << tablica[ ile ] << '\n'; ile++; } while( ile < 5 ); }
Dzięki za wszelką pomoc. |
|
DejaVu |
» 2011-10-28 20:20:44 |
|
fufelek Temat założony przez niniejszego użytkownika |
» 2011-10-28 20:22:22 sprawdzałem to, jeśli zmienię na 5, to i tak losuje kosmos. A rozumiem to tak, że jeśli dam 5, to wyjdę poza tablicę (bo jest przecież od 0) |
|
SeaMonster131 |
» 2011-10-28 20:27:21 A rozumiem to tak, że jeśli dam 5, to wyjdę poza tablicę (bo jest przecież od 0) |
while( zmienna < 5 ); to zmienna musi być: ..,0,1,2,3,4Masz 5 elementów? :) Jeżeli dasz <= to wtedy będzie: ..,0,1,2,3,4,5 czyli wyjdziesz poza tablice ;p A co do kosmosu to sie nie przyglądałem ;p |
|
fufelek Temat założony przez niniejszego użytkownika |
» 2011-10-28 20:36:25 czas odpowiedzi na forum zaskoczył mnie mocno :)
w każdym razie nadal mam z tym problem, losuje mi dziwne liczby i w dodatku czasem powtarza liczbę 1... kombinuję z while, ale to nic nie daje. |
|
ison |
» 2011-10-28 23:20:37 do { liczba = losujemy(); if( sprawdzam( tablica, liczba, ile ) == false ) { tablica[ ile ] = liczba; } ile++; } while( ile < 4 );
|
zauważ co się dzieje gdy liczba się powtarza, lecisz dalej pomimo tego, że nic nie napisałeś na aktualnym indeksie tablicy przenieś ile++ do ifa sprawdzającego czy liczba się nie powtarza (i zmień while(ile<4) na while(ile<5)) |
|
fufelek Temat założony przez niniejszego użytkownika |
» 2011-10-29 10:09:32 faktycznie, taki "drobny" błąd, a tyle krwi napsuł... wiedziałem, że coś jest nie tak z liczeniem powtórzeń, ale wydawało mi się, że to był problem po stronie do { if( s_tablica[ i ] == s_liczba ) return true; i++; } while( i < s_ile );
i wczoraj kombinowałem z modyfikacją tego kodu :)
Dzięki za pomoc! |
|
« 1 » |