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

praca domowa z roz 21 - losowanie bez powtorzen

Ostatnio zmodyfikowano 2011-04-23 23:55
Autor Wiadomość
Elano92
» 2011-04-21 12:26:02
C/C++
#include <iostream>
#include <conio.h>

using namespace std;
void wypelnijTablice( int t[], int iRozmiar, int min, int max )
{
    cout << "wylosowane " << iRozmiar << " liczb:" << std::endl;
    srand( time( 0 ) );
   
    int e = max - min + 1;
    for( int i = 0; i < iRozmiar; i++ )
    {
        t[ i ] = rand() % e + min;
    }
   
   
}

int Oblicz_sume( int t[], int iRozmiar )
{
    int zero = 0;
    for( int z = 0; z < 5; z++ )
    {
        zero = t[ z ] + zero;
    }
    cout << "suma = " << zero << endl;
   
}



int main()
{
    int minimum, maximum;
    cout << "od ilu ma losowac ? " << endl;
    cin >> minimum;
    cout << "do ilu ma losoac ? " << endl;
    cin >> maximum;
    int moja_tablica[ 5 ];
    wypelnijTablice( moja_tablica, 5, minimum, maximum );
   
   
    for( int i = 0; i < 5; i++ )
    {
        cout << moja_tablica[ i ] << ", ";
    }
    Oblicz_sume( moja_tablica, 5 );
   
   
   
   
   
   
    getch();
    return 0;
}


O to chodzi? jak nie to znajdz na forum moje gg.
P-31421
greenhouse
Temat założony przez niniejszego użytkownika
» 2011-04-21 18:26:52
Elano a ty zrobiłeś to zadanie (21 rozdział z kursu podstawowego)?
Jeśli tak i Tobie działa to wrzuć tu proszę.
P-31511
Elano92
» 2011-04-21 18:31:10
no to wyżej masz podane
P-31512
greenhouse
Temat założony przez niniejszego użytkownika
» 2011-04-21 18:36:57
"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. "

To jest treść zadania. Do Twojego programu wpisuje się przedział liczbowy losowania (co jest dużo łatwiejsze), a tu chodzi o wpisanie trzech konkretnych liczb, z których program wylosuje dwie bez powtórzeń (Twój program losuje 5 liczb, które się powtarzają).

P-31514
Elano92
» 2011-04-21 18:46:32
czyli ma wylosować z wpisanych i bez powtarzania ? ;d
P-31516
greenhouse
Temat założony przez niniejszego użytkownika
» 2011-04-23 21:16:50
Chyba już jestem blisko, ale program losuje zawsze 2 pierwsze liczby. Jakieś sugestie jak to poprawić?

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

bool powtorz( int wyl, int tab[], int wynik )
{
    if( wyl <= 0 )
         return false;
   
    int i = 0;
    do
    {
        if( tab[ i ] == wynik )
             return true;
       
        i++;
    } while( i < wyl );
   
    return false;
}

int main()
{
    srand( time( 0 ) );
    int tab[ 3 ];
    int wylosowane = 0;
    int i = 0;
   
    do
    {
        cin >> tab[ i ];
        i++;
    } while( i < 3 );
   
    do
    {
       
        int wynik = tab[ rand() % i ];
        if( powtorz( wylosowane, tab, wynik ) == false )
        {
            tab[ wylosowane ] == wynik;
            wylosowane++;
        }
    } while( wylosowane < 2 );
   
    wylosowane = 0;
    do
    {
        cout << tab[ wylosowane ];
        wylosowane++;
    } while( wylosowane < 2 );
   
    return 0;
}
P-31807
yyy...mleko
» 2011-04-23 23:41:54
Nie chciało mi się sprawdzać twojego kodu :P wiec zrobiłem to zadanie teraz, (nie zrobiłem go jak był kurs, bo...bo...... się nie chciało ^^) wrzucam kodzik mojego programu (z lekkimi dodatkami :)) mam nadzieje, że tolerowane są tu gotowce I, ŻE TEN KTO SZUKA ROZWIĄZANIA NA TO ZADANIE PRZEANALIZUJE KOD, A NIE TYLKO GO SKOPIUJE I BĘDZIE ZADOWOLONY, a z resztą usuniecie posta jak się nie podoba :)
C/C++
#include<iostream>
using namespace std;

void wpisz( int tab[], int idks )
{
    cout << "Wpisz liczby:\n";
    for( int a = 0; a < idks; a++ )
         cin >> tab[ a ];
   
}
bool sprawdzanie( int a, int tab[], int indeks ) //sprawdzamy, czy nie jest juz wylosowana
{
    for( int b = 0; b < indeks; b++ )
    if( tab[ b ] == a )
         return false;
   
    return true;
}
void losowanie( int tab[], int wylos[], int idks_tab, int idks_wylos ) // losujemy
{
    int q;
    for( int a = 0; a < idks_wylos; a++ )
    {
        do
        {
            q = rand() % idks_tab;
        } while( !sprawdzanie( tab[ q ], wylos, a ) );
       
        wylos[ a ] = tab[ q ];
    }
}
void wyswietl( int tab[], int idks ) // wyswietlamy
{
    for( int a = 0; a < idks; a++ )
         cout << tab[ a ] << ", ";
   
    cout << endl;
}
bool blokada( int indeks, int los, int tab[] ) // jesli ktos to analizuje to nie musi tego sprawdzac bo sie nie tyczy zadania :)

if( los > indeks )
     return false;

for( int a = 0; a < indeks; a++ )
for( int b = 0; b < indeks; b++ )
if( tab[ a ] == tab[ b ] && a != b )
     return false;

return true;
}

int main()
{
srand( time( 0 ) );
int los;
int indeks;
cout << "Podaj ile liczb chcesz wprowadzic:\n";
cin >> indeks;
int tablica[ indeks ];
cout << "A ile ma byc wylosowanych?\n";
cin >> los;
int wylosowane[ los ];
wpisz( tablica, indeks );

if( blokada( indeks, los, tablica ) ) // ustawiamy blokade przed zmuleniem kompa :)
{
    losowanie( tablica, wylosowane, indeks, los );
    wyswietl( wylosowane, los );
}
else
     cout << "Nie da rady tego zrobic :)\n";

system( "pause" );
return 0;
}
P-31810
greenhouse
Temat założony przez niniejszego użytkownika
» 2011-04-23 23:55:23
Bardzo Ci dziękuję, nareszcie konkretna pomoc.

Oczywiście przeanalizuję Twój kod, nie potrzebuję go kopiować, na dobrą sprawę przecież z własnej woli robię te wszystkie zadania, więc kompletnie nie widzę powodu, dla którego miałbym tylko skopiować kod:))

Jeszcze raz wielkie dzięki!!
P-31811
1 2 « 3 »
Poprzednia strona Strona 3 z 3