Статья Автор: Лебедев Дмитрий

Конспект 2. Переменные.


C++_Переменные. Типы данных. Теория

Рассмотрим понятие переменной. Для понимания удобно представлять переменную в виде «коробочки», в которую можно класть то или иное значение. Каждая переменная имеет две характеристики: тип данных и значение.

Рассмотрим понятие переменной на примере. Пусть нам известно, что машина едет со скоростью 90 км/ч на протяжении 8 часов. Необходимо найти путь машины. Чтобы это делать при различных значениях числовых параметров, удобно использовать три переменные: v, t и s а затем в переменной ss сохранить вычисленную длину пути:

	int v, t, s;
    v = 90;
    t = 8;
    s = v * t;

В языке C++ есть ограничения на значения чисел, которые можно хранить в различных типах данных. Так, есть специальный тип данных long long, в котором можно хранить числа бо́льшие, чем в рассмотренном в примере типе int. Ограничения типов int и long long представлены в таблице.

Тип данных

Ограничения на значение

Примерное ограничение для оценки

int

[−231;231–1]

[−2⋅109;2⋅109]

long long

[−263;263–1]

[−9⋅1018;9⋅1018]

 

Для хранения вещественных чисел используется тип данных double. Например:

	double x = 1;
    double y = 0.01235;

Можно примерно описать способ хранения вещественных чисел в языке C++ с помощью двух параметров (каждый является целым числом): значения числа, начинающегося с первой ненулевой цифры, а также степени десятки, на которую надо домножить это число, чтобы получить нужную нам десятичную дробь (реальное представление использует двоичную систему счисления). В С++ у типа данных double будут корректно храниться примерно первые 15 десятичных значащих цифр.

Для того чтобы создать переменную, в которой мы будем хранить строку, необходимо подключить библиотеку string:

#include <string>

Теперь внутри функции main мы можем создать переменную S типа string:

string S = "Cat";

Важно называть переменные таким образом, чтобы было понятно, что именно в них хранится. Например, переменную, в которой хранится количество чего-либо, хорошо назвать count или сокращённо cnt. Хорошим тоном считается использовать для именования переменных английские слова.

Также можно вводить значения переменных из консоли с помощью потока ввода cin. Например, задачу с вычислением пути можно переформулировать таким образом: скорость и время поездки вводятся с консоли, а итоговый путь также необходимо вывести в консоль. Напишем решение такой задачи и будем при этом использовать более понятные названия переменных:

#include <iostream>
using namespace std;
int main()
{
    int carSpeed;
    int time;
    cin >> carSpeed >> time;
    int dist = carSpeed * time;
    cout << dist;
    return 0;
}
 

Также рассмотрим пример программы, которая здоровается с нами: из консоли программа получает некоторую строку (<имя>) и выводит в консоль сообщение Hello <имя>.

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s;
    cin >> s;
    cout << "Hello " << s;
    return 0;
}

Можно переписать данную программу с помощью сложения строк:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s;
    cin >> s;
    cout << "Hello " + s;
    return 0;
}

Задачи для тренировки

3)

Сумма-1

Вычислите значение выражения a+b.

Входные данные

В единственной строке входных данных задано два целых числа 0⩽a,b⩽109.

Выходные данные

Выведите значение выражения a+b.

Примеры

Ввод              Вывод
2 2                   4

#include <iostream>
#include <string>

using namespace std;

int main()

{
    int a,b;
    cin>>a>> b;
    cout<< a+b <<endl;
    
    return 0;
}

4)
 Сумма-2

Вычислите значение выражения a+b.

Обратите внимание на ограничения для a и b.

Входные данные

В единственной строке входных данных задано два целых числа 0⩽a,b⩽2⋅109.

Выходные данные

Выведите значение выражения a+ba+b.

Примеры

Ввод               Вывод
2 2                     4

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


int main()

{
    long long a,b;
    cin>>a>> b;
    cout<< a+b <<endl;
    
    return 0;
}

5)
Hello, Hurry!

Напишите программу, которая приветствует пользователя, выводя слово Hello, введённое имя и знаки препинания по образцу (см. пример входных и выходных данных). Программа должна считывать в строковую переменную значение и писать соответствующее приветствие. Обратите внимание, что после запятой должен обязательно стоять пробел, а перед восклицательным знаком пробела нет.

Входные данные

Вводится строка, длина которой не превышает 10 символов.

Выходные данные

Выведите ответ на задачу.

Примеры

Ввод             Вывод
Hurry             Hello, Hurry!
#include <iostream>
#include <string>
using namespace std;


int main()

{
    string a;
    cin>>a;
    cout<<"Hello, "<<a<<"!" <<endl;
    
    return 0;
}

6) Следующее и предыдущее

Напишите программу, которая считывает целое число и выводит текст, аналогичный приведённому в примере. Пробелы, знаки препинания, заглавные и строчные буквы важны!

Входные данные

Вводится целое число, по модулю не превосходящее 10000.

Выходные данные

Выведите сначала фразу "The next number for the number", затем введённое число, затем слово "is", окружённое пробелами, затем формулу для следующего за введённым числа, наконец, знак точки без пробела. Аналогично в следующей строке для предыдущего числа.

Примечание

Вывод необходимо организовать в две строки, по одному предложению в каждой. При выводе обращайте внимание на пробелы и регистр.

Примеры

Ввод             Вывод
179               The next number for the number 179 is 180. The                                previous number for the number 179 is 178.

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


int main()
{
    cout<< "  _      _      _"<<endl;
    cout<< ">(.)__ <(.)__ =(.)__" <<endl;
    cout<< " (___/  (___/  (___/" << endl;

    return 0;
}
 

7)Слоники

Артём очень любит играть в шахматы. А ещё он любит слонов! У Артёма есть много слонов. Ему интересно, какое минимальное количество слонов можно расставить на шахматной доске размера n×n так, чтобы они били всё поле (любая клетка должна находиться на одной диагонали хотя бы с одним слоном; считается, что слон бьёт и ту клетку, на которой стоит).

Напишите программу, которая по введённому размеру стороны доски nn выведет ответ на задачу.

Входные данные

Вводится единственное число n, 1⩽n⩽1018.

Выходные данные

Выведите ответ на поставленную задачу.

Примеры

Ввод            Вывод
4                  4
#include <iostream>
#include <string>
using namespace std;


int main()

{
    long long n;
    cin>>n;
    cout<< n <<endl;
    
    return 0;
}



int main()
{
    cout<< 1023456789876543201 <<endl;
    
    return 0;
}
 

Задачи с разбором

Разбор задачи "Обмен значений -1"

Обмен значений — 1

Напишите программу, которая считывает значения двух переменных a и b, затем меняет их значения местами и выводит на экран. Данную задачу необходимо решить без использования каких-либо арифметических операций.

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

      
#include <iostream>
using namespace std;
int main()
{
	int a, b;
	cin >> a >> b;
    int c=a;
    a=b;
    b=c;
    cout << a << " " << b << endl;
	return 0;
}
Разбор задачи "Обмен значений-2"

Обмен значений — 2

Напишите программу, которая считывает значения двух переменных a и b, затем меняет их значения местами и выводит на экран. Данную задачу необходимо решить без использования каких-либо переменных, кроме a и b (используйте арифметические операции).

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

#include <iostream>
using namespace std;
int main()
{
    int a, b;
    cin >> a >> b;
    a=a+b;
    b=a-b;
     a=a-b;
     cout << a << " " << b << endl;
     return 0;
}

Печать