Форум: Форум C++Разное
Новые темы: 00
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывести звездочками ромб в консоли
 
 автор: Belkin   (13.01.2012 в 03:15)   письмо автору
 
 

Здравствуйте!

Нужно ромб вывести из звездочек. Делал уже шахматную доску, а вот ромб до ума довести не могу.

Допустим диагональ равна 5, то вид примерно такой:

  *
 ***
*****
 ***
  *

и т.д.

Вот, что надумал. Сделать по клеткам, то есть ось x и y, вот:

#include <iostream>
using namespace std;
void main()
{
    int x, y, N=5;
    for(y=1;y<=N;y++) // вертикаль
    {
        for(x=1;x<=N;x++) // горизонталь
        {

        }
        cout << "\n";
    }
    system("pause");
}

  Ответить  
 
 автор: cheops   (13.01.2012 в 11:43)   письмо автору
 
   для: Belkin   (13.01.2012 в 03:15)
 

Подход верный... только не следует забывать, что любую сложную фигуру лучше трианглурировать, т.е. думать о ней как о нескольких треугольниках. Так ромб - это четыре прямоугольных треугольника, значит у нас будет минимум 4 частных случая.
#include <stdio.h>
#include <iostream>
using namespace std;

int main()
{
  int i, j, N = 11;
  int center = N / 2;
  for(i = 0; i < N; i++)
  {
    for(j = 0; j < N; j++)
    {
      if(i <= center)
      {
        // Верхняя половина ромба
        if(j >= center - i && j <= center + i)
          cout << "*";
        else
          cout << " ";
      }
      else
      {
        // Нижняя половина ромба
        if(j >= center + i - N + 1 && j <= center - i + N - 1)
          cout << "*";
        else
          cout << " ";
      }
    }
    cout << endl;
  }
  system("PAUSE");
  return 0;
}

  Ответить  
 
 автор: Belkin   (13.01.2012 в 21:36)   письмо автору
 
   для: cheops   (13.01.2012 в 11:43)
 

Буду знать, спасибо!

  Ответить  
 
 автор: nazek   (04.06.2015 в 20:22)   письмо автору
 
   для: Belkin   (13.01.2012 в 03:15)
 

а можно ли так прописать, если значения будут разными у двух диагоналей?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования