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

[C++] Rozdział 21 Poziom 2 Błąd w zadaniu domowym.

Ostatnio zmodyfikowano 2016-06-21 18:32
Autor Wiadomość
W1ll_3ty
Temat założony przez niniejszego użytkownika
[C++] Rozdział 21 Poziom 2 Błąd w zadaniu domowym.
» 2016-06-20 22:00:19
Witam, myślałem nad tym zadanie dość długo. Co chwilę pisałem program od nowa, i gdy w końcu jestem tak blisko pokazuje się tylko jeden błąd:

C:\Users\*****\Desktop\Admin\C++\Powtorzenia.cpp||In function 'int main()':|
C:\Users\*****\Desktop\Admin\C++\Powtorzenia.cpp|46|error: lvalue required as left operand of assignment|
||=== Build finished: 1 errors, 0 warnings ===|

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int sprawdz( int tabela[], int ile, int losuj )
{
    if( ile = 0 ) return false;
   
    if( ile > 0 )
    {
        tabela[ ile ] = losuj;
        return false;
    }
}
int losuj()
{
    return( rand() % 1 ) + 0;
}
int main()
{
    srand( time( NULL ) );
    int tabela[ 3 ];
    int ile = 0;
    do
    {
        cout << "Podaj liczbe: ";
        cin >> tabela[ ile ];
        ile++;
    } while( ile < 3 );
   
    int pokaz[ 3 ];
    ile = 0;
    do
    {
        pokaz[ ile ] = tabela[ ile ];
        ile++;
    } while( ile < 3 );
   
    int licz[ 2 ];
    ile = 0;
    do
    {
        licz[ ile ] = losuj();
        ile++;
    } while( ile < 2 );
   
    ile = 0;
    do
    {
        //if (sprawdz(licz, ile, losuj())=false) <-- To tutaj jest blad
        {
            licz[ ile ] = losuj();
            ile++;
        }
    } while( ile < 2 );
   
    ile = 0;
    do
    {
        cout << tabela[ licz[ ile ] ] << endl;
        ile++;
    } while( ile < 2 );
   
    return 0;
}

Jak mogę to naprawić?
P-149331
marcolo2307
» 2016-06-20 22:05:35
Operator porównania to
==
, a nie
=
.
Masz to też w innych miejscach.
P-149332
W1ll_3ty
Temat założony przez niniejszego użytkownika
» 2016-06-20 22:07:15
Ojej! Taki głupi błąd! Dzięki wielkie i pozdrawiam.
P-149333
W1ll_3ty
Temat założony przez niniejszego użytkownika
» 2016-06-20 22:19:41
Trochę teraz zmodyfikowałem kod, ale bardzo mało i działa ładnie, tylko że wciąż losują się czasami dwie takie same liczby. Co mam zmienić, żeby losowały się dwie inne?

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int sprawdz( int tabela[], int ile, int losuj )
{
    if( ile == 0 ) return false;
   
    int x = 0;
    do
    {
        if( ile > 0 )
        {
            tabela[ ile ] = losuj;
            x++;
        }
    } while( x < ile );
   
    return false;
}
int losuj()
{
    return( rand() % 2 ) + 0;
}
int main()
{
    srand( time( NULL ) );
    int tabela[ 3 ];
    int ile = 0;
    do
    {
        cout << "Podaj liczbe: ";
        cin >> tabela[ ile ];
        ile++;
    } while( ile < 3 );
   
    int pokaz[ 3 ];
    ile = 0;
    do
    {
        pokaz[ ile ] = tabela[ ile ];
        ile++;
    } while( ile < 3 );
   
    int licz[ 2 ];
    ile = 0;
    do
    {
        licz[ ile ] = losuj();
        ile++;
    } while( ile < 2 );
   
    ile = 0;
    do
    {
        if( sprawdz( licz, ile, losuj() ) == false )
        {
            licz[ ile ] = losuj();
            ile++;
        }
    } while( ile < 2 );
   
    ile = 0;
    do
    {
        cout << tabela[ licz[ ile ] ] << endl;
        ile++;
    } while( ile < 2 );
   
    return 0;
}
P-149334
marcolo2307
» 2016-06-20 23:18:28
To jest losowanie, więc czasem będą dwie takie same. Możesz dodać warunek i jeśli będą się powtarzać, losować aż do skutku.
P-149337
Nutella
» 2016-06-21 18:32:07
Też miałam problem z powtórkami, ale chyba się w końcu udało. Wyślę kod, może komuś pomoże :D
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int wczytaj( int t[] )
{
    cout << "podaj 10 liczb: \n";
    int i = 0;
    do
    {
        cin >> t[ i ];
        i++;
    } while( i < 10 );
   
}

int losuj()
{
    return rand() % 10 + 0;
}


bool sprawdz( int indeks, int t[], int ktory )
{
    if( ktory == 0 ) return false;
   
    int i = 0;
    do
    {
        if( indeks == t[ i ] ) return true;
        else i++;
       
    } while( i < 7 );
   
}


void wyswietl( int t_liczby[], int t_indeksy[] )
{
    int i = 0;
    do
    {
        cout << t_liczby[ t_indeksy[ i ] ] << endl;
        i++;
    } while( i < 7 );
   
}
int main()
{
    srand( time( NULL ) );
    int tab[ 10 ];
    int wczytane_indeksy[ 7 ];
    wczytaj( tab );
    int i = 0;
    do
    {
        int indeks = losuj();
        if( sprawdz( indeks, wczytane_indeksy, i ) == false )
        {
            wczytane_indeksy[ i ] = indeks;
            i++;
        }
       
    } while( i < 7 );
   
    cout << "wylsowane liczby bez powtorek: \n";
    wyswietl( tab, wczytane_indeksy );
   
    return 0;
}
P-149360
« 1 »
  Strona 1 z 1