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
Чи не залік, на перездачу :) – так сказав би один знайомий викладач, побачивши такі рішення.
У першій програмі помилка ділення на нуль. Досить ввести нуль першим числом.
Дрібниця, але в першій задачі ви на рівність нулю перевіряєте двічі. МБ краще відразу з циклу вийти? – типу while (true) { if (0 == Вел) break; сума + = значення; ++num; }
У другій задачі досить ввести кінець діапазону менше ніж початок діапазону і програма зациклиться. Не вистачає “захисту від дурня”. Я думаю логічно попросити числа в діапазоні (5, 1), як і (1, 5).
За третьою завданню все окей. Принаймні я косяків не бачу.
підкажіть , не можу зрозуміти як саме виконується умова , У першій завданню , на відміну введеного числа від нуля? Адже це не задається умова на переривання циклу при введенні нуля заплутався)
while (true) { if (0 == val) break; sum += val; ++num; }
if (digit) – до виконання інструкції оператор if перевіряє умова, якщо воно істинне, тоді виповнюється інструкція. Умова можна записати як (digit != 0) але не обов'язково. У разі if (digit) при будь-якому ненульове значення digit умова буде істинно, але якщо digit дорівнює нулю (0 автоматично повертає false), при перевірці умови буде повернуто брехня і інструкція не буде виконана. К примеру, мені здається що на другий завданню, в 21 рядку if (i % 2 != 0) можна записати просто як if (i % 2)
Спасибо, що дали відповідь на питання новачка. З приводу, як краще записати if (i % 2 != 0) або якщо (i % 2) – думки програмістів розходяться. згідно останнім угодам про кодування – краще застосовувати явні умови. цитую: “У булевских виразах («Якщо», «За», «У той час», «Do» і першому операнде тернарного оператора “?”) завжди записуйте рівність і нерівність в явному вигляді.”
Так я і сам новачок – другий місяць як почав читати книгу по с ++))) Дуже цікавить питання (не знайшов на сайті форуму тому спершу тут): якщо вивчити матеріали, надані на сайті і вирішувати всі ці завдання, чи можна вважати себе програмістом (хоча б частково)? чи можна тоді скласти початкове резюме і пробувати шукати роботу? Якщо немає то що ще треба вивчити і знати для цього? Спасибо)
Та ти що? ))) це тільки най-най початок. Сайт мій ще потребує, як мінімум, в 100 статтях. + багато завдань. На моєму сайті поки є тільки дуже прості завдання. А щоб вважати себе програмістом хоча б частково – треба пару-трійку мов вивчити.
як ви думаєте такий варіанt прийнятний для вирішення першого завдання? int main() { int number; int sum; int i=0;
float aveRage;
do {
cout << "Please enter the " << i + 1 <> number; cout << "Number you entered is " << number << endl;
i ++; sum += number; aveRage = sum / i++;
} while (number != 0);
cout << "The total number of digits that were inserted is " << i ++ << endl; cout << "The total amount of insereted digits summed together is " <<sum - 1 << endl; cout << "The average of these numbers is " << aveRage << endl;
1) У тебе в циклі я не бачу введення значень в number; 2) Обчислення середнього можна винести за цикл. Разом скорочуються до:
int main(){ int i,sum=0,number=0;
for(i=1;number;i++,sum+=number) { cout<>number; }
cout<<"The total number of digits that were inserted is "<<i<<endl << "The total amount of insereted digits summed together is "<<sum<<endl <<"The average of these numbers is " << sum/i<< endl; cin.get(); return 0; }
cout<<"The total number of digits that were inserted is "<<i<<endl << "The total amount of insereted digits summed together is "<<sum<<endl <<"The average of these numbers is " << sum/i<< endl; cin.get(); return 0; }
У вас там зовсім немає ніякого введення, типу cin >> number …
Він там був, Сайт чому то його з'їв, і підставив вираз number; У мене те ж саме в пості. Мабуть якісь спецсимволи спрацювали.
Взагалі то, майже ніколи не слід питати “варіант прийнятний для вирішення?”. Потрібно компілювати і виконувати. Якщо виконується вірно при всіх мислимих наборах вхідних даних – значить це прийнятне рішення, що б там не було написано.
куди цікавіше (і має широке практичне застосування) задача №1 якщо трохи змінити умова:
> После ввода нуля, показать на экран количество чисел, которые были введены, їх загальну суму, середнє арифметичне і середньоквадратичне відхилення від середнього (або дисперсію … розсіювання).
норм )
Все що було тобою відправлено за допомогою Orphus – виправили. Спасибо, Олексій! )
Чи не залік, на перездачу :) – так сказав би один знайомий викладач, побачивши такі рішення.
У першій програмі помилка ділення на нуль. Досить ввести нуль першим числом.
Дрібниця, але в першій задачі ви на рівність нулю перевіряєте двічі. МБ краще відразу з циклу вийти? – типу
while (true) {
if (0 == Вел)
break;
сума + = значення;
++num;
}
У другій задачі досить ввести кінець діапазону менше ніж початок діапазону і програма зациклиться. Не вистачає “захисту від дурня”. Я думаю логічно попросити числа в діапазоні (5, 1), як і (1, 5).
За третьою завданню все окей. Принаймні я косяків не бачу.
підкажіть , не можу зрозуміти
як саме виконується умова , У першій завданню , на відміну введеного числа від нуля? Адже це не задається умова на переривання циклу при введенні нуля
заплутався)
while (true) {
if (0 == val)
break;
sum += val;
++num;
}
такий код зрозуміліше )
if (digit) – до виконання інструкції оператор if перевіряє умова, якщо воно істинне, тоді виповнюється інструкція. Умова можна записати як
(digit != 0) але не обов'язково. У разі if (digit) при будь-якому ненульове значення digit умова буде істинно, але якщо digit дорівнює нулю (0 автоматично повертає false), при перевірці умови буде повернуто брехня і інструкція не буде виконана.
К примеру, мені здається що на другий завданню, в 21 рядку if (i % 2 != 0) можна записати просто як if (i % 2)
Спасибо, що дали відповідь на питання новачка.
З приводу, як краще записати if (i % 2 != 0) або якщо (i % 2) – думки програмістів розходяться. згідно останнім угодам про кодування – краще застосовувати явні умови. цитую: “У булевских виразах («Якщо», «За», «У той час», «Do» і першому операнде тернарного оператора “?”) завжди записуйте рівність і нерівність в явному вигляді.”
Так я і сам новачок – другий місяць як почав читати книгу по с ++))) Дуже цікавить питання (не знайшов на сайті форуму тому спершу тут): якщо вивчити матеріали, надані на сайті і вирішувати всі ці завдання, чи можна вважати себе програмістом (хоча б частково)? чи можна тоді скласти початкове резюме і пробувати шукати роботу?
Якщо немає то що ще треба вивчити і знати для цього?
Спасибо)
Та ти що? ))) це тільки най-най початок. Сайт мій ще потребує, як мінімум, в 100 статтях. + багато завдань. На моєму сайті поки є тільки дуже прості завдання. А щоб вважати себе програмістом хоча б частково – треба пару-трійку мов вивчити.
(((((((((( мда, ось і інтерес до програмування пропав..
Рішення в третьому завдання вийшло зовсім інше.
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
int iHeight(0), iConstructing(0), iCounting(0), iSymbols(1);
cout < < "Введите высоту треугольника:"; cin >> iHeight;
iConstructing = iHeight;
do
{
iCounting = 0;
while (iCounting < = (iConstructing - 1)) { cout << " "; iCounting++; } iCounting = 0; while (iCounting < iSymbols) { cout << "^"; iCounting++; } cout << endl; iSymbols += 2; iConstructing--; } while (iConstructing); return 0; }
як ви думаєте такий варіанt прийнятний для вирішення першого завдання?
int main()
{
int number;
int sum;
int i=0;
float aveRage;
do
{
cout << "Please enter the " << i + 1 <> number;
cout << "Number you entered is " << number << endl;
i ++;
sum += number;
aveRage = sum / i++;
}
while (number != 0);
cout << "The total number of digits that were inserted is " << i ++ << endl;
cout << "The total amount of insereted digits summed together is " <<sum - 1 << endl;
cout << "The average of these numbers is " << aveRage << endl;
return 0;
}
1) У тебе в циклі я не бачу введення значень в number;
2) Обчислення середнього можна винести за цикл.
Разом скорочуються до:
int main(){
int i,sum=0,number=0;
for(i=1;number;i++,sum+=number) {
cout<>number;
}
cout<<"The total number of digits that were inserted is "<<i<<endl
<< "The total amount of insereted digits summed together is "<<sum<<endl
<<"The average of these numbers is " << sum/i<< endl;
cin.get();
return 0;
}
хоча не. Якщо з do while то
int main(){
int i=0,sum=0,number=0;
do{
i++;
cout<> number;
sum+=number;
} while(number);
cout<<"The total number of digits that were inserted is "<<i<<endl
<< "The total amount of insereted digits summed together is "<<sum<<endl
<<"The average of these numbers is " << sum/i<< endl;
cin.get();
return 0;
}
У вас там зовсім немає ніякого введення, типу cin >> number …
Він там був, Сайт чому то його з'їв, і підставив вираз
number;
У мене те ж саме в пості. Мабуть якісь спецсимволи спрацювали.
Взагалі то, майже ніколи не слід питати “варіант прийнятний для вирішення?”.
Потрібно компілювати і виконувати. Якщо виконується вірно при всіх мислимих наборах вхідних даних – значить це прийнятне рішення, що б там не було написано.
куди цікавіше (і має широке практичне застосування) задача №1 якщо трохи змінити умова:
> После ввода нуля, показать на экран количество чисел, которые были введены, їх загальну суму, середнє арифметичне і середньоквадратичне відхилення від середнього (або дисперсію … розсіювання).
Все стає куди веселіше…