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

Rozdział 30. Zadanie domowe , sprawdzenie plus dodatkowe wskazówki .

Ostatnio zmodyfikowano 2017-11-27 13:24
Autor Wiadomość
kundelko
Temat założony przez niniejszego użytkownika
Rozdział 30. Zadanie domowe , sprawdzenie plus dodatkowe wskazówki .
» 2017-09-04 15:53:47
Witam prosił bym o sprawdzenie mojego zadania domowego z rozdziału 30 . Jak i dodatkowe  wskazówki "Jak można zrobić to lepiej " lub odnośnie poprawy czytelności kodu czy skrócenia go .Z góry dziękuje ;)

Zad 1
"Wyobraź sobie, że masz pięć pudełek. W każdym pudełku możesz umieścić jedną liczbę całkowitą z przedziału od 1 do 3 włącznie. Napisz program, który wypisze na ekranie wszystkie możliwe kombinacje w jaki sposób można zapełnić pudełka. Fragment danych wypisywanych na ekranie: "
C/C++
#include <iostream>
using namespace std;

int main()
{
   
    for( int a = 1; a <= 3; a++ )
    for( int b = 1; b <= 3; b++ )
    for( int c = 1; c <= 3; c++ )
    for( int d = 1; d <= 3; d++ )
    for( int e = 1; e <= 3; e++ )
         cout << a << b << c << d << e << endl;
   
   
   
   
   
   
   
   
    return 0;
}

zad2.
Wyobraź sobie, że masz pięć piłek i chcesz wylosować trzy z nich. Napisz program, który wypisze na ekranie wszystkie możliwe kombinacje piłek jakie można wylosować. Dane jakie powinny zostać wypisywane na ekranie:
C/C++
#include <iostream>

using namespace std;

int main()
{
    for( int a = 1; a <= 5; a++ )
    for( int b = 2; b != a & b <= 5; b++ )
    for( int c = 3; c != a & c != b & c <= 5; c++ )
         cout << a << b << c << endl;
   
   
   
   
   
    return 0;
}
zad.3
Napisz program, który zliczy liczbę możliwych kombinacji wylosowania 6 liczb ze zbioru 49 liczb (reasumując: rozpatrujesz problem popularnej gry liczbowej Lotto). Zadanie należy rozwiązać przy pomocy zagnieżdżonych pętli (nie można używać wzoru).
C/C++
#include <iostream>

using namespace std;

int main()
{
    int licznik = 0;
    for( int a = 1; a <= 49; a++ )
    for( int b = 2; b != a & b <= 49; b++ )
    for( int c = 3; c != b & c != a & c <= 49; c++ )
    for( int d = 4; d != a & d != b & d != c & d <= 49; d++ )
    for( int e = 5; e != a & e != b & e != c & e <= 49 & e != d; e++ )
    for( int f = 6; f != a & f != b & f != c & f <= 49 & f != d & f != e; f++ )
         licznik++;
   
    cout << "Liczba mozliwych kombinacji" << endl;
    cout << licznik;
   
   
   
   
   
   
   
   
    return 0;
}
P-164581
pekfos
» 2017-09-04 16:47:05
Wszystko poza zadaniem pierwszym jest błędnie.
P-164587
kundelko
Temat założony przez niniejszego użytkownika
a
» 2017-09-04 16:54:26
Mógłbym prosić o szczegóły , np. Czemu zadanie 2 jest błędne skoro program działa poprawnie
P-164588
pekfos
» 2017-09-04 16:56:34
Są błędne bo nie działają poprawnie i dają bezsensowne wyniki.
P-164589
kundelko
Temat założony przez niniejszego użytkownika
b
» 2017-09-04 17:14:06
Hmm.. a w zadaniu drugim , dostaje takie wyniki :
123
124
125
143
153
154
423
523
524
543
i są one zgodne z tymi z rozdziału 30 (no może niektóre mają inną kolejność , ale przecież to nieważne jeśli mamy do czynienia z losowaniem w którym kolejność nie ma znaczenia )
przepraszam że znowu piszę ale wydawało mi się że te zadanie jest wykonane poprawie , i nie wiem w czym tkwi mój błąd , przez co ciężko zabrać się za naprawę kodu .
Pozdrawiam
P-164590
pekfos
» 2017-09-04 17:24:08
Zasadniczo kolejne możliwe wyniki losowania powinieneś generować w kolejności, bo tak można to zrobić znacznie krótszym kodem. Przeprowadziłem trochę testów i wychodzi że wyniki (zliczania) są poprawne, a wyniki w zadaniu drugim są chyba poprawne z dokładnością do permutacji - poprawność twojego algorytmu nie jest taka oczywista do udowodnienia, jak powinna być. Co do błędów, to jako spójnika w warunkach użyłeś operatora &, który raczej nie jest na tym etapie omówiony w kursie, powinno być &&. W tym konkretnym przypadku to nie wpływa na wynik, jednak z punktu widzenia pracy domowej to jest błąd. Do zrealizowania tych zadań nie trzeba używać żadnych złożonych warunków.
P-164591
kundelko
Temat założony przez niniejszego użytkownika
c
» 2017-09-04 17:28:32
Ok . Dziękuje za pomoc ;) pozdrawiam
P-164593
kundelko
Temat założony przez niniejszego użytkownika
zad
» 2017-09-06 12:18:15
Witam, czy teraz zadanie 2 . jest wykonane poprawnie ??
C/C++
#include <iostream>

using namespace std;


int main()
{
    for( int a = 1; a <= 5; a++ )
    for( int b = 1; b <= 5; b++ )
    {
        for( int c = 1; c <= 5; c++ )
        {
            if( a >= c || b >= c || a >= b )
                 continue;
           
            cout << a << b << c << endl;
        }
    }
   
    return 0;
}
P-164631
« 1 » 2
  Strona 1 z 2 Następna strona