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
» 2012-07-28 22:38:54
O co chodzi? Zmieniłem swój kod,ale nic się nie zmienia,oprócz tego, że nic nie wypisuje.

I treść zadanie,podam też pierwszą,bo druga nawiązuje do pierwszej.

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.

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.

P-61332
Berux
Temat założony przez niniejszego użytkownika
» 2012-07-30 12:24:10
Odświeżam...


Już chyba rozumiem o co chodziło użytkownikowi mati1qazxsw2. Prawdopodobnie w main'ie (w pętli do ... while) jest coś nie tak. Problem tkwi w tym,że szukam tego błędu, ale nigdzie go nie zauważam.

Proszę o pomoc.

/edit:

Już rozumiem. Cały program z zadania 1 i 2 był zły. Teraz napisałem coś takiego:

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

using namespace std;

void wczytywanie( int wczyt[] )
{
    cout << "Podaj 3 liczby:" << endl;
   
    int i = 0;
   
    do
    {
        cin >> wczyt[ i ];
        i++;
    } while( i < 3 );
   
}

bool sprawdzanie( int wczyt[], int wylos[], int ile, int iLiczba )
{
    int i = 0;
   
    if( ile <= 0 )
         return false;
   
    do
    {
        if( wylos[ i ] == iLiczba )
             return true;
       
        i++;
    } while( i < ile );
   
    return false;
}

int losowanie()
{
    return( rand() % 3 ) + 0;
}


int main()
{
    int wczytane[ 3 ];
    int wylosowane[ 2 ];
    int ile;
    int i;
   
    wczytywanie( wczytane );
   
    do
    {
        int liczba = losowanie();
       
        if( sprawdzanie( wczytane, wylosowane, ile, liczba ) == false )
        {
           
            cout << wczytane[ liczba ] << ", ";
            wylosowane[ i ] = liczba;
            ile++;
            i++;
           
        }
       
       
    } while( ile < 2 );
   
   
   
   
   
   
   
    return 0;
   
}


To do zadania 1. Tylko, że nic mi nie chce wypisać. Proszę o pomoc (mam nadzieję, że już ostatni raz w tym poziomie). Z góry dziękuję.
P-61420
czosnek17
» 2012-07-31 16:04:55
Jeżeli chcesz wczytać trzy liczby, powinno być:
int wczytane[ 2 ];

wczytane[ 0 ];
 << to też jest miejsce w tablicy. Czyli przypisujesz do miejsc 0,1,2.
Poza tym wylosowane liczby są teraz zawsze takie same.
http://cpp0x.pl/kursy/Kurs-C++/Poziom-2 /Pseudolosowe-liczby-calkowite/290

P-61499
sebastian56g
» 2012-07-31 16:14:28
Nie wprowadzaj w błąd.
Jak  chce wczytać 3 liczby to musi mieć tablice 3 elementową czyli
int tab[ 3 ]
Wtedy indeksami tablicy jest: 0, 1 i 2
P-61500
czosnek17
» 2012-07-31 16:23:28
Kurde, fail. Sory.
P-61501
sebastian56g
» 2012-07-31 16:31:20
Co do błędu. Nie zdefiniowałeś zmiennej "i" i "ile".
int i = 0;
int ile = 0;
Tak powinno być ok.
P-61502
Berux
Temat założony przez niniejszego użytkownika
» 2012-07-31 17:20:28
Poprawiłem oraz dodałem w main'ie srand(time(0)); / srand(time(NULL));, i nic się nowego nie stało. Dalej te same wyniki
P-61504
sebastian56g
» 2012-08-01 11:06:48
Co konkretnie Ci nie działa? Bo u mnie i na Ideone działa: http://ideone.com/zGWFR
P-61566
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona