#include <iostream>
using namespace std;

int main()
{
    //int  l=0, c; // счетчик цикла
    setlocale(0, "");
    cout << "\t------------------- TASK 1 вариант a (через while)------------------- \n"<<
    "Задание 1. Напишите программу, которая вычисляет сумму целых чисел\n"<<
    " от а до 500 (значение a вводится с клавиатуры)" << endl;//Task 1 a
    int i, ii = 0; // завожу 2 переменных: i- счётчик цикла,ii- сумма чисел
    cout << "\nPlease, enter the lower bound (нижняя граница диапазона расчёта): ";
    cin >> i;
    int t = i;// завожу 3-ю переменную t - она запомнит начальное значение i
    while (i <= 500)
    {
        ii += i, i++;
    }
    cout << "The sum of all integers from ) " << t << " to 500 is equal to: " << ii << endl;
    cout << "Сумма всех целых чисел от " << t << " до 500 равна: " << ii << endl;


    cout << "\n\n\n\t------------------- TASK 1 вариант b (через for)-------------------" << endl;//Task 1 b

    //int i,t,ii;//уже завёл выше 3 переменных
    ii = 0;//обнулю ii
    cout << "\nPlease, enter the lower bound \n(введите нижнюю границу диапазона расчёта): ";
    cin >> i;
    t = i;//t запомнит начальное значение i
    for (; i <= 500; i++)
    {
        ii += i;
        //cout<<"\ni= "<<i<<"\tii= "<<ii<<endl;//первая проверка значений (отключил)
    }
    /*cout<<"\ni= "<<i<<"\tii= "<<ii<<endl;/*вторая проверка значений (отключил), она показала, что
     после цикла i увеличился на 1, следовательно, когда после последнего прохода цикла
     чтение вернулось к for (;i<=500;i++), то i, равный 500, остановил цикл,
     но инкремент за ним ещё раз сработал. */

    cout << "The sum of all integers from " << t << " to 500 is equal to: " << ii << endl;
    cout << "Сумма всех целых чисел от " << t << " до 500 равна: " << ii << endl;


    cout << "\n------------------- TASK 2 -------------------"<<
    "Задание 2. Напишите программу, которая запрашивает два целых числа x и y,"<<
    "после чего вычисляет и выводит значение x в степени y." << endl;//Task 2

    //int x1, x2, y1, y2;//завожу 4 переменных
    int x1, x2, y1, y2;//завожу 4 переменных

    
    cout << "\nВведите число x: ";
    cin >> x1;
    cout << "\nВведите его степень y: ";
    cin >> y1;
    //cout << endl << x1 << " \t " << y1 << endl; // контроль (убрать)
    x2 = x1, y2=y1;

    for (; y2 > 1; y2--)/*степень- это количество умножений на первоначальный
    x, оно уменьшается с каждым проходом цикла*/
    {
        x2 = x2 * x1;
    }
    cout << "\nЧисло " << x1 << " в степени " << y1 << " равно " << x2 << endl;


    cout << "\n------------------- TASK 3 ---------------------- " << endl;//Task 3
    cout << "Задача 3: Найти среднее арифметическое всех целых чисел от 1 (или от любого до 1000) до 1000" << endl;
    
    cout << "\nPlease, enter the smallest number of range (наименьшее число диапазона расчёта от 1 до 1000): ";
                           /* ниже использую 2 ранее объявленные переменных : 
                           i(счётчик цикла) и t(хранит начальное значение i),  
                           можно не обнулять*/
    cin >> i;// пусть вводится пользователем, так хоть остановка будет на задаче, и интереснее.
    t = i;//  t запомнит начальное значение i
    float i1 = 0.0; /*новая переменная сосчитает сумму целых чисел диапазона, 
                    потом будет поделена на их количество, поэтому float*/
    while (i <= 1000)// для цели подходит while, а for прибережём на особый случай
    {
        i1 += (float) i; i++;
    }
    cout << i1 << endl;// check
    cout << "The average of all integers from: " << t;
    cout << " to 1000 is equal to: " << i1/ (1000 - t + 1) << endl;
    cout << "Среднее арифметическое всех целых чисел от " << t;
    cout << " до 1000 равно: " << i1 / (1000 - t + 1) << endl;
    
    
    cout << "\n--------------------TASK 4------------------------ " << endl;//-----Task 3-----
    cout << "Задача 4: Найти произведение всех целых чисел от a до 20 ";
    cout << "(значение a вводится с клавиатуры : 1 <= a <= 20)." << endl;

    cout << "\nPlease, enter the smallest number of range (integer a) from 1 to 20: ";
    cout<< "\nВведите наименьшее целое число диапазона расчёта (a) от 1 до 20: \t";
                           
    double a,iii;/*новая переменная iii сосчитает произведение целых 
                          чисел диапазона, не влезет в int, поэтому long*/

    
    //while (true)
    //{
        iii = 1;
        cin >> a;//наименьшее целое число диапазона
        t = a;//  t (ранее объявлено) запомнит начальное значение a

        for (; a <= 20; a++)
        {
            iii *= a;

        }
        cout << "The product of all integers from: " << t;
        cout << " to 20 is equal to: " << iii << endl;
        cout << "произведение всех целых чисел от " << t;
        cout << " до 20 равно: " << iii << endl;
        //cout << "\t\t\t\t\t\t\t\tещё разок: ";

    //}

    cout << "\n------------------- TASK 5 ------------------- " << endl;//Task 3
    cout << "Задача 5: Написать программу, которая выводит на экран таблицу ";
    cout<<"умножения на k, где k – номер варианта. "<<endl;
    
    int var,low,up; 
    cout<< "\nкакой номер варианта?: "; 
    cin>> var; 
    cout<< "\nнижняя граница диапазона таблицы умножения: "; 
    cin>>low;
    up=low-1;
    while (up<=low)//цикл проверки, что второе число больше первого и возврата при ошибке
    {
        cout<< "\nверхняя граница диапазона таблицы умножения\n"<<
        "(БОЛЬШЕ ПЕРВОГО, Я ПРОВЕРЮ!): ";
        cin>> up;
        if (up<=low)
        {cout <<"\nвведите значение БОЛЬШЕ ПЕРВОГО! \n";}
        else
        {break;}
    }
    
    for (;low<=up;low++)//цикл вывода таблицы умножения
    {
        cout<<endl<<var<<"x"<<low<<"="<<var*low<<endl;
    }
    
    
    cout << "\n------------------- TASK 6 ------------------- " << endl;//Task 3
    cout << "Задание 6. Вывести на экран все числа от нуля ";
    cout<<"до введенного пользователем числа "<<endl;
    
    // int low,up; // ранее уже объявлены
    cout<< "\nнижняя граница диапазона - введите 0 \n(но, если захотите"<<
    " - любое другое целое число, хоть -100: "; 
    cin>>low;
    //cout<< "\nверхняя граница диапазона - введите любое другое целое число больше первого: "; 
    //cin>> up;
    up=low-1;
    while (up<low)//цикл проверки, что второе число больше первого и возврата при ошибке
    {
        cout<< "\nверхняя граница диапазона - введите любое другое целое число\nбольше первого"<<
        "(БОЛЬШЕ ПЕРВОГО, Я ПРОВЕРЮ!): ";
        cin>> up;
        if (up<low)
        {cout <<"введите значение БОЛЬШЕ ПЕРВОГО! \n";}
        else
        {break;}
    }
    cout<<"перечень всех целых чисел заданного вами диапазона:\n";
    for (;low<=up;low++) //цикл вывода чисел диапазона
    {cout<<"\t"<<low;}
    cout<<endl;
    
    
    cout << endl << " TASK 7 " << endl; /* Task 3 тут почему-то VS то
                                        и дело скобку какую-то просит,
                                        просто пробел вставляю где-то
                                        и работает */     
    cout << "Задание 7. (самое клёвое!) Пользователь вводит две границы диапазона,"<< 
        " вывести на экран все числа из этого диапазона. "<<
        "\n Предусмотреть, чтобы пользователь мог вводить границы диапазона в произвольном" <<
        " порядке.\n вывести все четные числа из диапазона.\n вывести все нечетные числа из диапазона." <<
        "\n вывести все числа, кратные семи." << endl;
    float low1, keeplow1, up1; // low1-нижняя граница диапазона, up1 - верхняя, 
    int counter_int, counter;//counter_int будет int-овым дублёром low1, а counter будет семёркой из задания
    //--------------------------------------------------
    cout << "\n нижняя граница диапазона - введите любое целое число: ";
    cin >> low1;
    up1 = low1 - 1;
    keeplow1 = low1;//keeplow1 - копирует low1, пустим его в расход, а low1 нам ещё надо на потом
    while (up1 < keeplow1)//цикл проверки, что второе число больше первого и возврата при ошибке
    {
        cout << "\nверхняя граница диапазона - введите любое другое целое число\n больше первого" <<
            "(БОЛЬШЕ ПЕРВОГО, Я ПРОВЕРЮ!): ";
        cin >> up1;
        if (up1 < keeplow1)
        {  cout << "введите значение БОЛЬШЕ ПЕРВОГО! \n";   }
        else
        {       break;     }
    }
    //===============================================================
    cout << "\nперечень всех целых чисел заданного вами диапазона:\n";
    for (; keeplow1 <= up1; keeplow1++) //цикл вывода чисел диапазона
    {        cout << "\t" << keeplow1;    }
    cout << endl;

    keeplow1 = low1;
    cout << "\nперечень всех целых чётных и нечётных чисел заданного вами диапазона \n"<<
        " ЗДЕСЬ ПЕРВЫЙ СПОСОБ (ИСПОЛЬЗУЮ СВОЙСТВО ОБРЕЗАНИЯ ТИПА ДАННЫХ INT) :\n";
    //================================================================
    //ЗДЕСЬ ПЕРВЫЙ СПОСОБ (ИСПОЛЬЗУЮ СВОЙСТВО "ОБРЕЗАНИЯ" ТИПА ДАННЫХ INT)
    for (; keeplow1 <= up1; keeplow1++) //цикл вывода чётных и нечётных чисел диапазона 
    {
        counter_int = (int)keeplow1;
        if (keeplow1 / 2 == counter_int / 2) // ------ Вот ОНА, моя идея!!!!! -------
        {cout << "\nчётное: " << keeplow1;}
        else
        {cout << "\n\t\t\t\t\t\t\tнечётное: " << keeplow1;}
    }
    cout << endl;
    //===============================================================
    //ЗДЕСЬ ДРУГОЙ СПОСОБ (ДВА ПОСЛЕДОВАТЕЛЬНЫХ ЦИКЛА)
    cout << "Ищем число кратное 7? Или другому числу? Введите число \nЗДЕСЬ ДРУГОЙ СПОСОБ (ДВА ПОСЛЕДОВАТЕЛЬНЫХ ЦИКЛА): ";
    cin >> counter;
    //low1 = keeplow1;
    int low7 = 0;/* не сработает, если диапазон начинается с отрицательного 
                  значения, нужен ещё один цикл под условием */
    for (; low7 <= low1; low7 += counter) /*цикл поиска наименьшего числа,
                                  кратного counter и входящего в диапазон */
    {}
    /* что интересно, в строке for выражение low7 += counter не повторилось
    после выхода из цикла, в отличие от случаев с инкрементом */

    for (; low7 <= up1; low7 += counter)/* цикл вывода всех чисел, кратных counter
                                   и входящих в диапазон */
    {cout << "\t\t\t" << low7 << endl;}
    /* МОЖНО БЫЛО СДЕЛАТЬ ЦИКЛ В ЦИКЛЕ И ПРОВЕРЯТЬ КАЖДОЕ ЗНАЧЕНИЕ В ОТДЕЛЬНОСТИ,
    НО МНЕ КАЖЕТСЯ ЭТО БОЛЬШЕЙ НАГРУЗКОЙ НА МАШИНУ, БОЛЬШЕ ПРОЦЕССОВ */
    cout<<endl;
    

// ============================== 

cout << endl << " TASK 8 " << endl;

int lsum=0;
//int low, lsum=0,up,t; // введены ранее
    cout<< "\nнижняя граница диапазона сложения: "; 
        cin>>low;
            up=low-1;
                while (up<low)//цикл проверки, что второе число не меньше первого и возврата при ошибке
                    {
                            cout<< "\nверхняя граница диапазона сложения \n"<<
                                    "(БОЛЬШЕ ПЕРВОГО, Я ПРОВЕРЮ!): ";
                                            cin>> up;
                                                    if (up<low)
                                                            {cout <<"\nвведите значение БОЛЬШЕ ПЕРВОГО! \n";}
                                                                    else
                                                                            {break;}
                                                                                }
// ==================

t=low; // ранее объявленная t запомнит начальное значение low
                                        for (;low <= up; low++)
                                                                                {lsum+=low;}
                                                                                                                                                                                                                                                                                                                                                                      cout << "The sum of all integers from " << t << " to "<<up<<" is equal to: " << lsum << endl;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  cout << "Сумма всех целых чисел от " << t << " до "<<up<<" равна: " << lsum << endl;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  

    return 0;
}

/*
Домашнее задание № 2
Курс «Язык программирования C»
Тема: Циклы
Домашнее задание
Задание 1. Напишите программу, которая вычисляет сумму целых чисел от а до 500 (значение a
вводится с клавиатуры).
Задание 2. Напишите программу, которая запрашивает два целых числа x и y, после чего
вычисляет и выводит значение x в степени y.
Задание 3. Найти среднее арифметическое всех целых чисел от 1 до 1000.
Задание 4. Найти произведение всех целых чисел от a до 20 (значение a вводится с клавиатуры:
1 <=a <= 20).
Задание 5. Написать программу, которая выводит на экран таблицу умножения на k, где k –
номер варианта. Например, для 7-го варианта:
 7 x 2 = 14
  7 x 3 = 21
  Задание 6. Вывести на экран все числа от нуля до введенного пользователем числа.
  Задание 7. Пользователь вводит две границы диапазона, вывести на экран все числа из этого
  диапазона. Предусмотреть, чтобы пользователь мог вводить границы диапазона в произвольном
  порядке.
  вывести все четные числа из диапазона.
  вывести все нечетные числа из диапазона.
  вывести все числа, кратные семи.
  Задание 8. Пользователь вводит две границы диапазона. Посчитать сумму всех чисел
  диапазона.
  Задание 9. Пользователь с клавиатуры вводит числа. Посчитать их сумму и вывести на экран,
  как только пользователь введет ноль.
  */ 

C++ Online Compiler

Write, Run & Share C++ code online using OneCompiler's C++ online compiler for free. It's one of the robust, feature-rich online compilers for C++ language, running on the latest version 17. Getting started with the OneCompiler's C++ compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as C++ and start coding!

Read inputs from stdin

OneCompiler's C++ online compiler supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample program which takes name as input and print your name with hello.

#include <iostream>
#include <string>
using namespace std;

int main() 
{
    string name;
    cout << "Enter name:";
    getline (cin, name);
    cout << "Hello " << name;
    return 0;
}

About C++

C++ is a widely used middle-level programming language.

  • Supports different platforms like Windows, various Linux flavours, MacOS etc
  • C++ supports OOPS concepts like Inheritance, Polymorphism, Encapsulation and Abstraction.
  • Case-sensitive
  • C++ is a compiler based language
  • C++ supports structured programming language
  • C++ provides alot of inbuilt functions and also supports dynamic memory allocation.
  • Like C, C++ also allows you to play with memory using Pointers.

Syntax help

Loops

1. If-Else:

When ever you want to perform a set of operations based on a condition If-Else is used.

if(conditional-expression) {
   //code
}
else {
   //code
}

You can also use if-else for nested Ifs and If-Else-If ladder when multiple conditions are to be performed on a single variable.

2. Switch:

Switch is an alternative to If-Else-If ladder.

switch(conditional-expression){    
case value1:    
 // code    
 break;  // optional  
case value2:    
 // code    
 break;  // optional  
......    
    
default:     
 code to be executed when all the above cases are not matched;    
} 

3. For:

For loop is used to iterate a set of statements based on a condition.

for(Initialization; Condition; Increment/decrement){  
  //code  
} 

4. While:

While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.

while (condition) {  
// code 
}  

5. Do-While:

Do-while is also used to iterate a set of statements based on a condition. It is mostly used when you need to execute the statements atleast once.

do {  
 // code 
} while (condition); 

Functions

Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increases re-usuability and modularity. Function gets run only when it is called.

How to declare a Function:

return_type function_name(parameters);

How to call a Function:

function_name (parameters)

How to define a Function:

return_type function_name(parameters) {  
 // code
}