Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/214: Рейтинг темы: голосов - 214, средняя оценка - 4.93
39 / 2 / 0
Регистрация: 26.07.2016
Сообщений: 36
1

Нарисовать ромб из звездочек

09.10.2016, 11:11. Показов 39552. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Напишите программу, которая напечатает следующий ромб. Вы можете использовать операторы вывода, которые печатают или одну звездочку (*), или один пробел. Максимально используйте повторение (с вложенными структурами for) и минимизируйте число операторов вывода.

1) В общем, я нашел решение этой задачи, только вот не понимаю формулу, если кто может, объясните.

2) У меня у самого была идея написать ромб через присвоение переменной символ "*" и символ "_". Затем он бы печатал первую строку 4 пробела, одну звезду и так далее. Но загвоздка в том, что при цикле char='k' не умножается на число, т.е. k*4 это не 4 пробела. Объясните можно ли таким способом решить эту задачу.

Вот сам код задачи
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
using namespace std;
 
int main()
{
    int i, j, N = 9;
    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;
}
1
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2016, 11:11
Ответы с готовыми решениями:

Вывести на экран ромб из звездочек
Запишите оператор или набор операторов, печатающих на экране заданную фигуру.

Нарисовать ромб с диагональю
Помогите, пожалуйста, нарисовать ромб с диагональю: * * * * * * ...

Нарисовать квадрат из звездочек
int N; cin &gt;&gt; N; for (int i=0;i&lt;=N;i++) for (int j=0;j&lt;=N;j++) ...

Нарисовать прямоугольник из звездочек
помогите начинающему програмисту создать консольную програму в microsoft visual studio 2010 нужно...

4
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
09.10.2016, 11:34 2
Что-то я не пойму проблемы. Код ромб печатает.

Не по теме:


По поводу

Цитата Сообщение от TheHound Посмотреть сообщение
я нашел решение этой задачи
Я, конечно, отчасти согласен, что программист должен не знать все алгоритмы, а уметь найти нужную информацию, но это не относится к учебным задачам. А здесь надо было как раз немного включить голову и самому попытаться все сделать - делать то нечего. Если даже такие простые задачи не получается решить - то все очень печально...

0
39 / 2 / 0
Регистрация: 26.07.2016
Сообщений: 36
09.10.2016, 11:37  [ТС] 3
monolit, я 2 проблемы расписал. Этот раздел разве не для того, чтобы из печального сделать что-то стоящее? Или ты, когда родился тоже сразу ходить начал?
0
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
09.10.2016, 13:10 4
Лучший ответ Сообщение было отмечено TheHound как решение

Решение

1. С алгоритмом все просто. Ты проходишь циклом по все области, где тебе нужен ромб. Нетрудно заметить, что если разделить этот квадрат на 4 части, то правый треугольник в верхнем левом куске квадрата есть одна часть ромба, левый в правой верхней - вторая часть ромба и т.п.

Формулы то там и нет толком, все просто. Возьми бумажку и проделай то, что написано в цикле. Или после каждого вывод * поставь небольшую паузу (`Sleep(250);`, к примеру), и увидишь процесс в динамике.

2. Возможно, в каком нибудь языке умножение пробела на 4 и дает строку из 4 пробелов, но в С++ символ - это код, и умножив его на 4, мы просто меняешь код, т.е. символ. Т.е. так ты ничего не сделаешь.
1
0 / 0 / 0
Регистрация: 05.01.2024
Сообщений: 4
05.01.2024, 12:26 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define db long double
#define yes cout << "YES\n";
#define no cout << "NO\n";
#define fast_cin() ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
int main ()
{
    fast_cin();
    int n;
    cin >> n;
    int k = n;
        for(int i = 1; i <= n; i+=2){
        cout << "\n";
            int j = (n - i)/2;
            int f = (n - i)/2;
            while (j--){
                cout << " ";
            }
            int h = i;
            while (h--){
                cout << "*";
            }
            while (f--){
                cout << " ";
            }
            
        }
        for(int i = n-2; i >= 1; i-=2){
        
            cout << "\n";
            int j = (n - i)/2;
            int f = (n - i)/2;
            while (j--){
                cout << " ";
            }
            int h = i;
            while (h--){
                cout << "*";
            }
            while (f--){
                cout << " ";
            }
        }
    }
0
05.01.2024, 12:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.01.2024, 12:26
Помогаю со студенческими работами здесь

Нарисовать параллелепипед с помощью звездочек
Подскажите как нарисовать параллелепипед с помощью звездочек и вывести его в консоль. Только...

Циклы: нарисовать прямоугольник из звездочек с диагоналями
Помогите,пожалуйста!Нужно с помощью циклов нарисовать прямоугольник из звездочек с...

Нарисовать перевернутый треугольник из звездочек (цикл while)
*** ..** ...*

Нарисовать двухстороннюю пирамидку из звездочек с заданной высотой
#include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; int main () { int n = 0; ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru