Форум программистов, компьютерный форум CyberForum.ru

Вывести ромб (пустой внутри) символами *, используя всего один цикл for - C++

Восстановить пароль Регистрация
 
DaniLaFokc72
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 8
13.11.2015, 20:29     Вывести ромб (пустой внутри) символами *, используя всего один цикл for #1
Вывести ромб (пустой внутри) символами *, используя всего один цикл for. На вход подаётся число: сторона квадрата (ромб рисуется в квадрате).
Если это чётное значение, например 4, то вывод должен выглядеть так:
C++
1
2
3
4
 **
*  *
*  *
 **
Всё перепробовал, с одним циклом ну никак не получается.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2015, 20:29     Вывести ромб (пустой внутри) символами *, используя всего один цикл for
Посмотрите здесь:

C++ Используя символ *, вывести на экран ромб шириной и высотой n символов
Используя один цикл, вывести все целые степени числа A от 1 до N. C++
дано целое число N>0 . используя один цикл (с пред- и пост- условием) найти сумму 1!+2!+.+n! C++
дано n>0. используя один цикл do-while найти сумму 1!+2!+.+n! C++
Используя один цикл, найти сумму чисел C++
Используя цикл for вычислить и вывести на экран 1+2+4+8+.+256 C++
C++ Используя один цикл, найти значение выражения

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
_Ivana
2185 / 1390 / 124
Регистрация: 01.03.2013
Сообщений: 4,142
Записей в блоге: 2
14.11.2015, 00:30     Вывести ромб (пустой внутри) символами *, используя всего один цикл for #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вот совсем без циклов (формально, фактически - линейно-итеративный алгоритм через хвостовую рекурсию)
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
 
void f(int n, int i) {
    if (i==n*n) return;
    int r=i/n, c=i%n, x=n-1, h=x/2;
    cout<<(i && !c ? "\n" : "");
    cout<<((r+c-h) * (r+c-2*x+h) * (r-c-x+h) * (c-r-x+h) ? ' ' : '*');
    f(n, i+1);
}
int main() {int n; cin>>n; f(n,0); return 0;}
На сэкономленный цикл можно купить мороженое
DaniLaFokc72
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 8
14.11.2015, 10:39  [ТС]     Вывести ромб (пустой внутри) символами *, используя всего один цикл for #3
_Ivana, Огромное спасибо, всё работает. А можете немного подробнее объяснить как это работает

Добавлено через 4 часа 3 минуты
_Ivana, Что означают эти переменные?
C++
1
int r=i/n, c=i%n, x=n-1, h=x/2;
И не понятна эта строчка
C++
1
cout<<((r+c-h) * (r+c-2*x+h) * (r-c-x+h) * (c-r-x+h) ? ' ' : '*');
Yandex
Объявления
14.11.2015, 10:39     Вывести ромб (пустой внутри) символами *, используя всего один цикл for
Ответ Создать тему
Опции темы

Текущее время: 09:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru