М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
ллл107
ллл107
31.01.2022 04:29 •  Информатика

С++ Ходы ферзя
На шахматной доске стоит ферзь. Отметьте положение ферзя на доске и все клетки, которые бьет ферзь. Клетку, где стоит ферзь, отметьте буквой "Q", клетки, которые бьет ферзь, отметьте символами "*", остальные клетки заполните точками.

Входные данные

В двух строках входного файла заданы два числа — координаты нахождения ферзя. Числа во входном файле натуральные, не превосходящие 8 по значению.

Выходные данные

Выведите на экран изображение доски так, как это показано в примере. Обратите внимание, что символы в одной строке разделены пробелом.

Примеры
Ввод
Вывод
4
2
. * . . * . . .
. * . * . . . .
* * * . . . . .
* Q * * * * * *
* * * . . . . .
. * . * . . . .
. * . . * . . .
. * . . . * . .

👇
Ответ:

#include <iostream>

using namespace std;

int main()

{

   int y, x;

   cin >> x >> y;

   int a[8][8];

   for (int i = 0; i < 8; ++i)

       for (int j = 0; j < 8; ++j)

         a[i][j] =  0;

   y--;

   x--;

   

   int px = x, py = y;

   while (px >= 0 && py >= 0){

       a[px][py] = 2;

       px--;

       py--;

     

   }

   

   px = x, py = y;

   while (px >= 0 && py < 8){

       a[px][py] = 2;

       px--;

       py++;

   }

   

   px = x, py = y;

   while (px < 8 && py < 8){

       a[px][py] = 2;

       px++;

       py++;

   }

   

   px = x, py = y;

   while (px < 8 && py >= 0){

       a[px][py] = 2;

       px++;

       py--;

   }

   

   px = 0;

   while (px < 8){

       a[px][y] = 2;

       px++;

   }

   

   py = 0;

   while (py < 8){

       a[x][py] = 2;

       py++;

   }

   

   a[x][y] = 1;

   for (int i = 0; i < 8; ++i){

       for (int j = 0; j < 8; ++j){

           if(a[i][j] == 0) cout << "." << " ";

           else if(a[i][j] == 1) cout << "Q" << " ";

           else cout << "*" << " ";

       }

       cout << endl;

   }

   return 0;

}

Объяснение:

вроде все просто, не знаю, что объяснять. скорее всего, есть возможность сделать это гораздо более оптимизировано, но мне было лень думать, так что сделал тупым и неоптимизированным методом, состоящем из кучи циклов while.

P. s. Если , дайте лучший ответ и жмякните на " " . Это мотивирует давать ответы дальше.

4,4(2 оценок)
Открыть все ответы
Ответ:
madina319
madina319
31.01.2022

1)

mas = [1, 2, -2, 3, -5, 12, 5]  # Можете указать свои числа

start = mas.index(max(mas))

stop = max.index(min(mas))

if start > stop:

   start, stop = stop, start

print(len(list(filter(lambda x: x > 0, mas[start+1:stop]

2)

mas = [1, 2, -2, 3, -5, 12, 5]  # Можете указать свои числа

print(sum(mas[-mas[::-1].index(list(filter(lambda x: x < 0, mas))[-1]):]))

3)

mas = [1, 2, -2, 3, -5, 12, 5]  # Можете указать свои числа

minimum = 1  # Все значения меньше указанного будут удалены

mas = list(filter(lamda x: x >= minimum, mas))

print(*mas)  # Выводи получившийся массив

4,8(27 оценок)
Ответ:
Ирина132435
Ирина132435
31.01.2022

1:

from random import randint

cnt = 0

values = [randint(-50, 50) for _ in range(10)]

min_index = values.index(min(values))

max_index = values.index(max(values))

if max_index < min_index: min_index, max_index = max_index, min_index

for i in range(min_index+1,max_index):

   if values[i] > 0: cnt += 1

print(values)

print('Количество положительных значений между минимальным и максимальным значениями равно:', cnt)

2:

from random import randint

summ = 0

n = int(input('Введите количество значений в массиве: '))

values = [randint(-500, 500)/100 for _ in range(n)]

for value in values[::-1]:

   if value < 0: break

   summ += value

print(values)

print('Сумма значений правее последнего отрицательного значения равна:', summ)

3.

from random import randint

values = [randint(-50, 50) for _ in range(10)]

print(values)

n = int(input('Введите значение, элементы меньше которого будут удалены: '))

for i in range(len(values)-1, 0, -1):

   if values[i] < n: values.pop(i)

print(values)

4,4(52 оценок)
Новые ответы от MOGZ: Информатика
Полный доступ к MOGZ
Живи умнее Безлимитный доступ к MOGZ Оформи подписку
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ