Rozwiązane

Proszę o pomoc ze skryptem c++

Ile pól atakuje wieża

Wieża porusza się w tym samym rzędzie lub w tej samej kolumnie, o dowolną liczbę pól. Zdefiniuj funkcję ile_wieza(int n, int x, int y), której para­metrami są rozmiar szachownicy n oraz położenie figury (x, y), a wynikiem jest liczba pól atakowanych przez wieżę. Parametr n może przyjmować wartości od 2 do 32. Pa­rametry x i y mogą przyjmować wartości od 1 do n. Sprawdź działanie funkcji dla podanych poniżej parametrów.


Wynikiem funkcji ile_wieza(8, 2, 2) jest 14.

Wynikiem funkcji ile_wieza(13, 3, 4) jest 24.



Odpowiedź :

Odpowiedź:

ile wieża = (n*2)-2

Wyjaśnienie:

Zawsze będzie to o 2 mniej niż rozmiar planszy x2

Stojąca wieża na polu (x,y) zasłania to pole i tylko jego nie może atakować.

Zasłania 1 pole ale liczymy je podwójnie w obliczeniach ponieważ pierwszy raz zasłania w kolumnie a drugi raz w rzędzie. Wartości x y nie mają żadnego znaczenia w tym przypadku. Gdziekolwiek wieża nie stoi atakuje taką samą liczbę pól.

#include <iostream>

#include <time.h>

using namespace std;

int ile_wieza(int n, int x, int y){

   return (n * 2) - 2;

}

int main()

{

   int x, y, n;

   cout << "podaj n >> "; cin >> n;

   cout << "podaj x >> "; cin >> x;

   cout << "podaj y >> "; cin >> y;

   if (n < 2 || n > 32 || x < 1 || x > n || y < 1 || y > n){

       cout << "złe wartości" << endl;

       return 0;

   }

   cout << "wieza atakuje " << ile_wieza(n,x,y) << " pol";

   return 0;

}