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

Вывести звездочки и точки указанное количество раз - C++

Восстановить пароль Регистрация
 
Алямбр
 Аватар для Алямбр
0 / 0 / 0
Регистрация: 22.03.2014
Сообщений: 8
08.07.2014, 19:20     Вывести звездочки и точки указанное количество раз #1
Решаю задачу:
Напишите программу, использующую вложенные циклы, которая запрашивает
у пользователя значение количества строк для отображения. Затем она должна
отобразить указанное число строк со звездочками, с одной звездочкой в первой
строке, двумя — во второй и т.д: В каждой строке звездочкам должны
предшествовать точки — в таком количестве, чтобы общее число символов в каждой
строке было равно количеству строк. Пример:
Вводим 5, получаем:

....*
...**
..***
.****
*****

Вот максимум, который я смог наработать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using namespace std;
int main()
{
    int a=0;
    cout << "Enter the quantity of strings: ";
    cin >> a;               //количество строк
    int b = 1;                 //переменная для действий в цикле 
    for (; a;b++)            //цикл, выводящий   a   строк
    {
        for (; a - b;)    //цикл, выводящий точки (бесконечен)
            cout << '.';
        for (; b;)     //цикл, выводящий звёзды, если убрать цикл с точками, то тоже бесконечен
            cout << '*';
        cout << endl;
    }
    system("pause");
    return 0;
}
Казус в том, что цикл зацикливается и бесконечно печатает точки, ума не приложу, в чём проблема, ещё и информацию по вложенным циклам нарыть не получается.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2014, 19:20     Вывести звездочки и точки указанное количество раз
Посмотрите здесь:

C++ Вывести числа, которые встречаются в массиве несколько раз / один раз
C++ Выполнить над числами указанное действие и вывести результат.
C++ Отсортировать и вывести точки по удаленности от некоторой заданной точки
Задача (вывести длину кратчайшего пути от точки до точки.) C++
Вывести расстояние от заданной точки до точки пересечения диагоналей прямоугольников C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
08.07.2014, 19:28     Вывести звездочки и точки указанное количество раз #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Алямбр Посмотреть сообщение
Казус в том, что цикл зацикливается и бесконечно печатает точки
Ну да, он же не знает когда остановиться
C++
1
for (; a;b++) // Значение (a) должно сравниваться с каким-то значением
Например:
C++
1
for (; a>b;b++)
Так же в остальных циклах, по логике выполнения операций
IrineK
Заблокирован
08.07.2014, 19:28     Вывести звездочки и точки указанное количество раз #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Алямбр Посмотреть сообщение
C++
1
for (; a;b++)
будет выполняться, пока a не равно 0

Цитата Сообщение от Алямбр Посмотреть сообщение
C++
1
for (; a - b;)
будет выполняться, пока а не равно b (a-b != 0)

Цитата Сообщение от Алямбр Посмотреть сообщение
C++
1
for (; b;)
будет выполняться, пока b не равно 0
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
08.07.2014, 19:34     Вывести звездочки и точки указанное количество раз #4
C++
1
2
3
4
5
6
7
8
9
10
 cout << "Enter the quantity of strings: ";
   int n;cin >> n;
   for(int i=0;i<n;i++)
   {
        for(int j=0;j<n-i-1;j++)
            cout<<'.';
        for(int j=n-i-1;j<n;j++)
            cout<<'*';
        cout<<endl;
   }
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
08.07.2014, 19:35     Вывести звездочки и точки указанное количество раз #5
Цитата Сообщение от Алямбр Посмотреть сообщение
C++
1
for (; a - b;)
* *//цикл, выводящий точки (бесконечен)
потому что не меняется в цикле ни a ни b в результате условие выхода из цикла всегда не выполняется, a - b не равно 0
Цитата Сообщение от Алямбр Посмотреть сообщение
C++
1
for (; b;)
* * //цикл, выводящий звёзды, если убрать цикл с точками, то тоже бесконечен
потому что b не изменяется и никак не может стать равным 0
Алямбр
 Аватар для Алямбр
0 / 0 / 0
Регистрация: 22.03.2014
Сообщений: 8
08.07.2014, 19:45  [ТС]     Вывести звездочки и точки указанное количество раз #6
Спасибо, я теперь правильно понял суть циклов (я почему-то думал, что циклу достаточно задать некое число, и он выполниться столько раз, перемкнуло с недосыпа наверное), вот моё решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using namespace std;
int main()
{
    int a=0;
    cout << "Enter the quantity of strings: ";
    cin >> a;
    int b = 1;
    for (int f=0;f!=a;b++,f++)
    {
        for (int c=0; c!=a - b;c++) 
            cout << '.';
        for (int d=0;d!= b;d++)
            cout << '*';
        cout << endl;
    }
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2016, 04:29     Вывести звездочки и точки указанное количество раз
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Arhis
 Аватар для Arhis
0 / 0 / 0
Регистрация: 30.09.2016
Сообщений: 5
05.10.2016, 04:29     Вывести звездочки и точки указанное количество раз #7
Подскажите какими книгами можно переформатировать мозги чтобы решать такие задачи?
Даже не получается логически раставить цепочки работы данного кода в голове. Неговоря уже о том чтобы написать его.
Какую бы литературу вы посоветовали?
Yandex
Объявления
05.10.2016, 04:29     Вывести звездочки и точки указанное количество раз
Ответ Создать тему
Опции темы

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