e-olymp 479. Вышивка “крестиком”

Задача взята с сайта e-olymp.

Задача

Валя на уроках труда училась вышивке крестиком. Но для вышивки ей нужно было приготовить макет узора, который также имел форму “крестика”, в котором количество вышитых крестиков по диагонали было равно номеру тренировочного узора. Помогите Вале приготовить нужное количество макетов.

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

Сначала кол-во макетов, потом их номера. Все номера узоров у Вали имели одну странность — всегда были нечетными и не превышали 80.

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

Макеты, в порядке, перечисленном во входном файле, разделенные пустой строкой.

Тесты

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

1

2 3 5 X X
 X
X X

X   X
 X X
  X
 X X
X   X

2

1 9 X       X
 X     X
  X   X
   X X
    X
   X X
  X   X
 X     X
X       X

Код

 

Решение

В данной задаче будем использовать потоковую обработку. Сначала считываем количество макетов [latex] n [/latex]. Затем в цикле for (int l = 0; l < n; l ++);   считываем номера узоров.  Выводить [latex] X [/latex] будем по диагоналям (справа налево и наоборот). Однако, стоит учесть, что после последнего символа [latex] X [/latex] в строке, выводить пробел не стоит. В условии задачи данный факт не фигурирует, однако, если же сделать иначе, то задача на сайте e-olymp не пройдет. Из этого вытекает, что пробелы должны располагаться исключительно до последнего крестика в строке. Для этого во внутреннем цикле ставим соответсвующее условие, чтобы при достижении последнего крестика в строке осуществлялся переход на другую строку, если это возможно. Также стоит не забыть, что между разными узорами нужно пропускать строку.

Ссылки

Засчитанное решение на e-olymp.

Код в ideone.

9 thoughts on “e-olymp 479. Вышивка “крестиком”

    • Пожалуйста, удалите все эти span style=»font-family: Monaco;font-size: xx-small», пустые строки и nbsp. Зачем Вам это все и пустые строки в таблице?
      Вообще не нужно управлять шрифтами и размерами. Сосредоточьтесь на содержании статьи.
    • Один условный оператор лишний.
    • Ваша задача печатать либо крестик, либо пробел. Это один условный оператор.
    • В условии не указано допустимы ли пробелы после последнего крестика. Что говорят Ваши эксперименты?
    • Вам не нужно читать до конца потока поскольку указано количество узоров. В условии ведь не говорится, что после указанного числа узоров во входном потоке не может быть ещё каких-то данных.
    • В условии действительно не указаны действия после вывода последнего крестика в строке, однако эксперименты показывают, что пробел выводить не нужно. В противном случае, задача заходит на 0%. Поэтому если ограничиться только выводом крестиков, а в противном случае пробелов, то задача не зайдёт, пробелы нужно выводить только до последнего крестика строки.

Добавить комментарий