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

zadanie domowe rozdział 21

Ostatnio zmodyfikowano 2014-11-23 13:17
Autor Wiadomość
dafuck17
Temat założony przez niniejszego użytkownika
zadanie domowe rozdział 21
» 2014-11-22 16:15:28
treść zadania:
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.

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

void wczytywanieLiczb( int tablica[], int licznik )
{
   
    do {
        cin.clear();
        cin.sync();
       
        cin >> tablica[ licznik ];
        licznik++;
       
       
    } while( licznik < 3 );
   
}

bool losowanie( int tablica[], int licznik, int losowanie1, int losowanie2 )
{
    cout << "W sklad losowania wchodza liczby: " << endl;
    do {
        cout << tablica[ licznik ] << ", " << endl;
        licznik++;
       
    } while( licznik < 3 );
   
    if( tablica[ 0 ] == tablica[ 1 ] == tablica[ 2 ] )
    {
        return false;
    }
   
   
    cout << "Losowanie 2 liczb bez powtorzen..." << endl << endl;
    losowanie1 = tablica[ rand() % licznik ];
   
    do {
        losowanie2 = tablica[ rand() % licznik ];
    } while( losowanie2 == losowanie1 );
   
    cout << "Wylosowane liczby:" << losowanie1 << ", " << losowanie2 << endl;
    return true;
}

int main()
{
    srand( time( 0 ) );
    int tablica[ 3 ];
    int licznik = 0;
    int a;
    int b;
   
    cout << "Wczytaj 3 liczby naturalne:" << endl;
   
    wczytywanieLiczb( tablica, licznik );
    if( losowanie( tablica, licznik, a, b ) == false )
    {
        cout << "Wylosowane liczby są nieprawidlowe" << endl << "Wprowadz liczby ponownie" << endl;
        wczytywanieLiczb( tablica, licznik );
    } else
    {
        cout << " Koniec programu" << endl;
    }
    return 0;
}
Przetestowałem program i wyszło na to że...
C/C++
if( tablica[ 0 ] == tablica[ 1 ] == tablica[ 2 ] )
{
    return false;
}
... nie działa tak jakbym chciał. Chcę żeby wyżej przedstawiony skrawek kodu działał tak że jeśli podane 3 liczby będą takie same polecenie if zwracało fałsz, a następnie wykonywało ponowne losowanie. Wie ktoś dlaczego to nie działa? Pozdrawiam :)
     
P-121171
Monika90
» 2014-11-22 19:36:54
P-121180
Rashmistrz
» 2014-11-23 00:11:29
» Kurs C++ » Poziom 1Operacje porównania lekcja

tablica[ 0 ] == tablica[ 1 ] == tablica[ 2 ]
,
Kolejność działań. :F
Na przykład wszystkie te porównywane
elementy będą miały wartość "3" to:

tablica[ 0 ] == tablica[ 1 ]
,
zwróci nam prawdę, czyli boolowskie "1".

1 == tablica[ 2 ]
,
zwróci nam fałsz, bo 1 nie jest równe 3.

==
 tworzy zdanie logiczne.
Już rozumiesz swój błąd?

» Kurs C++ » Poziom 1Operacje logiczne lekcja
Jeśli pierwszy element jest równy drugiemu
i drugi jest równy trzeciemu to na pewno
pierwszy jest równy trzeciemu. :P

(Poprawki za ciebie nie napiszę,
ale podpowiedzieć mogę. C: )
P-121202
dafuck17
Temat założony przez niniejszego użytkownika
» 2014-11-23 13:17:06
Teraz chyba powinno być ok? :)
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

void wczytywanieLiczb( int tablica[], int licznik )
{
   
    do {
        cin.clear();
        cin.sync();
       
        cin >> tablica[ licznik ];
        licznik++;
       
    } while( licznik < 3 ); //losowanie 3 liczb
   
}

bool losowanie( int tablica[], int licznik )
{
    int losowanie1;
    int losowanie2;
   
    cout << "W sklad losowania wchodza liczby: " << endl;
    do {
        cout << tablica[ licznik ] << ", " << endl;
        licznik++;
       
    } while( licznik < 3 );
   
    if( tablica[ 2 ] == tablica[ 1 ] && tablica[ 1 ] == tablica[ 0 ] )
         return false; //gdy wszystkie 3 liczby są takie same if zwraca fałsz
   
    cout << "Losowanie 2 liczb bez powtorzen..." << endl << endl;
    losowanie1 = tablica[ rand() % licznik ];
   
    do {
        losowanie2 = tablica[ rand() % licznik ];
    } while( losowanie2 == losowanie1 );
   
    cout << "Wylosowane liczby:" << losowanie1 << ", " << losowanie2 << endl;
    return true;
}

int main()
{
    srand( time( 0 ) );
    int tablica[ 3 ];
    int licznik = 0;
   
    cout << "Wczytaj 3 liczby naturalne:" << endl;
   
    wczytywanieLiczb( tablica, licznik );
    if( losowanie( tablica, licznik ) == false )
    {
        cout << "Wylosowane liczby sa nieprawidlowe" << endl << "Wprowadz liczby ponownie" << endl;
        wczytywanieLiczb( tablica, licznik );
        if( losowanie( tablica, licznik ) == false )
             cout << "Koniec programu" << endl;
       
    } else
    {
        cout << "Koniec programu" << endl;
    }
    return 0;
}
Dzięki rash zajebiście tłumaczysz :D
P-121211
« 1 »
  Strona 1 z 1