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

Nie wyświetla mi się żaden wynik. Zadanie z rodziału 21.

Ostatnio zmodyfikowano 2017-05-27 14:43
Autor Wiadomość
tgOGemD12
Temat założony przez niniejszego użytkownika
Nie wyświetla mi się żaden wynik. Zadanie z rodziału 21.
» 2017-05-20 12:00:05
Witam serdecznie. Mam problem z zadaniem z rozdziału 21, czy mógłby ktoś rzucić okiem i sprawdzić co jest nie tak ? wydaje mi się że rozumiem swój kod od początku do końca jednak nie widzę błedu a wynik się nie wyświetla.
C/C++
#include <iostream>
#include<cstdlib>
#include<ctime>

using namespace std;



int losowanie()
{
    return( rand() % 10 ) + 1;
}

bool sprawdzanie( int liczba, int em[], int ile )
{
    if( ile <= 0 )
         return false;
   
    int i = 0;
   
    if( em[ i ] == liczba )
    {
        return true;
        i++;
    } while( i < ile );
   
    return false;
}

int main()
{
    srand( time( NULL ) );
   
   
    int wizz = 0;
    int tg[ 5 ];
   
   
    for( int i = 0; i < 5; i++ )
    {
        int liczba = losowanie();
       
        if( liczba, tg[ i ], wizz )
        {
            tg[ wizz ] = liczba;
            wizz++;
        } while( wizz < 5 );
       
    }
   
    for( int i = 1; i < 6; i++ )
    {
        cout << " Liczba nr. " << i << " wynosi: " << tg[ i ] << "\n";
    }
   
    return 0;
}
P-161330
karambaHZP
» 2017-05-20 12:07:53
Nie potrafię zlokalizować miejca w którym mam błąd.
Do tych celów służy debugger.
P-161331
tgOGemD12
Temat założony przez niniejszego użytkownika
» 2017-05-20 12:29:59
Debugger nic nie znajduje.
P-161332
maly7
» 2017-05-20 13:03:41
Do czego służy ci ten warunek?
if( liczba, tg[ i ], wizz )
jesteś pewny, że chciałeś tam wstawić ','?

Poza tym, co to ma robić:
C/C++
if( liczba, tg[ i ], wizz )
{
    tg[ wizz ] = liczba;
    wizz++;
} while( wizz < 5 );
Program zawiesza się prawdopodobnie na pętli while, ponieważ ciągle sprawdza czy zmienna wizz jest mniejsza od 5 i nic z nią nie robi.
Jest do...while ale nie if...while.

@Jeszcze to:
C/C++
for( int i = 1; i < 6; i++ )
{
    cout << " Liczba nr. " << i << " wynosi: " << tg[ i ] << "\n";
}
Chcesz wyświetlić tg[5], a nie ma takiego elementu.
P-161333
wojownik266
» 2017-05-20 13:07:28
Skoro rozumiesz swój kod tak jak napisałeś. To mógłbyś pokrótce napisać co ten program ma robić? Bo ja nie za bardzo wiem.
P-161334
tgOGemD12
Temat założony przez niniejszego użytkownika
» 2017-05-20 13:12:48
To miałbyć warunek sprawdzający czy liczba się już wcześniej powtórzyła. Napisanie programu losującego nie stanowi żadnego problemu, tylko przez ten warunek z liczbami niepowtarzającymi się wszystko mi się gmatfa.

poprawiłem pętle for, teraz już jest.

Wciąż liczby się powtarzają, wydaję mi się, że mam zły warunek ale nie potrafię go poprawić.

#include <iostream>
#include<cstdlib>
#include<ctime>

using namespace std;

int losowanie()
{
    return ( rand() % 10 ) + 1;
}

bool sprawdzanie(int liczba, int em[], int ile)
{
    if(ile <= 0)
        return false;

    int i=0;

    if(em == liczba)
    do
    {
        return true;
        i++;
    }while(i<ile);

    return false;
}

int main()
{
    srand(time(NULL));

    int wizz = 0;
    int tg[5];

    for(int i=0; i<5; i++)
    {
        int liczba=losowanie();
        tg=liczba;

        if (sprawdzanie(liczba, tg, wizz))
        do
        {
            tg[wizz] = liczba;
            wizz++;
        }while(wizz<5);

    }

    for(int i=1; i<6;i++)
    {
        cout << " Liczba nr. "<< i<< " wynosi: "<< tg<<"\n";
    }

    return 0;
}
P-161335
maly7
» 2017-05-20 13:16:41
Wróć do poprzednich lekcji albo napisz prosty program i sprawdź eksperymentalnie jak działa ',' w instrukcji warunkowej.
if( liczba, tg[ i ], wizz )

to to samo co:
if( wizz )

@
tg = liczba;
Brakuje indeksu tablicy.

@teraz zauważyłem, że napisałeś funkcje która Ci to sprawdzała. Więc w ifie zapomniałeś wstawić po prostu jej nazwy.
P-161336
tgOGemD12
Temat założony przez niniejszego użytkownika
» 2017-05-20 13:34:29
W kompilatorze mam ten indeks, nie skopiował się. Wydaję mi się, że poprawiłem wszystko jednak dalej liczby się powtarzają, co wskazuje na problem z warunkiem, tylko co jest nie tak ?

#include <iostream>
#include<cstdlib>
#include<ctime>

using namespace std;

int losowanie()
{
    return ( rand() % 10 ) + 1;
}

bool sprawdzanie(int liczba, int em[], int ile)
{
    if(ile <= 0)
        return false;

    int i=0;

    if(em == liczba)
    do
    {
        return true;
        i++;
    }while(i<ile);

    return false;
}

int main()
{
    srand(time(NULL));

    int wizz = 0;
    int tg[5];

    for(int i=0; i<5; i++)
    {
        int liczba=losowanie();
        tg[ i ]=liczba;

        if (sprawdzanie(liczba, tg, wizz))
        do
        {
            tg[wizz] = liczba;
            wizz++;
        }while(wizz<5);

    }

    for(int i=1; i<6;i++)
    {
        cout << " Liczba nr. "<< i<< " wynosi: "<< tg<<"\n";
    }

    return 0;
}
P-161337
« 1 » 2
  Strona 1 z 2 Następna strona