В программировании очень большое внимание уделяется вычислениям. Постоянно надо что-то считать.
Для арифметических вычислений в C++ преимущественно используется пять операций:
Сложение
+
Вычитание
—
Деление
/
Умножение
*
Взятие остатка
%
В C++, как правило, простая арифметика начинающим дается легко.
Пример простой программы, выполняющей одно арифметическое действие: сложение двух чисел.
C++
1
2
3
4
5
6
7
8
9
//код Borland C++ 3.1, сложение, листинг #1
#include <conio.h>
#include <iostream.h>
intmain()
{
clrscr();//Очищаем экран
cout<<10+20;
}
Программа работает следующим образом:
Сначала выполняется очистка экрана. Очищает экран функция clrscr. Как работает эта функция знать нам сейчас необязательно. Программисты её написали, а мы можем использовать, вот и используем. Достаточно знать, что эта функция в Borland C++ 3.1 очищает экран, в современных компиляторах этой функции нет.
После очистки экрана программа складывает два числа: 5+10
В Borland C++ 3.1 программа компилируется с помощью сочетания клавиш Alt+F9, нажать на клавиатуре Enter. А посмотреть результат можно с помощью сочетания клавиш Alt+F5. Можно использовать меню: Run -> Run, но меню иногда глючное, поэтому лучше сочетанием клавиш.
Результатом работы программы будет вывод на экран числа 30, поскольку 20+10 = 30
В школе, когда нас учили считать, очень много внимания уделялось четырём арифметическим действиям: сложение, вычитание, умножение и деление. Каждое из этих действий имеет своё обозначение: +, —, * и /
Кроме обозначенных действий, существует много других, каждому из которых соответствует какой-то символ: %,√ — и другие, символы эти мы знаем.
В программировании на C++ часто необходимо взятие остатка. Для взятия остатка в C++ используется символ %. Это может быть неожиданным для новичков, ведь этот символ — общеприменимый символ процента. Но вот решили разработчики C++ использовать для взятия остатка именно этот символ, поэтому придётся привыкнуть, это несложно. Для некоторых операций в C++ не существует своего символа (взятие квадратного корня, процент, факториал и для многих других). Для наиболее востребованных операций существуют готовые функции, которые мы можем использовать, но если функции для какой-то операции нет, то надо писать свою функцию.
Арифметическое деление в C++ заслуживает отдельного внимания. Когда мы делим числа, которые нацело не делятся, остается остаток:
В языке C++ существует специальный оператор — операция взятия остатка
Из-за некоторых особенностей самого языка, при делении чисел могут происходить необычные для программистов-новичков вещи. Для примера приведу код самого обычного деления числа.
C++
1
2
3
4
5
6
//Borland C++ 3.1, деление, листинг #2
#include <iostream.h>
intmain(){
cout<<20/11;//Деление 20/11
}
При работе такой программы на экран выведется только целая часть числа, которая получается при делении:
20/20 = 1
Это обычно удивляет новичков: во-первых, непривычно, а во-вторых из-за этого случается головная боль, ведь коды, которые, казалось бы верные, ведут к неправильным подсчётам.
Почему так происходит вам пока знать рано, но нужно запомнить, что при делении, если деление нужно привычное, хотя бы одно из чисел должно иметь тип числа с плавающей точкой: float, double.
Смотрим на листинг #2. Помните, что я недавно писал о существовании операции взятия остатка, понимаете, что это а остаток такой? Я старался всё опиать подробно, поэтому очень надеюсь, что с этим вопросов не возникает. Вспоминаем символ операции взятия остатка в C++, это %, следовательно в любом компиляторе C++ можно взять остаток от деления, использовав символ процентов. 20/11 == 1 (в остатке 9).
Выводим остаток на экран:
C++
1
2
3
4
5
6
7
8
9
10
//Borland C++ 3.1, деление, листинг #4
#include <iostream.h>
#include <conio.h>
intmain(){
clrscr();//Очистка экрана
cout<<20%11;//Взятие остатка, 9
cin.get();//чтобы программа не завершалась сразу
}
Результатом работы программы будет вывод на экран числа 9
В C++ для взятия остатка используется символ-процент: %
Ранее упоминалось, что для привычного деления нужно, чтобы хотя бы одно число из участвующих в делении имело тип число с плавающей точкой. Если и делитель, и знаментатель целые, то можно использовать насильственное приведение типов:
Для вывода на экран числа с запятой можно использовать такой код:
C++
1
2
3
4
5
6
7
8
9
//Borland C++ 3.1, деление, листинг #5
#include <conio.h>
#include <iostream.h>
intmain()
{
clrscr();
cout<<double(20)/double(11);// (20/11) = 1,81882
cin.get();
}
Результатом будет вывод на экран числа 1.818182 double – это тип переменной, который обозначает, что число не целое. Таких типов, которые обозначают нецелые числа, три: floatdoublelong double.
Указание в скобках типа непосредственно перед некоторым значением не меняет тип самого значения, но вычисления происходят так, как будто бы значение имеет тип, указанный внутри приставочных скобок
Вывод на экран в разных вариантах:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//Borland C++ 3.1, деление, листинг #6
#include <conio.h>
#include <iostream.h>
intmain()
{
clrscr();
cout<<"Celaya chast ot delenia = "<<20/11;
cout<<"\n";//Перевод курсора на новую строчку
cout<<"Ostatok = "<<20%11;//Получили остаток
cout<<"\n";
cout<<"Resultat"<<double(20)/double(11)<<"\n";//Получили число с запятой
cout<<"Resultat"<<20./11;//Получили число с запятой
cin.get();
//prostite za translit, no angliiskiy poka izvesten ne wsem moim chitatel'am :-)
}
Обратите внимание на 14 строчку в личтинге #6, после числа стоит точка, такая запись обозначает, что тип у числа — число с плавающей точкой, и что после точки нули. Этот приём иногда используется, чтобы сразу сделать число нецелым.
Возможные ошибки
!
Названия типов путаются с названиями переменных
Неправильное деление: делят целое на целое, ожидают не целое. При делении хотя бы одно число должно быть нецелым. Если все числа целые по некоторым особым соображениям, то для получения нецелого результата хотя бы одно число надо привести к типу "число с плавающей точкой"
Забывают о том, что на ноль делить нельзя и не делают проверок
Не знают или забывают, что арифметические типы ограничены в размерах: результат вычисления может оказаться за пределами ёмкости типа
Задание
?
Напишите простой калькулятор. Пользователь вводит два числа, на экран надо вывести результат сложения, вычитания, деления, умножения и остаток от деления. Для взятия остатка от деления приведите оба числа к типу int.
Народ, помогите решить задачу.
Условие : Группа студентов от 5 до 15 человек приходит сдавать экзамены в количестве от 6 до 10 штук.
За каждый экзамен студент может получить от 5 до 10 баллов.
Вопрос: Найти средний балл группы студентов за сессию ?
Народ, помогите решить задачу.
Условие : Группа студентов от 5 до 15 человек приходит сдавать экзамены в количестве от 6 до 10 штук.
За каждый экзамен студент может получить от 5 до 10 баллов.
Вопрос: Найти средний балл группы студентов за сессию ?
Народ, помогите решить задачу:
Условие:
Группа студентов от 5 до 15 человек
сдает серию экзаменов от 6 до 10 штук.
За каждый экзамен студент получает оценку от 5 до 15 баллов.
Задача:
Найти средний балл группы за каждый экзамен.