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

[ lekcja 21 ]Problemik z losowanie bez powtórzeń

Ostatnio zmodyfikowano 2013-06-28 15:51
Autor Wiadomość
Proleks
Temat założony przez niniejszego użytkownika
[ lekcja 21 ]Problemik z losowanie bez powtórzeń
» 2013-06-27 13:12:58
Simaneczko znowu mini problem albo mega chociaż wątpię :p chodzi o to ,że występują mi następujące błędy ;

wistu\Pulpit\C++\uczymyreturn1.cpp||In function 'int main()':|
wistu\Pulpit\C++\uczymyreturn1.cpp|51|error: invalid conversion from 'int' to 'int*'|
wistu\Pulpit\C++\uczymyreturn1.cpp|25|error: too many arguments to function 'bool czybyla(int, int*, int)'|
wistu\Pulpit\C++\uczymyreturn1.cpp|51|error: at this point in file|
wistu\Pulpit\C++\uczymyreturn1.cpp|44|warning: unused variable 'liczba'|
||=== Build finished: 3 errors, 1 warnings ===|

Dokładnie chodzi o linijki 25, 51 nie wiem dlaczego tak jest ;/

oto kodzik jeszcze nie skończony bo znalazłem ten błąd własnie
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int wczytujemy( int wczytane[], int a )
{
    int licznik = 0;
    cout << "Podaj 3 liczby " << endl;
    do
    {
        cin >> wczytane[ licznik ];
        licznik++;
       
    } while( licznik < 3 );
   
    return wczytane[ licznik ];
}

int wylosuj_liczby()
{
    return( rand() % 3 );
}

bool czybyla( int ile, int tablica[], int licznik )
{
    if( licznik <= 0 )
         return false;
   
    int i = 0;
    do
    {
        if( tablica[ i ] == ile )
       
             i++;
       
    } while( i < licznik );
   
   
}
int main()
{
    srand( time( NULL ) );
    int wczytane[ 3 ];
    int wylosowane = 0;
    int liczba = wczytujemy( wczytane, 3 );
    int ile = 0;
    int licznik = 0;
   
    do
    {
        wylosowane = wczytane[ wylosuj_liczby() ];
        if( czybyla( wylosowane, 3, ile, licznik ) );
       
    } while( licznik < 3 );
   
}
P-86347
pekfos
» 2013-06-27 13:24:06
Funkcja przyjmuje 3 argumenty, a ty pchasz 4.
P-86349
Proleks
Temat założony przez niniejszego użytkownika
» 2013-06-27 13:56:59
Teraz daje po 3 i błąd jest inny :p

wistu\Pulpit\C++\uczymyreturn1.cpp||In function 'int main()':|
wistu\Pulpit\C++\uczymyreturn1.cpp|51|error: invalid conversion from 'int' to 'int*'|
wistu\Pulpit\C++\uczymyreturn1.cpp|51|error:   initializing argument 2 of 'bool czybyla(int, int*, int)'|
wistu\Pulpit\C++\uczymyreturn1.cpp|44|warning: unused variable 'liczba'|
||=== Build finished: 2 errors, 1 warnings ===|



C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int wczytujemy( int wczytane[], int a )
{
    int licznik = 0;
    cout << "Podaj 3 liczby " << endl;
    do
    {
        cin >> wczytane[ licznik ];
        licznik++;
       
    } while( licznik < 3 );
   
    return wczytane[ licznik ];
}

int wylosuj_liczby()
{
    return( rand() % 3 );
}

bool czybyla( int ile, int tablica[], int licznik )
{
    if( licznik <= 0 )
         return false;
   
    int i = 0;
    do
    {
        if( tablica[ i ] == ile )
       
             i++;
       
    } while( i < licznik );
   
   
}
int main()
{
    srand( time( NULL ) );
    int wczytane[ 3 ];
    int wylosowane = 0;
    int liczba = wczytujemy( wczytane, 3 );
    int ile = 0;
    int licznik = 0;
   
    do
    {
        wylosowane = wczytane[ wylosuj_liczby() ];
        if( czybyla( wylosowane, ile, licznik ) );
       
    } while( licznik < 3 );
   
}
P-86351
pekfos
» 2013-06-27 14:21:56
Funkcja wymaga tablicy, a ty podajesz liczbę..
P-86353
Proleks
Temat założony przez niniejszego użytkownika
» 2013-06-27 14:46:36
Dobra teraz mam problem bo program nie losuje mi liczb tykjo zawsze pisze 2 pierwsze :/ :/ o co teraz kaman nie mam żadnego błędu poważnego w kompilacji tylko to

wistu\Pulpit\C++\uczymyreturn1.cpp|45|warning: unused variable 'liczba'|
 ale o ile dobrze kumam to program mi mówi ,że jest to nie uzywana zmienna więc to chyba nic nie robi :p

Wracając do błedu z losowaniem kod :

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int wczytujemy( int wczytane[], int a )
{
    int licznik = 0;
    cout << "Podaj 3 liczby " << endl;
    do
    {
        cin >> wczytane[ licznik ];
        licznik++;
       
    } while( licznik < 3 );
   
    return wczytane[ licznik ];
}

int wylosuj_liczby()
{
    return( rand() % 3 );
}

bool czybyla( int ile, int tablica[], int licznik )
{
    if( licznik <= 0 )
         return false;
   
    int i = 0;
    do
    {
        if( tablica[ i ] == ile )
       
             i++;
       
        return true;
    } while( i < licznik );
   
    return tablica;
}
int main()
{
    srand( time( NULL ) );
    int wczytane[ 3 ];
    int wylosowane = 0;
    int liczba = wczytujemy( wczytane, 3 );
    int ile[ 0 ];
    int licznik = 0;
   
    do
    {
        wylosowane = wczytane[ wylosuj_liczby() ];
        if( czybyla( wylosowane, ile, licznik ) );
       
        {
            cout << ile[ licznik ] << " , ";
            licznik++;
        }
    } while( licznik < 2 );
   
    system( "pause" );
    return 0;
}


[ / code ]
P-86356
pekfos
» 2013-06-27 15:23:31
1.
return wczytane[ licznik ];
 jest nieprawidłowe, bo wychodzisz poza tablicę.
2.
int ile[ 0 ];
 też jest nieprawidłowe.
3. Niepotrzebnie tworzysz zmienną liczba i niepotrzebnie zwracasz int z wczytujemy().
4. Zamiast indeksów, do zmiennej wylosowane przypisujesz wartości z tablicy. To spowoduje później problemy.
5. W czybyla zawsze zwracasz true, jeśli licznik jest dodatni.
6. Warunek w pętli w main() nic nie robi.
7. Pętla w main() wykona się tylko 2 razy, a nie 3.
P-86359
docentpp
» 2013-06-27 15:25:36
O rety !!!
Co to za kwiatek ???
C/C++
int ile[ 0 ]; // co to za kwiatek ???
int licznik = 0;

do
{
    wylosowane = wczytane[ wylosuj_liczby() ];
    if( czybyla( wylosowane, ile, licznik ) );
   
    {
        cout << ile[ licznik ] << " , "; // co to za kwiatek ????


i jeszcze to

C/C++
return tablica; // ????/


Problemu nie analizowałem , ale od razu rzuca się w oczy.....
P-86361
pekfos
» 2013-06-27 15:27:12
Nie możesz zrobić tablicy o zeru elementach.

i jeszcze to
C/C++
return tablica; // ????/
Zwracasz adres tablicy rzutowany na bool. W tym przypadku jest to zawsze true.
P-86362
« 1 » 2 3 4 5 6
  Strona 1 z 6 Następna strona