Типы данных и арифметика
Если мы хотим, чтобы наша программа оперировала какими - либо данными, нам нужно эти данные предоставить этой программе. Для этого нам нужно знать ввод, и то, что мы хотим ввести. Вводить мы можем разные вещи, такие как строки, числа и так далее. Обобщенно эти вещи нызываются переменные. Переменная - это именованная область памяти. Переменная характеризуется тремя параметрами:
- Имя переменной - не должно иметь пробелов, и не может быть числом.
- Адрес переменной - понятно, что это адресс ячейки, в которой хранится наша переменная. Подробнее мы будем рассматривать этот пункт, когда будем говорить про указатели.
- Тип переменной - это тип данных, который имеет переменная.
Всего таких типов несколько. Рассмотрим самые важные из них:
int n; // целочисленный тип (до 10^9)
float a; // тип числа с плавающей точкой, например 3,14156
double alpha; // тоже тип числа с плавающей точкой, но двойной (double) точности.
long long crazy8; // для больших (до 10^18) чисел
long double create_world; // аналогично, только для нецелых чисел
char ch_100; // символьный тип
string str; // строка
bool ka; // логический тип, принимает значения true/false
Таких образом мы можем создавать переменные
int main ()
{
int number = 10;
char a,b; // можем объединять объявление переменных
return 0;
}
И выводить их
int main ()
{
int number = 10;
cout << number;
return 0;
}
Еще одним важным понятием языка С++ является константа. Допустим, мы хотим создать переменную, в котрой будем хранить колличество часов в сутках. Константы по определению нельзя изменять по ходу выполнения программы, а если такое случится, то компилятор выведет сообщение об ошибке.
Создаются константы следующим образом:
const int Hours_per_day = 24; // const <тип> <имя> = <значение>
Общепринятый стиль программирования говорит нам о том, что константы лучше всего именовать с большой буквы.
Ввод
Думаю сейчас вам будет интересно узнать про ввод в C++. Выглядит он следующим образом:
int number;
cin >> number;
Обратите внимание, что стрелочки направлены в другую сторону, нежели при выводе.
Если вводится два числа подряд, можно сделать так:
int number1, number2;
cin >> number1 >> number2;
Итак, мы уже знаем как использовать IDE, умеем делать ввод и вывод, и уже знаем, что такое типы данных. Пора решать задачи? Возможно. Вот задачка от автора, отправляем решение на email внизу страницы.
Дано целое число \(n\). Решить уравнение \(x = n\) отностительно \(x\). Пример ввода: 10 Пример вывода: 10
Думаю эта задача оказалась вам по силам. Но что дальше? Нам не хватает одной важной вещи - арифметики. Сейчас мы про неё узнаем и тогда точно сможем пройти на финал ICPC!
Арифметика С++
В общих чертах, арифметика C++ мало чем отличается от обычной, математической арифметики. Рассмотрим следующий код:
int main()
{
int a,b;
cin >> a >> b;
cout << a + b << endl; // вывод суммы двух чисел
cout << a - b << endl; // вывод разности двух чисел
cout << a * b << endl; // вывод произведение двух чисел
cout << a / b << endl; // вывод частного двух чисел.
cout << a % b << endl; // вывод остатка от деления a на b,
// например 5 % 3 = 2, а 10 % 2 = 0, так как делится нацело
return 0;
}
Особое внимание хотелось бы уделить операции деления. Она - целочисленная, как div в Паскале. Чтобы получить настоящее частное двух чисел, используйте тип с плавающей точкой (float, double и т.д).
int main()
{
double a = 5.0, b = 2.0;
cout << a / b; // вывод - 2,5
return 0;
}
Инкремент и декремент
Иногда в целях экономии времени строчку вида
i = i + 1;
Заменяют на эквивалентную операцию:
i++;
Эта операция называется инкрементом. Аналогично можно представить операцию декремента:
i = i - 1;
i--; // декремент
Стоит отметить, что у операций инкремента и декремента сущиствует префиксная и постфиксная форма записи:
i++; i--; // постфиксная
++i; --i; // префиксная
Существуют и другие сокращения:
i = i + 3;// можно заменить на
i += 3; // вместо сложения может использоваться любая другая допустимая операция
Таким образом, мы узнали, что такое тип данных, вывод, и арифметика C++. Все, мы уже можем ехать на финал ICPC? Рано, однако решить задачу 1000 с Timus вы вполне способны решить! Вперед решать!
Форматированный вывод
Если мы хотим выводить ответ с наперед заданной точностью (актуально для чисел с плавающей запятой), то нам могут помочь вот эти две строки:
cout.precision(n);
cout.setf(ios::fixed);
где n - количество знаков после запятой. Для простоты скажем, что precision и setf - особые функции для работы с cout.
Например, мы хотим вывести число пи с точностью до трех знаков после запятой. Тогда мы можем написать что-то вроде:
const double pi = 3.14156;
cout.precision(3);
cout.setf(ios::fixed);
cout << pi;