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

Zadanie domowe nr 1. z rozdziału 21, wątek nr: n++

Ostatnio zmodyfikowano 2015-07-26 11:03
Autor Wiadomość
multim
Temat założony przez niniejszego użytkownika
» 2015-07-24 19:22:21
ŻE CO? Jak tam się znalazł char? I kiedy? Dziękuję.
Ale jak to sprawdzenie wykorzystać bez przekazania pozostałych danych, które są potrzebne do funkcji przypiszWynik()?
P-135161
pekfos
» 2015-07-24 19:28:40
Nazwałeś funkcję 'sprawdz', więc tylko sprawdzaj.
..czy ktokolwiek, wliczając ciebie, pisał, że masz w tym miejscu, w funkcji sprawdzającej, cokolwiek modyfikować..?
Funkcja miała sprawdzać,   czy jest obecna wartość t[idLosowania] [..] w tablicy z wynikami - wynikT[].
No nie bardzo. Wprowadź logikę do swoich prób i działań. Bez tego miałbyś już lepszy niż ostatnio powód do zastanawiania się, czy powinieneś się brać za programowanie.
P-135164
multim
Temat założony przez niniejszego użytkownika
» 2015-07-24 19:52:17
Przepraszam Was, dość wolno pojmuję.

Ta funkcja ma wyglądać tak:
C/C++
bool sprawdzCzyUzyta( int sprLiczbe, int t[], int idLosowania, int ile )
{
    int i = 0;
    do {
        if( t[ i ] != sprLiczbe )
             i++;
        else
        {
            return true;
            i++;
        }
    }
    while( i < ile );
   
    return false;
}
?
P-135167
pekfos
» 2015-07-24 20:07:31
Tak.

C/C++
if( t[ i ] != sprLiczbe )
     i++;
else
{
    return true;
    i++;
}
Komplikujesz proste sprawy. Czemu nie tak..?
C/C++
if( t[ i ] == sprLiczbe )
     return true;

++i;
P-135168
Szymon2727
» 2015-07-25 10:25:23
To normalne, że poległeś. Kurs trochę za mało wyjaśnia, ale czasami wystarczy poszukać rozwiązania - dużo uczy o tablicach i funkcjach.

Po pierwsze int main() - zrób w pętli warunek, który zwiększa tablicę po wylosowaniu prawidłowej liczby.

Po drugie, przekaż tą tablicę w funkcji i tutaj nie ma większego gdybania niż zrobienia if i else z zwracaniem wartości odpowiedzialne za zwiększanie się tablicy w int main() - po prostu niech porównuje jeden indeks do reszty - jeżeli a[1] == a[2] to zwraca fałsz i pętla odpowiedzialna za powiększenie liczby się nie wykonuje.
P-135189
JMII89
» 2015-07-25 10:55:09
A do tego przestań używać w każdej funkcji int jako zwracana wartość bo w tych funkcjach zwracasz 0. Dlatego powinny one być void nie int i bez return.
P-135191
multim
Temat założony przez niniejszego użytkownika
» 2015-07-25 13:54:07
Teraz będzie lepiej?

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

void wprowadzDane( int t[], int ile )
{
    cout << "Podaj " << ile << " liczby:" << endl;
    int i = 0;
    do {
        cin >> t[ i ];
        i++;
    }
    while( i < ile );
   
}

int losuj( int ile )
{
    return rand() % ile;
}

bool sprawdzCzyUzyta( int sprLiczbe, int t[], int ile )
{
    int i = 0;
    do {
        if( t[ i ] == sprLiczbe )
             return true;
       
        i++;
    }
    while( i < ile - 1 );
   
    return false;
}

void wypiszWyniki( int t[], int ile )
{
    int i = 0;
    do {
        cout << i + 1 << ": " << t[ i ] << endl;
        i++;
    }
    while( i < ile - 1 );
   
}

int main()
{
    srand( time( 0 ) );
    int tablica[ 3 ], wynik[ 2 ], ile = 3, los, liczbaSpr, iLicznik = 0;
    wprowadzDane( tablica, ile );
    cout << endl;
    do {
        los = losuj( ile ); //przypisuje nr komórki tablicy z danymi wejsciowymi
        liczbaSpr = tablica[ los ]; //przypisuje liczbe z wejscia
        if( sprawdzCzyUzyta( liczbaSpr, wynik, ile ) == false ) {
            wynik[ iLicznik ] = liczbaSpr; //przypisuje wartosc do tabeli z wyjscia, jezeli nie byla uzyta
            iLicznik++;
        }
    }
    while( iLicznik < 2 );
   
    cout << endl;
    wypiszWyniki( wynik, ile );
    cout << endl;
    return 0;
}

Zgaście mnie, bo nie wierzę.
P-135203
pekfos
» 2015-07-25 16:44:21
C/C++
void przypiszWynik( int sprLiczbe, int t[], int idPetli )
{
    t[ idPetli ] = sprLiczbe;
}
Po co ci do tego funkcja?

C/C++
while( i < ile - 1 );

Po co odejmujesz 1 (w obu funkcjach)?

C/C++
if( sprawdzCzyUzyta( liczbaSpr, wynik, ile ) == false )
C/C++
wypiszWyniki( wynik, ile );
iLicznik, a nie ile.
P-135228
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona