Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Алгоритмы с разветвлениями




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

Задание: составить программу для вычисления n значений функции (3).

sin3 (x), х ≤ – π,

f(x) = 1 + cos(x), – π < x < π, (3)

x – π, x ≥ π

/* Программа 5.1 вычисляет значения функции (3) для n вводимых с клавиатуры значений х. ТЕСТ: n = 3, x1 = –7∙π/6, y1 = 0,125;
x2 = π/2, y2 = 1; x3 = 2∙π, y3 = π = 3,1415… */

#include <stdio.h>

#include <math.h>

main()

{ float x, fx;

int i, n;

< Вывод шапки результатов программы, см. программу 1 или 2 >

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

scanf("%d", &n);

printf("\n Введите %d значений x: ", n);

for (i = 0; i < n; i++)

{ scanf("%f", &x);

if (x <= – M_PI)

fx = pow(sin(x), 3);

else if ((x > – M_PI) && (x < M_PI))

fx = 1 + cos(x);

else fx = x – M_PI;

printf("\n x = %10.3f f(x) = %15.3f ", x, fx);

}

/* Программа 5.2 позволяет определить, попадает ли точка Z с координатами
(xz, yz) в кольцо, образованное двумя окружностями с радиусами r1 и r2

и с центром (xc, yc). ТЕСТЫ: r1=1, r2=2, xc=1, yc=1,
а) xz=2, yz=1.5 – “ попадает ”;

b) xz=1, yz=1.5 – “ не попадает ”;

*/

#include <stdio.h>

#include <math.h>

main()

{ float r1, r2, xz, yz, xc, yc, p;

int bl; // или bool bl;

< Вывод шапки программы, см. программу 1 или 2 >

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

scanf("%e%e%e%e%e%e", &r1, &r2, &xc, &yc, &xz, &yz);

// Расстояние от точки до центра кольца:

p = sqrt(pow(xz-xc, 2) + pow(yz-yc, 2));

printf(" Точка Z(%.3f, %.3f) ", xz, yz);

bl = (r1 <= p) && (r2 >= p) || (r2 <= p) && (r1 >= p);

// bl имеет логическое значение 0 (ложь) или 1 (истина)

if (bl)

printf(" попадает ");

else

printf(" не попадает ");

printf(" в кольцо с радиусами r1 = %.3f и r2 = %.3f ", r1, r2);

printf("\n и с центром (%.3f, %.3f) \n ", xc, yc);

}

/* Программа 5.3 – модификация программы 5.1 – демонстрирует применение оператора множественного выбора switch: вычисление n значений одной из функций в (3), указанной целым числом k (1, 2, 3), соответствующим порядковому номеру функции в выражении (3). */

#include <stdio.h>

#include <stdlib.h> // функция завершения выполнения программы exit(s)

#include <math.h>

main()

{ float x, fx, k;

int i, n;

< Вывод шапки результатов программы, см. программу 1 или 2 >

printf("\n Введите n и номер функции k (1, 2 или 3): ");

scanf("%d%d ", &n, &k);

printf("\n Введите %d значений x: ", n);

for (i = 0; i < n; i++)

{ scanf("%f", &x);

switch (k)

{ case 1: fx = pow(sin(x), 3); break;

case 2: fx = 1 + cos(x); break;

case 3: fx = x – M_PI; break;

default: { printf("\n Номер функции 1, 2 или 3 "); exit(0); }

}

printf("\n x = %10.3f f(x) = %15.3f ", x, fx);

} // Конец блока цикла for

} // Окончание программы 5.3

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

1. Как выбираются тестовые данные для алгоритмов и программ с разветвлениями вычислительного процесса?

2. Как записать в программе 5.1 оператор if, не используя else? Какой вариант программы «if - else» или «if» лучше и почему?

3. Как будут располагаться на экране результаты программы 5.1?

4. Модифицируйте программу 5.2 для обработки данных n точек.

5. Как изменится логическое выражение “bl = … ”в программе 5.2, если область фигуры ограничить левой половиной кольца и не учитывать точки, лежащие в третьем квадранте плоскости?

6. Как в программе 5.3 прервать цикл for при неправильном вводе k?

7. Составьте тесты для программы 5.3.





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 610 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Студент всегда отчаянный романтик! Хоть может сдать на двойку романтизм. © Эдуард А. Асадов
==> читать все изречения...

2466 - | 2202 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.