Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторная1.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Создание простейшей программы.

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

Технология работы.

Входные данные a и b могут быть как целыми, так и дробными. Результатом работы программы являются переменные x и y, представляющие собой действительные числа. Поэтому предпочтительнее объявить все эти переменные одним из вещественных типов (float или double). Можно объявить все переменные одновременно в начале блока, но допустимо объявить только входные переменные, а выходные объявлять при вычислении (объявление с инициализацией). В программах небольшого размера особой разницы нет, но при создании больших программ удобнее объявлять переменные по мере необходимости.

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

#include <iostream>

а также использования стандартного пространства имён

using namespace std;

Тогда ввод данных может производиться с использованием операции ввода из потока cin>>, а вывод будет происходить в поток с использованием операции cout<<. Для удобства работы с программой перед тем, как вводить значение переменной, следует вывести на экран строковую константу (несколько подряд идущих символов, размещённых внутри кавычек, кавычки при этом в константу не входят и на экран не выводятся), поясняющую, какие переменные и в каком порядке должны быть введены. Можно вводить обе переменные сразу, разделяя их при этом пробелом и нажав <ENTER> в конце

cout<<"Enter a b:"; cin>>a>>b;

но вероятность ошибок при вводе снизится, если переменные вводить по одной:

cout<<"Enter a:"; cin>>a;

cout<<"Enter b:"; cin>>b;

При вычислении арифметических выражений следует обратить внимание на порядок действий и на то, что в математике знак умножения не является обязательным, а дробная черта означает деление. Пара символов ab, которой в математике обозначают произведение двух переменных, в языках программирования образует новый идентификатор, и транслятор сообщит об ошибке «необъявленная переменная». Правильная запись произведения выглядит как a*b. Комбинация символов 2,5а, которая в математике также означает умножение, не является таковой в программировании, и для вычисления этого произведения следует написать 2.5*а, обозначив умножение астериском, десятичную запятую – точкой. Для соблюдения правильного порядка действий необходимо заключить в скобки выражения, вычисляющие значения числителя и знаменателя для переменной :

x=(2.5*a+b)/((a-3)*(b+1.0/7));

Иначе, например, при такой записи:

x=2.5*a+b/(a-3)*(b+1.0/7);

в ячейку x попадёт значение совсем другого выражения: , поскольку значение выражения вычисляется слева направо и умножение (деление) имеет более высокий приоритет, чем сложение (вычитание).

Внимание!

В выражении для вычисления значения дроби 1/7 (и любых других, где происходит деление двух целочисленных констант) необходимо одну из них записать как вещественную константу 1.0, иначе происходит деление нацело и результатом будет не вещественное число 0.142857, а целое число 0

Переменная может быть подсчитана, например, так:

y=x*x*x/a/a-1.0/3*a*b;

или так:

y=x*x*x/a/a-a*b/3;

После получения результатов их необходимо вывести на экран. Пустой строки можно добиться несколькими способами:

cout<<endl;

или

cout<<'\n';

но, поскольку нам ещё необходимо вывести строковую константу, наберём следующую строку:

cout<<"\n*************************\n";

Эта команда сначала переведёт курсор на новую строку в результате воздействия так называемой escape-последовательности \n, стоящей после открывающей кавычки, затем выведет на экран строковую константу *************************, после чего курсор снова будет переведён на новую строку (вторая escape-последовательность, перед закрывающей кавычкой).

Escape-последовательность (иначе – управляющая последовательность) начинается с обратной косой черты (бэкслэша), предназначена для кодов, не имеющих графического представления и специальных символов, например:

\a – звуковой сигнал;

\n – перевод курсора в начало новой строки;

\t – горизонтальная табуляция;

\b – возврат на одну позицию влево;

\\ – бэкслэш;

\" – кавычка;

\' – апостроф;

а также ряд других. Escape-последовательность считается одним символом и может быть заключена как в апострофы (отдельно расположенный символ), так и в кавычки (строка, состоящая из нескольких символов, или из одного символа).

Выходные данные можно вывести в том же операторе:

cout<<"\n*************************\nx="<<x<<" y="<<y<<endl;

а можно отдельным оператором:

cout<<"\n*************************\n";

cout<<"x="<<x<<" y="<<y<<endl;

результат будет одинаков.

Внимание!

Если в операторе cout должны быть выведены несколько величин (строковые константы "x=", и " y=", переменные x и y, а также манипулятор endl, то перед каждым из них должны располагаться операции помещения в поток << .

Точно так же при вводе – перед именем каждой переменной необходимо расположить операцию чтения из потока >>

Примерный текст программы:

#include <iostream> //подключение заголовочных файлов

using namespace std; //стандартное пространство имён

/*============================================================

это многострочный комментарий, в данной программе используется

для отделения директив препроцессора от главной функции

============================================================*/

int main() //главная функция

{

float a, b; //входные переменные, вещественные

cout<<"Vvedite a: "; cin>>a; //ввод а

cout<<"Vvedite b: "; cin>>b; //ввод b

float x=(2.5*a+b)/((a-3)*(b+1.0/7)); //вычисление х

float y=x*x*x/a/a-a*b/3; //вычисление у

cout<<"\n*****************************\n";

cout<<"x="<<x<<" y="<<y<<endl; //вывод результатов

system("pause"); //задержка консоли

return 0;

}

Результат выполнения

Результат выполнения программы с ошибкой в записи дробей 1/7 и 1/3