Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

lekcja 21,zadanie 1 -co jest nie tak

Ostatnio zmodyfikowano 2012-08-01 22:51
Autor Wiadomość
Berux
Temat założony przez niniejszego użytkownika
lekcja 21,zadanie 1 -co jest nie tak
» 2012-07-27 17:44:47
Napisałem kod,ale coś jest źle. Gdy program się uruchomi a ja wpiszę 3 liczby, to program nie chce przejść do dalszej części kodu.


C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

void wczytywanie( int t[] )
{
    int i = 0;
   
    do
    {
        cin >> t[ i ];
        i++;
    } while( i < 3 );
   
}

bool sprawdzanie( int t[], int ile, int iLiczba )
{
    if( ile <= 0 )
         return false;
   
    int i = 0;
    do
    {
        if( t[ i ] == iLiczba )
             return true;
       
    } while( i < ile );
   
   
    return false;
}
int losowanie()
{
   
    return( rand() % 3 ) + 0;
}
int main()
{
    srand( time( NULL ) );
    int wczytane[ 3 ];
   
    int wylosowanych = 0;
   
    wczytywanie( wczytane );
   
   
   
    do
    {
        int liczba = losowanie();
       
        if( sprawdzanie( wczytane, wylosowanych, liczba ) == false )
        {
            wczytane[ wylosowanych ] = liczba;
            wylosowanych++;
        }
    } while( wylosowanych < 2 );
   
   
    wylosowanych = 0;
   
    do
    {
        cout << wczytane[ wylosowanych ] << ",";
        wylosowanych++;
       
    } while( wylosowanych < 2 );
   
   
   
   
    return 0;
   
}

Z góry dzięki.
P-61265
Nevea
» 2012-07-27 18:34:35
Znalazłem jeden błąd(Moje wcześniejsze rozwiązanie było do bani, ponieważ nie przeczytałem treści zadania :D)
Tutaj:
C/C++
do
{
    if( t[ i ] == iLiczba )
         return true;
   
} while( i < ile );

Dodaj i++; Ponieważ pętla wykonuje się w nieskończoność.
P-61269
Berux
Temat założony przez niniejszego użytkownika
» 2012-07-27 22:17:50
dzięki za odpowiedź, przeoczyłem błąd.
P-61274
Berux
Temat założony przez niniejszego użytkownika
» 2012-07-27 23:21:43
Pomocy,drugie zadanie! Znowu coś nie tak, ale teraz coś z losowaniem bez powtórzeń.Z góry dziękuję za pomoc i przepraszam że tak dużo pytań zadaję w tym rozdziale. Kod:

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

void wczytywanie( int t[] )
{
    int i = 0;
   
    do
    {
        cin >> t[ i ];
        i++;
    } while( i < 10 );
   
}

bool sprawdzanie( int t[], int ile, int iLiczba )
{
    if( ile <= 0 )
         return false;
   
    int i = 0;
    do
    {
        if( t[ i ] == iLiczba )
             return true;
       
        i++;
       
    } while( i < ile );
   
   
    return false;
}
int losowanie()
{
   
    return( rand() % 10 ) + 0;
}
int main()
{
    srand( time( NULL ) );
    int wczytane[ 10 ];
   
    int wylosowanych = 0;
   
    wczytywanie( wczytane );
   
   
   
    do
    {
        int liczba = losowanie();
       
        if( sprawdzanie( wczytane, wylosowanych, liczba ) == false )
        {
            cout << wczytane[ liczba ] << ", ";
            wylosowanych++;
        }
    } while( wylosowanych < 8 );
   
   
   
   
   
   
   
    return 0;
   
}
P-61276
SeaMonster131
» 2012-07-27 23:33:01
Pomocy,drugie zadanie! Znowu coś nie tak, ale teraz coś z losowaniem bez powtórzeń.
"Znowu coś nie tak?" Kosmici zaatakowali Ziemię czy co? Napisz co jest nie tak - ułatwi to nam zadanie.
P-61277
Berux
Temat założony przez niniejszego użytkownika
» 2012-07-27 23:37:21
Poprostu, gdy wpisuję te 10 liczb to losuje 8 liczb, ale się powtarzają.

P-61278
Berux
Temat założony przez niniejszego użytkownika
» 2012-07-28 17:59:57
//odświeżam temat

pomóżcie
P-61306
mati1qazxsw2
» 2012-07-28 21:02:30

C/C++
unsigned int wylosowanych = 10;
...
do
{
    int liczba = losowanie();
   
    if( sprawdzanie( wczytane, wylosowanych, liczba ) == false )
    {
        cout << wczytane[ liczba ] << ", ";
        wylosowanych++;
    }
} while( wylosowanych < 10 );

...
P-61323
« 1 » 2 3
  Strona 1 z 3 Następna strona