blockedd4 Temat założony przez niniejszego użytkownika |
Problem z zdaniem Król z Main2 » 2020-02-16 21:36:19 Wstęp do programowania, lekcja 10 (Quiz). Dostępna pamięć: 256 MB. 13–19.12.2014 Na pewnym polu na szachownicy 8 × 8 stoi król. Chcielibyśmy dowiedzieć się, na ile różnych pól może przeskoczyć ta figura w jednym ruchu∗ . Zakładamy, że na szachownicy nie ma w tym momencie żadnych innych figur. Wejście Pierwszy i jedyny wiersz wejścia zawiera jedną literę k oraz jedną cyfrę w, oddzielone spacją. Litera k oznacza kolumnę szachownicy (k ∈ {a, . . . , h}), a cyfra w oznacza wiersz szachownicy (w ∈ {1, . . . , 8}). Wyjście W jedynym wierszu wyjścia Twój program powinien wypisać jedną liczbę całkowitą – liczbę pól szachownicy, na które może przeskoczyć król umieszczony na zadanym polu. Przykład Dla danych wejściowych: d 5 poprawnym wynikiem jest: 8 natomiast dla danych wejściowych: a 8 poprawnym wynikiem jest: 3
Czy może ktoś poprawić ten kod aby działał poprawnie i dla wszystkich przypadków. Totalnie nie wiem jak to zrobić proszę o pomoc, pilne.
Raport ostatecznego sprawdzania Test Wynik Czas Wynik 1 OK 0.00s/1.00s 10/10 2 OK 0.00s/1.00s 10/10 3 OK 0.00s/1.00s 10/10 4 OK 0.00s/1.00s 10/10 5 OK 0.00s/1.00s 10/10 6 OK 0.00s/1.00s 10/10 7 Zła odpowiedź 0.00s/1.00s 0/10 8 Zła odpowiedź 0.00s/1.00s 0/10 9 OK 0.00s/1.00s 10/10 10 Zła odpowiedź 0.00s/1.00s 0/10 7 wiersz 1: wczytano '3', a oczekiwano '5' 8 wiersz 1: wczytano '3', a oczekiwano '5' 10 wiersz 1: wczytano '8', a oczekiwano '5'
#include <iostream> using namespace std;
int ilosc_ruchow(int k, int w){ if(k==1 || w==8){ if(w=='a' || w=='h') return 3; return 5; } if(w=='a' || w=='h'){ return 3; } return 8; } int main(){ int k; char w; cin>>w>>k;
cout<<ilosc_ruchow(k,w);
return 0; }
|
|
pekfos |
» 2020-02-16 22:32:51 Dla A2 wynik jest błędny. |
|
mizie |
Rozwiązanie » 2020-02-17 12:20:45 Twój kod może wyglądać następująco:
#include <iostream> #include <cctype>
short ilosc_ruchow( int let, short num ) { if(( let == 'a' || let == 'h' ) &&( num == 1 || num == 8 ) ) { return 3; } else if((( num >= 2 && num <= 7 ) &&( let == 'a' || let == 'h' ) ) ||(( num == 1 || num == 8 ) &&( let >= 'b' && let <= 'g' ) ) ) { return 5; } else { return 8; } }
int main() { char k; int w; std::cout << "Podaj pozycje krola (kolumna - litera od a do h, wiersz - liczba od 1 do 8: "; std::cin >> k >> w; std::cout << ilosc_ruchow( tolower( k ), w ) << std::endl; system( "PAUSE" ); return 0; }
|
|
pekfos |
» 2020-02-17 19:48:38 Skoro już i tak padła odpowiedź "umiem zrobić to zadanie!", to dodam że metoda eliminacji autora jest znacznie bardziej zwięzła niż twoja metoda siłowa, w której każdy warunek jest praktycznie samowystarczalny. int ilosc_ruchow( int k, int w ) { if( k == 1 || w == 8 ) { if( w == 'a' || w == 'h' ) return 3; return 5; } if( w == 'a' || w == 'h' ) { return 3; } return 8; } |
|
mizie |
» 2020-02-17 23:59:01 Mała rada. Zamiast marnować czas na niewiele wnoszące komentarze (nie przypominam sobie, żebym pytał o twoje zdanie) powinieneś poświęcić chwilę na naukę czytania ze zrozumieniem. Nad źródłem widnieje, cytuję: "Twój kod MOŻE wyglądać następująco:". Nie oznacza to, że jest to jedyne, najlepsze i najbardziej zwięzłe rozwiązanie. Nikt tego tutaj nie twierdzi. Działa i tyle. Może będzie w jakiś sposób pomocne dla autora zapytania (blockedd4). Jeżeli masz taką potrzebę i chcesz zoptymalizować kod lub pokazać alternatywne rozwiązanie, absolutnie nie widzę przeciwwskazań. Wręcz przeciwnie, zawsze chętnie się czegoś przydatnego nauczę lub spojrzę na problem z innej strony. Natomiast łaskawie zachowaj swoje niezwykle wnikliwe oceny dla tych, których one interesują (czyli głównie dla siebie).
|
|
latajacaryba |
» 2020-02-18 01:47:23 @mizie no zobacz, a mnie zainteresowało jego zdanie. Zresztą dlaczego ktoś widząc, że można coś zrobić lepiej ma się wstrzymywać od opinii, bo Ty słabo znosisz uzasadnioną krytykę? |
|
pekfos |
» 2020-02-18 21:19:29 powinieneś poświęcić chwilę na naukę czytania ze zrozumieniem. Nad źródłem widnieje, cytuję: "Twój kod MOŻE wyglądać następująco:". |
A w pierwszym poście "Czy może ktoś poprawić ten kod aby działał poprawnie i dla wszystkich przypadków". Napisanie kodu od nowa to też jakiś sposób na poprawienie błędów :) |
|
« 1 » |