Основи програмування на С ++ для початківців

Завдання: циклы while, do while, вложенные циклы

Мы познакомились с в той час як і циклами робити під час в C и с вложенными конструкциями в циклах. Займёмся решением задач.

1. Організувати безперервний введення чисел з клавіатури, пока пользователь не введёт 0. После ввода нуля, показать на экран количество чисел, которые были введены, их общую сумму и среднее арифметическое. Подсказка: необходимо объявить переменную-счетчик, которая будет считать количество введенных чисел, и переменную, которая будет накапливать общую сумму чисел.

2. Необхідно підсумувати всі непарні цілі числа в діапазоні, который введёт пользователь с клавиатуры.

3. Задача посложней. Нарисовать равнобедренный треугольник из символов ^. Высоту выбирает пользователь. Наприклад: высота = 5, на экране

завдання вкладені цикли

177 думки про "Завдання: циклы while, do while, вложенные циклы

  1. Чи не залік, на перездачу :) – так сказав би один знайомий викладач, побачивши такі рішення.

    У першій програмі помилка ділення на нуль. Досить ввести нуль першим числом.

    Дрібниця, але в першій задачі ви на рівність нулю перевіряєте двічі. МБ краще відразу з циклу вийти? – типу
    while (true) {
    if (0 == Вел)
    break;
    сума + = значення;
    ++num;
    }

    У другій задачі досить ввести кінець діапазону менше ніж початок діапазону і програма зациклиться. Не вистачає “захисту від дурня”. Я думаю логічно попросити числа в діапазоні (5, 1), як і (1, 5).

    За третьою завданню все окей. Принаймні я косяків не бачу.

  2. підкажіть , не можу зрозуміти
    як саме виконується умова , У першій завданню , на відміну введеного числа від нуля? Адже це не задається умова на переривання циклу при введенні нуля
    заплутався)

    while (true) {
    if (0 == val)
    break;
    sum += val;
    ++num;
    }

    такий код зрозуміліше )

    1. if (digit) – до виконання інструкції оператор if перевіряє умова, якщо воно істинне, тоді виповнюється інструкція. Умова можна записати як
      (digit != 0) але не обов'язково. У разі if (digit) при будь-якому ненульове значення digit умова буде істинно, але якщо digit дорівнює нулю (0 автоматично повертає false), при перевірці умови буде повернуто брехня і інструкція не буде виконана.
      К примеру, мені здається що на другий завданню, в 21 рядку if (i % 2 != 0) можна записати просто як if (i % 2)

      1. Спасибо, що дали відповідь на питання новачка.
        З приводу, як краще записати if (i % 2 != 0) або якщо (i % 2) – думки програмістів розходяться. згідно останнім угодам про кодування – краще застосовувати явні умови. цитую: “У булевских виразах («Якщо», «За», «У той час», «Do» і першому операнде тернарного оператора “?”) завжди записуйте рівність і нерівність в явному вигляді.”

  3. Так я і сам новачок – другий місяць як почав читати книгу по с ++))) Дуже цікавить питання (не знайшов на сайті форуму тому спершу тут): якщо вивчити матеріали, надані на сайті і вирішувати всі ці завдання, чи можна вважати себе програмістом (хоча б частково)? чи можна тоді скласти початкове резюме і пробувати шукати роботу?
    Якщо немає то що ще треба вивчити і знати для цього?
    Спасибо)

    1. Та ти що? ))) це тільки най-най початок. Сайт мій ще потребує, як мінімум, в 100 статтях. + багато завдань. На моєму сайті поки є тільки дуже прості завдання. А щоб вважати себе програмістом хоча б частково – треба пару-трійку мов вивчити.

  4. Рішення в третьому завдання вийшло зовсім інше.
    #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; }

  5. як ви думаєте такий варіан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. 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;
      }

      1. хоча не. Якщо з 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;
        }

      1. Він там був, Сайт чому то його з'їв, і підставив вираз
        number;
        У мене те ж саме в пості. Мабуть якісь спецсимволи спрацювали.

    2. Взагалі то, майже ніколи не слід питати “варіант прийнятний для вирішення?”.
      Потрібно компілювати і виконувати. Якщо виконується вірно при всіх мислимих наборах вхідних даних – значить це прийнятне рішення, що б там не було написано.

  6. куди цікавіше (і має широке практичне застосування) задача №1 якщо трохи змінити умова:

    > После ввода нуля, показать на экран количество чисел, которые были введены, їх загальну суму, середнє арифметичне і середньоквадратичне відхилення від середнього (або дисперсію … розсіювання).

    Все стає куди веселіше…

залишити коментар

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *