1. Организовать беспрерывный ввод чисел с клавиатуры, пока пользователь не введёт 0. После ввода нуля, показать на экран количество чисел, которые были введены, их общую сумму и среднее арифметическое. Подсказка: необходимо объявить переменную-счетчик, которая будет считать количество введенных чисел, и переменную, которая будет накапливать общую сумму чисел.
Посмотреть код
задача do while c++
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
#include <iostream>
usingnamespacestd;
intmain()
{
setlocale(LC_ALL,"rus");
intamountDigits=0;// количество введенных чисел
doubletotalSum=0;// общая сумма
doubledigit=0;//
cout<<"Введите числа, для расчета (выйти - 0)\n\n";
do
{
cout<<"Число "<<amountDigits+1<<" = ";
cin>>digit;
if(digit)// если digit любое значение кроме 0(false)
{
amountDigits++;
totalSum+=digit;
}
}while(digit);// пока digit любое значение отличное от 0
Добрый день! Не могу разобраться в последней задаче.
#include using namespace std; int main() { setlocale(LC_ALL, “rus”); int height = 0; // высота треугольника cout <> height; for (int i = 0; i < height; i++) {
После этого я перестаю понимать, что дальше происходит. Вообще с циклами в ваших уроках я вроде бы как разобрался, с теорией, связанной с вложенными циклами мне тоже всё понятно, хотя и в задачах с символами всё же возникло пару вопросов. Первые 2 задачи я тоже решил раза с третьего и не без помощи вашего решения, а вот с третьей задачей я не могу справиться даже с вашим решением, ибо оно мне не понятно.
Уже начал думать о том, чтобы поискать какие-нибудь другие уроки, где всё объясняется более подробно, но решил всё-таки оставить комментарий, так как ещё не факт, что я найду такие уроки, а вот ваши уроки мне были хорошо понятны вплоть до последней темы, связанной с циклами, было бы обидно просто забить конкретно на эти уроки из-за одной проблемы, которую сам я решить не смог. Надеюсь, объясните мне как всё это делается, а то вроде бы сама суть темы понятна: цикл, в котором есть ещё цикл. Только на практике это выглядит куда сложнее, ну или я просто нахожу простые вещи слишком сложными.
Ещё проще объяснений вы просто не найдёте – проще не бывает (поэтому и здесь объяснения с упрощениями, умолчаниями и, как следствие, с неточностями). Если вам непонятно, то непонятно не то, что связано с языком C++, а то, что связано вообще с логикой построения вычисления, алгоритмированием. Вот на эту часть (логику) и обратите внимание.
Вложенные циклы достаточно просты в теории, но бывают заковыристыми на практике. Опишите что именно непонятно? Тут тройная матрёшка: самая верхняя – большой цикл выводит строки, в зависимости от высоты фигуры, два вложенных цикла в нее “сидят” рядом на двух стульях, только команды выполняют последовательно: сначала первый вложенный выводит нужное количество пробелов, затем второй вложенный необходимое количество символов – потом следующая строка…..и так далее вниз до конечной цифры высоты.
Для тех, кто в танке, попробую разжевать (для самого себя тоже =) ):
for (int i = 0; i > height высоте треугольника*/ { for (int j = 1; j < height – i; j++) /*Цикл, которым мы рисуем пробелы перед символом "^". Выполняется (height – i – 1) кол-во раз. То есть за каждый проход внешнего цикла длина пустой строки снижается на i (переменная i увеличивается на единицу за каждый проход внешнего цикла, поэтому кол-во раз выполнения этого маленького цикла снижается на 1, соответственно длина пустого поля перед символом в строке тоже каждый раз сокращается).*/ { cout << ' '; }
for (int j = height – 2 * i; j <= height; j++) /*второй маленький цикл пишет символы "^"в кол-ве height – (height – 2 * i) + 1. Кажется немного запутанно на первый взгляд. Если внешний цикл печатает первую строку (i=0), то кол-во символов будет равно: height – height + 2*i + 1 = 1 + i*2;
Из уравнения видно, что применение переменной height здесь вовсе ни к чему – она взаимоуничтожается при решении уравнения. При любом её значении она не влияет на кол-во выполняемых циклов. Это не ошибка программиста, но, что называется, "быдлокод" – некрасивое решение задачи с одной совершенно ненужной переменной, вводящей в заблуждение читателя.
Поэтому может показаться затруднительным понять такую запутанную конструкцию, ведь в ней совершенно не обязательно использование "высоты треугольника". Ниже я предложу свой вариант решения, без участия переменной height, ведь вместо нёё можно поставить вообще любое значение, хоть ноль, хоть -242148: результат будет тот же! */ { cout << '^'; } cout << endl; }
Вот как я решил эту задачу без участия переменной height во втором вложенном цикле (изменение только в одном цикле, все остальное оставил как и было):
#include using namespace std;
int main() { setlocale(LC_ALL, “rus”);
int height = 0; // высота треугольника
cout <> height;
for (int i = 0; i < height; i++) { for (int j = 1; j < height – i; j++) { cout << ' '; }
for (int j = 0; j < i * 2 + 1; j++) /* кол-во символов "^" в строке определяется уравнением: (кол-во символов) = i * 2 + 1. Как видите, использована всего одна переменная из внешнего цикла. Таким образом, кол-во символов будет возрастать на 2 каждый проход внешнего цикла. Всё просто! */ { cout << '^'; } cout << endl; } return 0; }
Надеюсь, мой комментарий кому-нибудь поможет понять эту задачу. Всех благ! P.S. Я сам только учусь, не кидайтесь тапками =)))
“не понимаю все те действия” – это всё не относится к языку С++, и более того, не относится к программированию вообще. Это область аналитического мышления, математического способа восприятия, логических построений … – этому учат в других местах и других курсах.
Сформировать список из последовательности натуральных чисел r1, r2, r3, … rn , которые вводятся с клавиатуры. Вывести данные числа сначала в обратном порядке, а затем в порядке ввода. Из полученного списка удалить все числа, кратные 3 и вывести полученный список.
Сформировать список из последовательности натуральных чисел r1, r2, r3, … rn , которые вводятся с клавиатуры. Вывести данные числа сначала в обратном порядке, а затем в порядке ввода. Из полученного списка удалить все числа, кратные 3 и вывести полученный список.Помогите мне пжста
vaillant, здесь же сайт, который ставит своей целью хоть чему-то научить своих читателей относительно C++, а не делать вместо читателей их домашние задания.
Во втором вложенном цикле вы намудрили с переменной height в условии цикла. Она не нужна, а лишняя макулатура, как говориться, голову морочит новичкам. Я сам не сразу понял, что она там лишняя. Вот моё лаконичное решение с использованием всего двух переменных вместо трех:
for (int j = 0; j < i * 2 + 1; j++) /* кол-во символов "^" в строке определяется уравнением: (кол-во символов) = i * 2 + 1. Как видите, использована всего одна переменная из внешнего цикла. Таким образом, кол-во символов будет возрастать на 2 каждый проход внешнего цикла. Всё просто! */
Ломал бошку часа 2. (Только осваиваю С++). Туго с логикой. В ответ не подглядывал. В итоге получилось, но гораздо громозче чем у автора. Кстати, автор, что скажете?
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
#include
using namespacestd;
intmain()
{
setlocale(LC_ALL,"Russian");
intheight=0;
intnumOfCharacters=1;//число выводимых символов
cout<>height;
for(inti=height;i>=1;i--)
{
for(intj=1;j<=height;j++)
{
if(j==height)//при достижении места 1-го символа
{
for(intn=1;n<=numOfCharacters;n++)//выводим их количество на экран
1. Редактор комментариев портит код. 2. Уже не один раз писалось здесь: не пишите свой код в комментарии – он никому не нужен. 3. Никто не станет комментировать ваш код, даже если бы он и не был искажён.
#include
#include
using namespace std;
int main()
{
int h;
cout << "Enter height: " <> h;
for (int i = 1; i <= h; i++)
{
cout << setw(h – i+1);
for (int l = 1; l <= i; l++)
{
if (l == 1)
cout << "^";
else
cout << "^^";
}
cout << endl;
}
system("pause");
}
Добрый день!
Не могу разобраться в последней задаче.
#include
using namespace std;
int main()
{
setlocale(LC_ALL, “rus”);
int height = 0; // высота треугольника
cout <> height;
for (int i = 0; i < height; i++)
{
После этого я перестаю понимать, что дальше происходит.
Вообще с циклами в ваших уроках я вроде бы как разобрался, с теорией, связанной с вложенными циклами мне тоже всё понятно, хотя и в задачах с символами всё же возникло пару вопросов.
Первые 2 задачи я тоже решил раза с третьего и не без помощи вашего решения, а вот с третьей задачей я не могу справиться даже с вашим решением, ибо оно мне не понятно.
Уже начал думать о том, чтобы поискать какие-нибудь другие уроки, где всё объясняется более подробно, но решил всё-таки оставить комментарий, так как ещё не факт, что я найду такие уроки, а вот ваши уроки мне были хорошо понятны вплоть до последней темы, связанной с циклами, было бы обидно просто забить конкретно на эти уроки из-за одной проблемы, которую сам я решить не смог.
Надеюсь, объясните мне как всё это делается, а то вроде бы сама суть темы понятна: цикл, в котором есть ещё цикл. Только на практике это выглядит куда сложнее, ну или я просто нахожу простые вещи слишком сложными.
Ещё проще объяснений вы просто не найдёте – проще не бывает (поэтому и здесь объяснения с упрощениями, умолчаниями и, как следствие, с неточностями).
Если вам непонятно, то непонятно не то, что связано с языком C++, а то, что связано вообще с логикой построения вычисления, алгоритмированием. Вот на эту часть (логику) и обратите внимание.
Вложенные циклы достаточно просты в теории, но бывают заковыристыми на практике. Опишите что именно непонятно? Тут тройная матрёшка: самая верхняя – большой цикл выводит строки, в зависимости от высоты фигуры, два вложенных цикла в нее “сидят” рядом на двух стульях, только команды выполняют последовательно: сначала первый вложенный выводит нужное количество пробелов, затем второй вложенный необходимое количество символов – потом следующая строка…..и так далее вниз до конечной цифры высоты.
Для тех, кто в танке, попробую разжевать (для самого себя тоже =) ):
for (int i = 0; i > height высоте треугольника*/
{
for (int j = 1; j < height – i; j++) /*Цикл, которым мы рисуем пробелы перед символом "^". Выполняется (height – i – 1) кол-во раз. То есть за каждый проход внешнего цикла длина пустой строки снижается на i (переменная i увеличивается на единицу за каждый проход внешнего цикла, поэтому кол-во раз выполнения этого маленького цикла снижается на 1, соответственно длина пустого поля перед символом в строке тоже каждый раз сокращается).*/
{
cout << ' ';
}
for (int j = height – 2 * i; j <= height; j++) /*второй маленький цикл пишет символы "^"в кол-ве height – (height – 2 * i) + 1. Кажется немного запутанно на первый взгляд. Если внешний цикл печатает первую строку (i=0), то кол-во символов будет равно: height – height + 2*i + 1 = 1 + i*2;
Из уравнения видно, что применение переменной height здесь вовсе ни к чему – она взаимоуничтожается при решении уравнения. При любом её значении она не влияет на кол-во выполняемых циклов. Это не ошибка программиста, но, что называется, "быдлокод" – некрасивое решение задачи с одной совершенно ненужной переменной, вводящей в заблуждение читателя.
Поэтому может показаться затруднительным понять такую запутанную конструкцию, ведь в ней совершенно не обязательно использование "высоты треугольника". Ниже я предложу свой вариант решения, без участия переменной height, ведь вместо нёё можно поставить вообще любое значение, хоть ноль, хоть -242148: результат будет тот же! */
{
cout << '^';
}
cout << endl;
}
Вот как я решил эту задачу без участия переменной height во втором вложенном цикле (изменение только в одном цикле, все остальное оставил как и было):
#include
using namespace std;
int main()
{
setlocale(LC_ALL, “rus”);
int height = 0; // высота треугольника
cout <> height;
for (int i = 0; i < height; i++)
{
for (int j = 1; j < height – i; j++)
{
cout << ' ';
}
for (int j = 0; j < i * 2 + 1; j++) /* кол-во символов "^" в строке определяется уравнением: (кол-во символов) = i * 2 + 1. Как видите, использована всего одна переменная из внешнего цикла. Таким образом, кол-во символов будет возрастать на 2 каждый проход внешнего цикла. Всё просто! */
{
cout << '^';
}
cout << endl;
}
return 0;
}
Надеюсь, мой комментарий кому-нибудь поможет понять эту задачу. Всех благ! P.S. Я сам только учусь, не кидайтесь тапками =)))
Обратить то я обратил, только что толку с этого? Я до сих пор не понимаю все те действия, которые находятся во внешнем цикле.
“не понимаю все те действия” – это всё не относится к языку С++, и более того, не относится к программированию вообще.
Это область аналитического мышления, математического способа восприятия, логических построений … – этому учат в других местах и других курсах.
Можете пойти на форум за помощью и обсуждением:
http://rus-linux.net/forum/viewforum.php?f=31
Не пишите сюда эти свои глупости (которые считаете программным кодом). Пишите это лучше … на заборах ;-)
Сформировать список из последовательности натуральных чисел r1, r2, r3, … rn , которые вводятся с клавиатуры. Вывести данные числа сначала в обратном порядке, а затем в порядке ввода. Из полученного списка удалить все числа, кратные 3 и вывести полученный список.
Сформировать список из последовательности натуральных чисел r1, r2, r3, … rn , которые вводятся с клавиатуры. Вывести данные числа сначала в обратном порядке, а затем в порядке ввода. Из полученного списка удалить все числа, кратные 3 и вывести полученный список.Помогите мне пжста
vaillant, здесь же сайт, который ставит своей целью хоть чему-то научить своих читателей относительно C++, а не делать вместо читателей их домашние задания.
А если вам уже совсем “в край” караул по домашнему заданию к уроку, который вы прогуляли – тогда вам сюда: https://purecodecpp.com/archives/2821
Да не “Вот” ;-) – а не надо писать здесь этот мусор.
Развлекайтесь с этим дома.
Автор, спасибо за ваш труд!
Во втором вложенном цикле вы намудрили с переменной height в условии цикла. Она не нужна, а лишняя макулатура, как говориться, голову морочит новичкам. Я сам не сразу понял, что она там лишняя. Вот моё лаконичное решение с использованием всего двух переменных вместо трех:
for (int j = 0; j < i * 2 + 1; j++) /* кол-во символов "^" в строке определяется уравнением: (кол-во символов) = i * 2 + 1. Как видите, использована всего одна переменная из внешнего цикла. Таким образом, кол-во символов будет возрастать на 2 каждый проход внешнего цикла. Всё просто! */
Ломал бошку часа 2. (Только осваиваю С++). Туго с логикой. В ответ не подглядывал. В итоге получилось, но гораздо громозче чем у автора.
Кстати, автор, что скажете?
странно, почему-то код на сайте другой становится, не тот, что я скидывал. Где cin? Где запрос на ввод высоты.
1. Редактор комментариев портит код.
2. Уже не один раз писалось здесь: не пишите свой код в комментарии – он никому не нужен.
3. Никто не станет комментировать ваш код, даже если бы он и не был искажён.