Первым шагом алгоритма должен быть ввод координат точки: x и y. Для большего удобства при анализе результатов можно вывести введенные значения на экран. Исследование изображения на рисунке-задании дает основание утверждать, что целевая область образуется пересечением: прямой с коэффициентом –1 и смещением +1 и окружности с центром в начале координат и радиусом 1, как показано на рисунке справа · Уравнение этой прямой: y= – x+1; · Уравнение окружности: x2+y2=1; |
Для проверки попадания точки в заданную область нужно проверить условия того, что:
1) Точка лежит выше прямой или на ней, т.е.: y>= – x+1
2) Точка лежит внутри окружности или на ней, т.е.: x2+y2<=1
Точка лежит в области, если выполняются оба условия, если же не выполняется хотя бы одно из них, точка лежит вне области. Следовательно, эти условия должны быть объединены логической операцией "И".
Схема алгоритма приведена на рисунке 2.3.
Рисунок 2.3 — Блок-схема алгоритма решения задачи
Определение переменных программы
Для реализации алгоритма будут нужны только переменные для хранения значений координат x и y. В условиях задания не приведены требования к точности вычислений, рисунок представлен с довольно невысокой точностью, поэтому для этих переменных было бы достаточно типа float. Но в соответствии с общим стилем программирования на C выберем для них тип double.
Разработка текста программы
Текст программы начинается с включения файла:
#include <stdio.h>
т.к. обязательно понадобятся функции стандартного ввода-вывода.
Далее идет заголовок и открытие главной функции:
int main(void) {
и объявление переменных, определенных в пункте 2.
double x, y;
Для каждой координаты выводится приглашение на ее ввод и вводится ее значение:
printf("Введите координату x >");
scanf("%lf",&x);
printf("Введите координату y >");
scanf("%lf",&y);
Введенные значения координат выводятся на экран:
printf("x=%6.3lf; y=%6.3lf\n",x,y);
Далее идет проверка условий попадания точки в область. Оба условия проверяются одним выражением. Поскольку точка попадает в область, если выполняются оба условия вместе, условия в выражении соединены операцией "логическое И":
if ( (y>=1–x)&& (x*x+y*y<=1) )
Если значение логического выражения в условном операторе истинно, то выводится сообщение о попадании:
printf("Точка попадает в область\n");
В противном случае выводится сообщение о не попадании:
else printf("Точка не попадает в область \n");
Полный текст программы приведен ниже.
#include <stdio.h>
int main(void)
{ double x, y; /* координаты точки */
printf("Введите координату x >"); /* ввод координат */
scanf("%lf",&x);
printf("Введите координату y >");
scanf("%lf",&y);
/* вывод только что введеных значений */
printf("x=%6.3lf; y=%6.3lf\n",x,y);
/* проверка условий */
if ( (y>=1–x) && (x*x+y*y<=1) )
printf("Точка попадает в область\n");
else printf("Точка не попадает в область\n");
return 0; }.
Отладка программы
Самое важное в отладке этой программы — убедиться в том, что программа выдает правильные результаты при разных комбинациях входных данных. Следовательно, необходимо подобрать такие комбинации, которые были бы показательными для разных случаев размещения точки. предлагаем такие комбинации:
1) точка лежит ниже области | (0.4, 0.4); |
2) точка лежит на нижней границе области | (0.5, 0.5); |
3) точка лежит в середине области | (0.7, 0.6); |
4) точка лежит на верхней границе области | (0.707, 0.707); |
5) точка лежит выше области | (0.8, 0.8); |
6) точка лежит на правом крае области | (1.0, 0.0); |
7) точка лежит на левом крае области | (0.0, 1.0). |
ЛАБОРАТОРНАЯ РАБОТА №7
Операторы цикла в языке C
Цель работы : получение практических навыков в работе с операторами цикла языка C.
Темы для предварительной проработки
· Операторы цикла языка С
· Условный оператор
Задание: Изобразите блок-схему алгоритма и напишите программу на языке Си. В алгоритме и программе массивы не использовать!!!!!!!!!!!!!!! Предусмотрите ввод исходных данных с клавиатуры.
Номер варианта устанавливается преподавателем, который проводит руководство лабораторными занятиями (см. таблицы, распределенные в группах лектором, относящиеся к общим рекомендациям соответственно). Данные для вариантов представлены в таблице 2.9.
Таблица 2.9 — Варианты индивидуальных заданий
Вариант | Задания |
1 | В последовательности из N произвольных чисел определить сумму положительных элементов, если сумма цифр элемента кратна трём. |
2 | Определить сколько раз последовательность из N произвольных чисел меняет знак. Совет. Произведение двух чисел с разными знаками — отрицательное число. |
3 | Определить является ли число L совершенным. Совершенное число L равно сумме всех своих делителей, не превосходящих L. Например, 6=1+2+3 или 28=1+2+4+7+14. |
4 | В последовательности из N произвольных чисел подсчитать количество нулей и определить сумму элементов, размещенных между первым и вторым нулями. |
5 | В последовательности из N натуральных чисел определить количество простых чисел. |
6 | Дано натуральное число Р. Определить количество чётных цифр в нем. |
7 | Вводится последовательность ненулевых чисел, 0 — конец последовательности. Определить сумму простых чисел. |
8 | Определить количество простых делителей натурального числа М. |
9 | Вводится последовательность ненулевых чисел, 0 — конец последовательности. Определить, содержит ли последовательность хотя бы два соседних числа з одинаковыми знаками. Совет. Произведение двух чисел з одинаковыми знаками — положительное число. |
10 | Дано натуральное число Р. Определить сумму цифр чётных разрядов числа. |
11 | Вводится последовательность ненулевых чисел, 0 — конец последовательности. Определить разницу между максимальным и минимальным числом в последовательности, которые являются простыми числами. |
Таблица 2.9 — Варианты индивидуальных заданий
Вариант | Задания |
12 | В последовательности из N произвольных чисел найти номер первого отрицательного элемента последовательности, сумма цифр которого является четным числом. |
13 | Дано натуральное число Р. Определить, больше ли сумма чётных цифр этого числа чем заданное произвольное значение M. |
14 | В последовательности из N произвольных чисел определить, сколько членов последовательности превышают по модулю заданное число M. |
15 | В последовательности из N произвольных чисел подсчитать произведение простых чисел, которые не превышают число M. |
16 | Дано натуральное число Р. Определить, является ли сумма его цифр простым числом. |
17 | Вводится последовательность ненулевых чисел, 0 — конец последовательности. Определить два наибольших числа в последовательности. |
18 | Дано натуральное число Р. Определить все простые числа, не превышающие Р. |
19 | В последовательности з N произвольных чисел найти пары соседних элементов с суммою, которая по модулю равна заданному числу M. |
20 | Вводится последовательность ненулевых чисел, 0 — конец последовательности. Определить является ли последовательность строго убывающей. |
21 | Найти количество трёхзначных чисел, сумма цифр которых равна M, а само число оканчивается цифрой N. |
22 | Вводится последовательность ненулевых чисел, 0 — конец последовательности. Определить является ли последовательность строго возрастающей. |
23 | Вычислить сумму отрицательных элементов последовательности из N произвольных чисел, если первая и последняя цифра элемента одинаковы. |
24 | Дано натуральное число Р. Определить количество нечётных цифр в нём. |
25 | В последовательности из N произвольных чисел найти сумму всех положительных чисел, превышающих заданное произвольное значение M. |
26 | В последовательности из N произвольных чисел найти номера тих элементов, значения которых кратны 3 и не превышают заданное произвольно значение M. При отсутствии вывести соответствующее сообщение. |
27 | Дано натуральное число Р. Определить является ли оно симметричным. |
28 | Вводится последовательность ненулевых чисел, 0 — конец последовательности. Найти сумму всех положительных чисел, количество отрицательных чисел. |
Таблица 2.9 — Варианты индивидуальных заданий
Вариант | Задания |
29 | В последовательности из N произвольных чисел определить сумму наибольшего и наименьшего элементов, которые являются двузначными симметричными числами. |
30 | Дано натуральное число Р. Определить, встречается ли заданная цифра M больше чем 2раза. |
31 | Вводится последовательность ненулевых чисел, 0 — конец последовательности. Вычислить сумму натуральных чётных чисел, не превышающих заданное произвольное значение M. |
32 | Вводится последовательность ненулевых чисел, 0 — конец последовательности. Вычислить сумму чисел, не превышающих M и не являющихся простыми. |
33 | Вводится последовательность ненулевых чисел, 0 — конец последовательности. Вычислить сумму натуральных нечётных чисел, не превышающих заданное произвольное значение M. |
34 | Дано натуральное число Р. Определить, равна ли сумма цифр этого числа заданному произвольному значению M. |
35 | Вводится последовательность из М элементов. Каждый элемент последовательности — цифра, т.е. находится в диапазоне от 0 до 9. Сформировать число N, считая, что первый элемент последовательности является младшим разрядом. Например, дана последовательность 5, 4, 3, 2, 1, тогда десятичное число формируется следующим образом: 5+4 10+3 100+2 1000+1 10000=12345. |
36 | Вводится последовательность ненулевых чисел, 0 — конец последовательности. Определить наименьшее положительное число, являющееся также простым. |
37 | Дано натуральное число Р. Определить количество цифр данного числа, превышающих M. |
38 | Вводится последовательность ненулевых чисел,0— конец последовательности. Вычислить сумму простых чисел, не превышающих заданное произвольное значение M. |
39 | В последовательности из N произвольных чисел определить количество пар элементов последовательности, имеющих одинаковые знаки. |
40 | Дано натуральное число Р. Перевернуть число в обратном направлении. |
41 | Дано натуральное число Р. Посчитать сумму цифр числа. |
Методические указания
Пример решения задачи
Для ряда, члены которого вычисляются по формуле
подсчитать сумму членов ряда с точностью до 0.000001 и сумму первых 10 членов ряда.
Дата: 2019-02-02, просмотров: 436.