Основы программирования на С++ для начинающих

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

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

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

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

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

задачи вложенные циклы

176 thoughts on “Задачи: циклы while, do while, вложенные циклы

  1. Если кому то вдруг интересно, альтернативный вариант решения второй задачи с помощью цикла for. :)

    #include
    using namespace std;

    int main(){
    setlocale(LC_ALL, "rus");

    int debut;
    int fin;
    int number;
    int sum = 0;

    cout << debut;
    cout << fin;

    for(int i = (debut - 1); i < fin; ++i){
    number = debut;
    if (number % 2 != 0){
    sum = sum + number;
    debut = debut + 1;
    }
    else{
    debut = debut + 1;
    continue;
    }
    }
    cout << "Сумма нечётных чисел в данном диапазоне: " << sum << endl;

    }

  2. я один не допедриваю принцип работы whille??? прога рабочая,но не уверен,что do while нужна.и специально для “выскочек” внес “защиту для дурака”
    case 9:
    {
    /*. Необходимо суммировать все нечётные целые числа в диапазоне,
    который введёт пользователь с клавиатуры*/

    double a = 0;
    double b = 0;
    int i = 0;
    double s = 0;

    cout << a;
    cin >> b;
    do
    {
    if (a < b)
    {
    for (i = a; i <= b; i++)
    {
    if (i % 2 == 0)
    {
    continue;
    }
    s += i;
    cout << "нечетные числа из вашего диапазона\t" << i << endl;

    }cout << "сумма этих чисел = \t" << s < b)
    {
    for (i = b; i <= a; i++)
    {
    if (i % 2 == 0)
    {
    continue;
    }
    s += i;
    cout << "нечетные числа из вашего диапазона\t" << i << endl;
    }
    cout << "сумма этих чисел = \t" << s << endl;
    }

    break;
    } while (a == b);
    cout << "алльенЬ\n";
    break; }

  3. int main()
    {
    setlocale(LC_ALL, "rus");

    int a = 0, b = 0, i = -1;
    do
    {
    a = _getche() - 48;
    b = a + b;
    i++;
    } while (a != 0);
    if (b == 0)
    exit(0);
    cout << "\nСумма = " << b << endl
    << "Колличество введеных знаков = " << i << endl
    << "Среднее арефметическое = " << static_cast(b) / i << endl;

    system("pause");
    return 0;
    }

  4. третья

    int main()
    {
    setlocale(LC_ALL, "rus");

    cout << h;
    do
    {
    if(h!=1)
    cout << setfill(' ') << setw(h-1) << ' '
    << setfill('^') << setw(k) << '^' << endl;
    else
    {
    cout << setfill('^') << setw(k) << '^' << endl;
    }
    --h; k += 2;
    } while (h);

    system("pause");
    return 0;
    }

  5. По поводу третьей задачи.
    более менее разобрался с циклами, которые задают высоту фигуры и кол-во пробелов.
    Но хоть убейте не могу разобраться с циклом, который выводит символ, а именно for (int j = height – 2 * i; j <= height; j++).
    Пожалуйста кто- нибудь объясните почему переменная j инициализирована именно таким значением. Заранее благодарен!

    1. int main()
      {
      setlocale(LC_ALL, "rus");

      int height = 0; // высота треугольника

      cout << height;

      for (int i = 0; i = i; j--)
      {
      cout << "!";
      }

      for (int j =0; j <= i; j++)
      {
      cout << '^';
      }
      for (int j=1; j<= i; j++)
      {
      cout <<'^';
      }
      cout << endl;
      }
      return 0;
      }

      1. В условии задачи забыли упомянуть, что операторы вывода символа, пробела и перенос строки можно использовать лишь единожды…вот тогда она становится интересной ;)

  6. “Задачи: циклы while, do while, вложенные циклы”
    Не понятно почему третья задача решена через for(;;), разве это не противоречит теме?
    И как взять код в рамочку?)

    1. Циклы for, while, do while – это разные формы одного и того же – каждый из них может быть переписан через любой другой.
      Так что разницы особой нет.

      1. [quote]Циклы for, while, do while — это разные формы одного и того же — каждый из них может быть переписан через любой другой.
        Так что разницы особой нет.[/quote]
        Я это прекрасно понимаю,однако для циклов for() есть отдельная тема. Т.е. по логике либо собрать все циклы в одну тему, либо уделить внимание раскрытию объявленной темы.

    2. как взять код в рамочку?
      Это **разметка текста** вставкой тегов BBCode.
      Для того, чтобы разметить **программный код** нужно записать примерно так (только вместо квадратных скобок [ ] писать угловые ), вот так:
      [code]
      … здесь вы пишете свой код …
      [/code]
      (почитайте поиском про BBCode для более подробного объяснения)

  7. [code с++]
    int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

    int a, b;
    int sum = 0;

    cout << "Введите диапазон чисел" << endl;
    cout <> a;
    cout <> b;

    cout << "Сумма не четных чисел: " << endl;
    while (a != b + 1) {
    if (a % 2 != 0) {
    sum += a;
    if (a == b – 1 || a == b) {
    cout << a;
    }
    else cout << a << " + ";
    }
    a++;
    }
    cout << " = " << sum << endl;

    return 0;
    }
    [/code]

  8. [code]
    int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

    int a, b;
    int sum = 0;

    cout << "Введите диапазон чисел" << endl;
    cout <> a;
    cout <> b;

    cout << "Сумма не четных чисел: " << endl;
    while (a != b + 1) {
    if (a % 2 != 0) {
    sum += a;
    if (a == b – 1 || a == b) {
    cout << a;
    }
    else cout << a << " + ";
    }
    a++;
    }
    cout << " = " << sum << endl;

    return 0;
    }
    [/code]

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *