Рисунок "Ромб" в консоли - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Есть ромб, как из него убрать выделенную линию?
#include <stdio.h>
 
int main (){
  int H, h1, h2, h3, h4, h5, h6;
  int c1, c2, c3 ,c4, c5, c6;
  printf ("Введите высоту ромба:\t");
  scanf ("%d", &H);
  H /= 2;
  h1 = H - (H - 1);
  h2 = H;
  h3 = H - (H - 1);
  h4 = 2 * H;
  for (c1 = 0; c1 < H; c1++, h2--, h1 +=2){
    for (c2 = 0; c2 < h2; c2++){
      printf ("@");
    }
    for (c3 = 0; c3 < h1; c3++){
      printf ("*");
    }
    printf ("\n");
  }
  for (c4 = 0; c4 < H; c4++, h3++, h4 -= 2){
    for (c5 = 0; c5 < h3; c5++){
      printf ("@");
    }
    for (c6 = 0; c6 < h4 - 1; c6++){
      printf ("*");
    }
    printf ("\n");
  }
}

Решение задачи: «Рисунок "Ромб" в консоли»

textual
Листинг программы
#include <stdio.h>
 
void main (void)
{
  float H, h1, h2, h3, h4, h5, h6;
  int c1, c2, c3 ,c4, c5, c6, s;
  
  
  printf ("Enter hight of romb:\t");
  scanf ("%f", &H);
  H /= 2;
  h1 = H - (H - 1);
  h2 = H;
  h3 = H - (H - 1);
  h4 = 2 * H;
  {
  s = H;
  if (s == H)
    H += 1;
  }
 
  for (c1 = 0; c1 < H; c1++, h2--, h1 += 2){
    for (c2 = 0; c2 < h2; c2++){
      printf ("@");
    }
    for (c3 = 0; c3 < h1; c3++){
      printf ("*");
    }
    printf ("\n");
  }
  for (c4 = 0; c4 < H; c4++, h3++, h4 -= 2){
    for (c5 = 0; c5 < h3; c5++){
      printf ("@");
    }
    for (c6 = 0; c6 < h4 - 1; c6++){
      printf ("*");
    }
    printf ("\n");
  }
return;
}

Объяснение кода листинга программы

  1. Включаем файл стандартного ввода/вывода
  2. Объявляем переменные:
    • float H;
    • int c1, c2, c3, c4, c5, c6, s;
    • float h1, h2, h3, h4, h5, h6;
  3. Выводим сообщение и призыв к вводу высоты ромба
  4. Считываем значение переменной H с помощью функции scanf
  5. Вычисляем половину значения H и сохраняем в переменную H
  6. Вычисляем значения переменных h1, h2, h3, h4, h5, h6
  7. Создаем дополнительную переменную s, которая будет использоваться в цикле
  8. Если значение s равно H, то увеличиваем H на единицу
  9. Запускаем цикл, который будет выводить ромб с высотой H
    • Внешний цикл c1 от 0 до H-1
    • Внутренний цикл c2 от 0 до h2-1 (значение h2 уменьшается на каждой итерации внешнего цикла)
    • Выводим символ @ c2 раз
    • Внутренний цикл c3 от 0 до h1-1 (значение h1 увеличивается на каждой итерации внешнего цикла)
    • Выводим символ * c3 раз
  10. Запускаем цикл, который будет выводить ромб с высотой H
    • Внешний цикл c4 от 0 до H-1
    • Внутренний цикл c5 от 0 до h3-1 (значение h3 уменьшается на каждой итерации внешнего цикла)
    • Выводим символ @ c5 раз
    • Внутренний цикл c6 от 0 до h4-2 (значение h4 уменьшается на каждой итерации внешнего цикла)
    • Выводим символ * c6 раз
  11. Конец программы

Оцени полезность:

8   голосов , оценка 4.125 из 5