Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
wismbel
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 103
1

Вывод ромба циклами for

03.10.2015, 17:21. Просмотров 1781. Ответов 9
Метки нет (Все метки)

Я опять посыпался на выводе этих звёздочек и пробелов.
Как можно решить? Уже не знаю, что делать с собой и этими вложенными циклами.
0
Миниатюры
Вывод ромба циклами for  
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2015, 17:21
Ответы с готовыми решениями:

Даны две диагонали ромба. Вычислить площадь и периметр этого ромба
нужен код программы,заранее спасибо

Даны две диагонали ромба. Вычислить площадь и периметр этого ромба
Помогите написать программу, с кодом BORLANDC

Вывод на экран ромба из звёзд!
Народ! Нам задали написать программу, которая выводит ромб из звёздочек, но что-то у меня не совсем...

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

Даны длина стороны и меньший угол ромба. Найти площадь ромба.
Даны длина стороны и меньший угол ромба. Найти площадь ромба. Экзамен скоро сдавать, а никак не...

9
Redzep
197 / 133 / 88
Регистрация: 21.12.2014
Сообщений: 369
03.10.2015, 17:50 2
Лучший ответ Сообщение было отмечено wismbel как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
    int i = 0;
    for (int y = 0; y < 9; y++)
    {
        for (int x = 0; x < 9; x++)
        {
            if (x <= 4 + i && x >= 4 - i) cout << "*";
            else cout << " ";
        }
        cout << endl;
        i = y >= 4 ? --i : ++i;
    }
1
wismbel
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 103
03.10.2015, 17:56  [ТС] 3
Redzep, спасибо, работает, буду разбираться.
0
Barrent
249 / 125 / 54
Регистрация: 04.05.2013
Сообщений: 346
Завершенные тесты: 2
03.10.2015, 18:22 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
    int width = 9;          //любое нечетное число
    for (int i = 0; i < width;i++){
        for (int j = 0; j < width; j++) {
            //верхняя половина
            if (i < width / 2) {
                if (j < width / 2 - i || j > width / 2 + i)
                    cout << ' ';
                else
                    cout << '*';
                continue;
            }
            //нижняя половина
            if (i > width / 2) {
                if (j < i - width / 2 || j > width - (i - width / 2) - 1)
                    cout << ' ';                    
                else
                    cout << '*';
                continue;
            }
            //экватор
            cout << '*';            
        }
        cout << endl;            
    }
1
03.10.2015, 18:22
wismbel
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 103
03.10.2015, 18:37  [ТС] 5
Цитата Сообщение от Barrent Посмотреть сообщение
Универсальный вариант:
А первый вариант не универсален?

Добавлено через 2 минуты
А хотя да, тоже спасибо.
0
Barrent
249 / 125 / 54
Регистрация: 04.05.2013
Сообщений: 346
Завершенные тесты: 2
03.10.2015, 18:40 6
wismbel,
В универсальном варианте при изменении размера нужно менять только значение width
еще один вариант с использование счетчика зведочек:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    int width = 9;          //любое нечетное число
    int step = 1;           //шаг увеличения/уменьшения звездочек
    int count = 0;          //количество зведочек
    for (int i = 0; i < width; i++) {
        for (int j = 0; j < width; j++) {
            if (j < width / 2 - count || j > width / 2 + count)
                cout << ' ';
            else
                cout << '*';
        }
        count += step;
        if (count == width / 2)                     //дошли до экватора
            step = -1;
        cout << endl;
    }
1
wismbel
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 103
03.10.2015, 18:46  [ТС] 7

Не по теме:

Цитата Сообщение от Barrent Посмотреть сообщение
В универсальном варианте при изменении размера нужно менять только значение width
У меня как раз следущее задание, рисовать ромб по заданному значению. А я уже у Вас подсмотрел ]:->



Добавлено через 4 минуты
Barrent, я вот вообще не врубаюсь, когда надо самому это делать, у Вас в начале также было? Я понимаю Ваш код и одновременно понимаю, что сам бы не додумался.
0
Barrent
249 / 125 / 54
Регистрация: 04.05.2013
Сообщений: 346
Завершенные тесты: 2
03.10.2015, 18:53 8
wismbel,

Не по теме:

Впервые в жизни в консоли рисовал ромб :D

1
wismbel
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 103
03.10.2015, 19:01  [ТС] 9

Не по теме:

Цитата Сообщение от Barrent Посмотреть сообщение
Впервые в жизни в консоли рисовал ромб
Мда...



Добавлено через 7 минут
Barrent, кстати, изменение размера в первом вашем варианте не работает у меня почему-то.

Добавлено через 34 секунды
Перепутал кое-что, всё окей.
0
Redzep
197 / 133 / 88
Регистрация: 21.12.2014
Сообщений: 369
03.10.2015, 19:15 10
Теперь универсальный :D
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    int const size = 9;
    int i = 0;
    
    for (int y = 0; y < size; y++)
    {
        for (int x = 0; x < size; x++)
        {
            if (x <= int(size/2) + i && x >= int(size/2) - i) cout << "*";
            else cout << " ";
        }
        cout << endl;
        i = y >= int(size/2) ? --i : ++i;
    }
2
03.10.2015, 19:15
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2015, 19:15

Даны две диагонали ромба, вычислить площадь и периметр ромба
Здравствуйте. Помогите решить две очень простые задачи. 1. Написать программу, вычисляющую...

Вывод результата в виде ромба
Добрый день, есть вывод чисел в таком порядке: 1 (1 РАЗ) 222 (3 РАЗА) 33333 (5 раз) ... (n раз)...

Вывод ромба через цикл
Может кто подскажет как вывести ромб через цикл?


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.