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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Алямбр
0 / 0 / 0
Регистрация: 22.03.2014
Сообщений: 8
#1

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

08.07.2014, 19:20. Просмотров 1211. Ответов 6
Метки нет (Все метки)

Решаю задачу:
Напишите программу, использующую вложенные циклы, которая запрашивает
у пользователя значение количества строк для отображения. Затем она должна
отобразить указанное число строк со звездочками, с одной звездочкой в первой
строке, двумя — во второй и т.д: В каждой строке звездочкам должны
предшествовать точки — в таком количестве, чтобы общее число символов в каждой
строке было равно количеству строк. Пример:
Вводим 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;
}
Казус в том, что цикл зацикливается и бесконечно печатает точки, ума не приложу, в чём проблема, ещё и информацию по вложенным циклам нарыть не получается.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2014, 19:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести звездочки и точки указанное количество раз (C++):

Вывести в столбик заданное сообщение указанное количество раз - C++
Дано целое число N. Необходимо вывести в столбик N раз сообщение &quot;POMOGITE RADI KHRISTA&quot;.

Как вывести введенный текст n-ое количество раз? - C++
надо написать прогу которая выводит заданную юзером строчку столько раз, сколько он написал пример: &quot;Hello 10 Hello Hello ...

Вывести на экран символ ASCII таблицы заданное количество раз - C++
Всем привет. надо вывести на экран символ аски таблицы такое кол во раз, какое значение хранится в поле структуры. чето меня переклинило....

Добавить к структуре указанное количество секунд - C++
Нужно реализовать функцию, в которой к общему времени добавляется количество секунд s. Но это число не обязательно меньше 60, поэтому я не...

Заполнить указанное пользователем количество строк - C++
Задание звучит так: Заполнить указанное пользователем количество строк. int strok; int stolb=100; cout &lt;&lt; &quot;Введите -...

Вывести строку содержащую указанное слово - C++
Помогите перевести вот этот код: var Str: string; i: byte; begin writeln('Введите строку: '); readln(Str); for i:=1...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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++)
Так же в остальных циклах, по логике выполнения операций
1
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
1
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 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;
   }
1
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,849
08.07.2014, 19:35 #5
Цитата Сообщение от Алямбр Посмотреть сообщение
C++
1
for (; a - b;)
* *//цикл, выводящий точки (бесконечен)
потому что не меняется в цикле ни a ни b в результате условие выхода из цикла всегда не выполняется, a - b не равно 0
Цитата Сообщение от Алямбр Посмотреть сообщение
C++
1
for (; b;)
* * //цикл, выводящий звёзды, если убрать цикл с точками, то тоже бесконечен
потому что b не изменяется и никак не может стать равным 0
1
Алямбр
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;
}
0
Arhis
0 / 0 / 0
Регистрация: 30.09.2016
Сообщений: 5
05.10.2016, 04:29 #7
Подскажите какими книгами можно переформатировать мозги чтобы решать такие задачи?
Даже не получается логически раставить цепочки работы данного кода в голове. Неговоря уже о том чтобы написать его.
Какую бы литературу вы посоветовали?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2016, 04:29
Привет! Вот еще темы с ответами:

Добавить указанное количество элементов в голову динамического массива - C++
Описать массив указанного пользователем количества элементов. Добавить указанное количество элементов в голову массива. ...

Выполнить над числами указанное действие и вывести результат - C++
14 Арифметические действия над числами пронумерованы следующим образом: 1 — сложение, 2 — вычитание, 3 — умножение, 4 — деление. Дан номер...

Выполнить над числами указанное действие и вывести результат. - C++
Арифметические действия над числами пронумерованны следующим образом: 1-сложение, 2- вычитание, 3- умножение, 4-деление. Дан номер...

Сдвинуть элементы массива в указанную сторону на указанное количество элементов - C++
Здравствуйте! Такое задание: //Пользуясь указателем на массив целых чисел, осуществить циклический сдвиг массива на заданное число...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.10.2016, 04:29
Ответ Создать тему
Опции темы

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