Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование в среде ВС++.doc
Скачиваний:
10
Добавлен:
09.11.2018
Размер:
3.52 Mб
Скачать

1. Вычисление площади и периметра геометрической фигуры

Цель: выработка умений составления, отладки и тестирования программ линейной структуры и оформления отчетов лабораторного практикума по программированию.

Задание: определить площадь кольца s и расстояние r от начала координат до центра кольца, образованного двумя окружностями с радиусами r1 и r2 и с центром в точке (xc, yc). Вывести данные задачи на экран в формате с фиксированной точкой с 3 знаками после точки.

Пример отчёта по данному заданию приведён в приложении 2.1.

/* Программа 1

ТЕСТ: r1=1.0, r2=2.0, xc=3.0, yc=4.0, s=9.424, r=5.0

*/

#include <stdio.h> /* заголовочный файл (текстовый), содержит описания прототипов используемых в программе функций scanf() и printf(), осуществляющих форматированный ввод и вывод на консоль, – это комментарий */

#include <math.h> //прототипы математических функций, константы,

void main() // главная функция Си-программы

//это однострочный комментарий

{ float r1, r2, xc, yc, s, r, x, z;

printf("\n\n\t *** РАБОТА 1 ***"); // \t – символ табуляции

// \n – символ перехода на другую строку

printf("\n Выполнил: Иванов П.С., группа У-11, вариант 13 \n");

printf(" Введите r1, r2, xc, yc:\t ");

scanf("%f%f%f%f ", &r1, &r2, &xc, &yc); // & - операция взятия адреса:

// при форматированном вводе в С указывается адрес переменной

printf(" Исходные данные: \n r1=%.3f r2=%.3f xc=%.3f yc=%.3f \n",

r1, r2, xc, yc); // Контролируем ввод исходных данных (для чего?):

s = M_PI*(r2*r2 - r1*r1); // M_PI - константа π = 3.1415...

r = sqrt(xc*xc + yc*yc);

printf(" Результаты: s=%.3f r=%.3f \n", s, r);

} // %.3f – спецификация формата: вывод вещественного числа // типа float с 3 знаками после точки

Результаты работы программы на экране монитора:

*** РАБОТА 1***

Выполнил: Иванов П.С., группа У-12, вариант 13

Введите r1, r2, xc, yc: 1 2 3 4

Исходные данные:

r1=1.000 r2=2.000 xc=3.000 yc=4.000

Результаты: s=9.424 r=5.000

Вопросы и упражнения:

  1. Какие данные содержатся в заголовочных файлах?

  2. Как в программе указываются комментарии и их назначение?

  3. Можно ли объявить переменные в конце программы?

  4. Поясните назначение каждого элемента в строке ввода данных scanf … .

  5. Поясните последовательность операций при вычислении s.

  6. Дано действительное число a. Как вычислить а7 с использованием операций умножения и присваивания за четыре операции умножения, а64 – за шесть операций умножения?

2. Вычисления по формулам с вещественными числами

Цель: выработка умений программирования арифметических выражений с вещественными переменными и константами и использования библиотечных функций языка С, закрепление умений отладки и тестирования программ линейной структуры и составления отчета по разработанной программе.

З адание: составить программу для вычисления значения арифметического выражения (1). Значение х вводит пользователь программы. Вывод результатов на печать выполнить в экспоненциальной форме с числом знаков после точки, равным числу знаков в исходных данных. Определить порядок выполнения операций в арифметическом выражении программы.

/* Программа 2

ТЕСТ: x = sqrt(2) = 1.4142, z = 0.2000 */

#include <stdio.h>

#include <math.h>

void main()

{ double x, z;

printf("\n\n\t *** РАБОТА 2 *** \n");

printf("Выполнил: Иванов П.С., группа У-11, вариант 13 \n");

printf("Введите x:\t ");

scanf("%le", &x); // Для чего указан символ & ?

printf("Исходные данные: x=%.4le \n", x);

z = (2.0 - exp(1.- x*x/2.)) / (3. + sqrt(sqrt(2.) * pow(x,3)));

printf("Результат: z=%.4le \n", z); // в экспоненциальной форме

} // с 4 знаками в числе z после точки

Порядок выполнения операций при вычислении выражения:

(2.0 – exp(1. – x * x / 2.)) / (3. + sqrt(sqrt(2.) * x * 3))

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

5 4 3 1 2 12 11 10 6 7 9 8

Операция 8 – преобразование константы 3 типа int в константу 3.0 типа double.

Вопросы и упражнения:

  1. Как вычислить выражение y = logab, в котором а>0, b>0 ?

  2. Модифицируйте программу для вычисления выражения (1), в знаменателе которого вычисляется корень k-ой степени из 2.

  3. Определите область допустимых значений переменной х для вычисления выражения (1). Можно ли вычислить выражение для х = –1?

  4. Сравните количество верных знаков в числах типа float и double. Для этого вычислите значение y = 1.0 / 3.0 и выведите результаты на экран оператором printf(“\n float = %.20f double = %.20lf ”, yfl, ydb);