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

C++ Losowanie bez powtórzeń-Zadanie z treści.

Ostatnio zmodyfikowano 2016-07-19 19:18
Autor Wiadomość
a_jasieniecki
Temat założony przez niniejszego użytkownika
C++ Losowanie bez powtórzeń-Zadanie z treści.
» 2016-07-14 10:54:17
Witam stworzyłem kod który spełnia postawione w treści wymagania lecz nie spełnia ich dla większych tablic (t[e]), chyba że dopiszemy kolejne warunki if'a, teraz moje pytanie: Czy da się przerobić ten kod w sposób mało inwazyjny tak aby działał dla tablicy wielkości n?


C/C++
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <windows.h>

using namespace std;

void losujLiczby( int t[], int e, int p, int k ) {
    srand( time( NULL ) );
    e = 0;
    int m = k - p;
    do {
        t[ e ] =( rand() % m ) + p;
        if( t[ e - 1 ] == t[ e ] || t[ e ] == t[ e - 2 ] || t[ e ] == t[ e - 3 ] || t[ e ] == t[ e - 4 ] || t[ e ] == t[ e - 5 ] ) {
            e = 0;
            t[ e ] =( rand() % m ) + p;
            e++;
        }
        else
        { e++; }
    } while( e < 5 );
   
}
void wylosowaneLiczby( int t[], int e ) {
    e = 0;
    do {
        cout << e << ". " << t[ e ] << endl;
        e++;
    } while( e < 5 );
   
}
int main()
{
    int tablica[ 5 ];
    losujLiczby( tablica, 5, 1, 11 );
    wylosowaneLiczby( tablica, 5 );
    return 0;
}
P-149942
karambaHZP
» 2016-07-14 12:06:04
Do sprawdzenia powtórzeń zastosuj pętlę i w niej porównuj wylosowaną wartość z tymi w tablicy.
P-149943
a_jasieniecki
Temat założony przez niniejszego użytkownika
» 2016-07-19 16:26:56
C/C++
do {
    cout << liczby1[( liczby[ a ] ) ] << endl;
    a++;
} while( a < 10 );
//lub
do {
    cout << liczby1[ liczby[ a ] ] << endl; // Ten działa :)
    a++;
} while( a < 10 );


Czy któryś z powyższych zapisów jest poprawny? Program debuguje się przy obydwu wersjach ale nie kończy się oczekiwanym rezultatem.


A ten się nie chce uruchomić
C/C++
do {
    liczby[ a ];
    cout << liczby1[ liczby ] << endl;
   
    a++;
} while( a < 10 );


Sorry memory brakło mi nawiasu w ifie :)
P-150117
carlosmay
» 2016-07-19 19:18:11
Czy któryś z powyższych zapisów jest poprawny? Program debuguje się przy obydwu wersjach ale nie kończy się oczekiwanym rezultatem.
Pierwsze rozwiązanie może być poprawne, jeśli wartości w tablicy liczby są z zakresu indeksów tablicy liczby1.

Drugi kod nie jest poprawny. W indeksie użyłeś adresu tablicy.
C/C++
liczby[ a ]; // to nic nie robi
cout << liczby1[ liczby ] << endl; // indeks to adres

Edit: jeśli czegoś nie ogarniasz i nie wiesz co się dzieje pisz proste testy.
np.
C/C++
std::cout << liczby << '/n';
 i zobacz jaką wartość wypisze. Wtedy zastanów się czy tego oczekujesz.
P-150127
« 1 »
  Strona 1 z 1