• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

c++ programowanie mnozenie

Cloud VPS
0 głosów
773 wizyt
pytanie zadane 13 marca 2018 w C i C++ przez kracjan122 Początkujący (370 p.)

Cześć, chciałem rozwiązać zadanie ze SPOJ i jest to 'mój pierwszy raz' z tą stroną. Wybrałem sobie takie oto łatwe zadanie: http://pl.spoj.com/problems/AL_12_03/

To kawałek mojego kodu. 

for(;;)
    {
        cin>>x;
        p=p*x;
        cout <<p<<endl;
        if (p>=n) {
            cout <<"A"<<endl;
            exit(0);}
        else
        {
           cin >>x;
           p=p*x;
           cout <<p<<endl;
           if (p>=n){
        cout <<"B"<<endl;
        exit(0);}

Gdy kompiluje to w code blocks to wszystko niby dziala. Mam pytanie takie czy spoj wymaga abym napisał to w inny sposób czy mimo wszystko robie zasadniczy bład w kodzie?

2 odpowiedzi

+2 głosów
odpowiedź 14 marca 2018 przez Janusz programowania Bywalec (2,710 p.)
1. Funkcja exit(0); od razu kończy Twój program, jeśli chcesz zatrzymać pętlę, użyj break;.

2. Wypisuj jedynie A i B, cokolwiek innego traktowane jest jako błąd.

3. Alicja i Bob sami wybierają najlepszą liczbę, nie odczytujesz jej cinem.

Włącz program i wpisz dane z przykładu, dane wyjściowe powinny zostać wypisane identycznie.
komentarz 14 marca 2018 przez kracjan122 Początkujący (370 p.)
Wydaje mi się, że kompletnie tego nie rozumiem. Jeśli wybierać można liczby od 2 do 9 to ja muszę w programie zrobić coś, że tylko te liczby można wybrać? i jeśli oni sami wybierają liczbę to musi być chyba wprowadzona z klawiatury, a tym samym pojawi się w konsoli (?)

Aż głupio przyznać, że mam problemy z takimi zadaniami, bo wydaje mi się, że robiłem trochę bardziej skomplikowane rzeczy, ale jak widać muszę jeszcze mnóstwo czasu spędzić na robieniem podobnych jak to zadanie rzeczy :D
komentarz 14 marca 2018 przez Secrus Nałogowiec (32,880 p.)
o ile rozumiem tresc zadania, to musisz zaimplementowac losowanie liczb z przedzialu <2;9>
komentarz 14 marca 2018 przez Qwerty96 Stary wyjadacz (13,580 p.)

o ile rozumiem tresc zadania, to musisz zaimplementowac losowanie liczb z przedzialu <2;9>

Nie. Oboje grają optymalnie chcąc wygrać. Zresztą w jaki sposób SPOJ miałby sprawdzić poprawność rozwiązania, które byłoby losowe?

komentarz 14 marca 2018 przez Janusz programowania Bywalec (2,710 p.)

Najlepiej jak rozpatrzysz to na przykładach. 

1. n = 162, p = 1

Alicja: 9, p = 9 (tutaj 9 gwarantuje wygraną)

Bob: 2,  p = 18 (wybór Boba tutaj nie ma znaczenia, cokolwiek wybierze Alicja wygra)

Alicja: 9, p = 162, (wygrana)

Alicja przewidziała, że dwie dziewiątki gwarantują jej wygraną i tak samo Twój program musi to potrafić.

2. n = 17, p = 1

Alicja: 2, p = 2 (cokolwiek wybierze, Bob wygrywa)

Bob: 9, p = 18 (wygrana)

Tak ma to wyglądać w konsoli:

Czerwonym zaznaczyłem dane wpisywane przez użytkownika, zielonym to co wyrzuca program.

komentarz 14 marca 2018 przez kracjan122 Początkujący (370 p.)
Dziękuje za odpowiedzi, naprawdę bardzo to szanuję że Ci się chciało :D Teraz wiem jak podchodzić do takich problemów.
+1 głos
odpowiedź 14 marca 2018 przez dunaj Użytkownik (950 p.)
Czytałem, że w niektórych (właśnie takich prostych zadaniach) trzeba używać printfa i scanfa zamiast cout i cin, bo printf jest szybsze. Jeśliby Ci nadal nie działało po radach Janusza Programowania to spróbuj jeszcze tego.

Podobne pytania

0 głosów
0 odpowiedzi 785 wizyt
0 głosów
0 odpowiedzi 149 wizyt
0 głosów
1 odpowiedź 1,086 wizyt
pytanie zadane 13 sierpnia 2019 w C i C++ przez Bulbi Początkujący (250 p.)

93,456 zapytań

142,451 odpowiedzi

322,721 komentarzy

62,837 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...