- •Программирование на языке си
- •Ввод-вывод в языке си. Структура программы
- •Порядок выполнения лабораторных работ
- •Основы программирования в среде языка си. Оператор присваивания
- •Приоритет операций в выражении
- •Задание 1 (программа 1_1)
- •Программирование разветвленных алгоритмов. Операторы передачи управления
- •Программирование циклических алгоритмов с заданным числом повторений
- •Программирование циклических алгоритмов с предусловием
- •Программирование циклических алгоритмов с постусловием
- •Модифицировать программу 3_2 для вычисления функций f1(X) и f2 (X) с применением оператора цикла с постусловием. Выполнить ее и сравнить результаты с полученными ранее.
- •Программирование алгоритмов обработки одномерных массивов
- •Задание 1
- •Обработка двумерных массивов
- •Программирование с применением функций
- •[Класс] тип имя ([список параметров])[throw (исключения)] {тело функции}
- •Return [выражение];
- •Программирование с возвратом из функций нескольких значений
- •Лабораторная работа 10 Обработка символьных и строковых данных
- •Структуры
- •Модульное программирование
- •Динамические структуры данных. Списки
- •Задание 1 (программа 14_1)
- •Графика
- •Задание к расчетно-графической работе
- •Библиографический список
- •Типы данных
- •Обозначения графические в схемах алгоритмов (гост 19.701-90)
- •Сообщения об ошибках Сообщения об ошибках периода компиляции
- •Ошибки стадии выполнения
- •Математические ошибки
- •Функции ввода-вывода для стандартных потоков
- •Функции для работы со строками
- •Библиотека заголовочных файлов
- •Контейнерные классы
Программирование разветвленных алгоритмов. Операторы передачи управления
Структура условного оператора передачи управления:
if (<выражение>) <оператор 1> else <оператор 2>;
(Если) (иначе) - ключевые слова,
где <условие> - это произвольное выражение логического типа, которое может принимать два значения: истина (TRUE) и ложь (FALSE);
<оператор> - любой оператор языка СИ, заканчивается точкой с запятой.
Сокращенная форма условного оператора:
if (<выражение>) <оператор>;
Оператор безусловного перехода: goto <идентификатор-метка>;
Меткой является идентификатор. Метка размещается перед оператором С/С++, к которому выполняется переход и отделяется двоеточием (:).
Пример 1. Составить программу для начисления базовой зарплаты согласно следующему правилу: если стаж работы сотрудника менее трех лет, то зарплата равна 100$, при стаже работы от трех до 5 лет - 150$, свыше 5 лет зарплата повышается с каждым годом на 10$, причем при стаже, превышающем 20 лет, она составляет 300$.
Для программирования решения этой задачи определим математическую формулировку задачи:
100, если ST < 3;
ZP= 150, если 3 ≤ ST 5;
150+ (ST -5)*10, если 5 < ST≤ 20;
300, если ST > 20;
где ZP - зарплата, ST – стаж работы. Далее построим СА (рис.2 а), ей соответствует следующая программа:
#include <stdio.h>
#include <conio.h>
void main ()
{ int ST; //ST– стаж (байтовый (целый) тип беззнаковый)
float ZP; //ZP– зарплата (плавающий тип)
printf ("\n Введите стаж ");
scanf ("%d",&ST);
if (ST<3) ZP = 100;
else if (ST<5) ZP = 150;
else if (ST>=20) ZP=300;
else ZP=150+(ST- 5)*10;
printf ("\n Зарплата = %10.2f$\n",ZP);
getch();
}
Оператор выбора switch позволяет в зависимости от значения какой-либо переменной или выражения (ключа выбора) выполнить те или иные операторы, помеченные соответствующими константами.
Структура оператора:
switch (<выражение> )
{
case <константа 1>: <группа операторов 1>;
case <константа 2>: <группа операторов 2>;
. . .
case <константа N>: <группа операторов N>
default: <операторы>;
}
где <выражение> – выражение (переменная) любого порядкового типа;
<константа> – константа того же типа, что и <выражение>;
<оператор> – произвольный оператор C/C++.
Пример 2. Напечатать в зависимости от числа углов название фигуры (треугольник, четырехугольник, пятиугольник, шестиугольник, многоугольник).
Вариант реализации задачи с применением оператора выбора представлен СА (рис. 2б) и следующей программой:
#include <stdio.h>
#include <conio.h>
void main ()
{
int T; // T – число углов
clrscr(); // очистка экрана
printf ("Введите число углов ");
scanf ("%d",&T);
switch (T)
{
case 1: case 2 : printf ("Это не фигура\n "); break;
case 3: printf ("С %d углами - треугольник\n ", T); break;
case 4: printf ("С %d углами - четырехугольник\n ", T); break;
case 5 : printf ("С %d углами - пятиугольник\n ", T ); break;
case 6: printf ("С %d углами - шестиугольник\n ", T ); break;
default : printf ("С %d углами - многоугольник\n ", T );
}
getch();
}
Задание 1 (программа 2_1)
Вычислить значение функции в зависимости от интервала, в который попадает вводимый с клавиатуры аргумент:
1. Дляt[0,3], a t2 ln t при
где a=-0.5,b=2 z = 1 при t<1,
e a t cos b t при t>2,
2. Для x[0,4], при x2,
где а=2.3 f = х при 0.3< x 2,
cos(x-a) при x≤0.3,
3.Для x[0,7], (a+b)/(ex+cosx) при 0 x2.3,
где a=-2.7,b=-0.27 z = (a+b)/(x+1) при 2.3 x5,
ex+sinx при ,
4.Для i[7,12], a i4 + b i при i< 10,
где a=2.2,b=0.3. y = tg(i + 0.5) при i = 10,
e2i + при i >10,
5. Дляx[0.9,5], x2 - 7/x2 при x<1.3,
где a=1.5 y = ax3 + 7 при 1.3 x3,
lg(x + 7) при ,
6. Дляt[-1.4], при t<0.1,
где a=2.1,b=0.37. z = at + b при 0.1 t 2,
при ,
7. Для x [0,6], a esin x +2.5 при x<0.3,
где a=1.5. y = ecos x + a при 0.3 x<4,
(sin x)/ (a + ex) при x 4,
8. Для x[1,2], y = a/x + b x2 - c при ,
где a=1.8,b=-0.5, c=3.5 (a + bx)/при x>1.2,
9.Для t[1,5], t при t>a,
где a=2.5 z = t sin a t при t=a,
e-at cos a t при t<a,
10. Для x[0,4], e-bx sin b x при x<2.3,
где a=1,b=3. y= сos bx при ,
e-ax cos b x при
11.Для t[0.5,3], a t2 – b при t<a,
где a=1.3,b=6.5 z= a - b при
a t2/3 - при t>b,
12. Для x[0,2], |e-2x sin bx| при x >1,
где b=-2.9 y = cos bx при x = 1,
e-x cos bx при x < 1,
13.Для x[0.5,2] sin (cos a x)при x >1,
где a=-0.8 z = tg ax при x = 1,
a2 x при x < 1,
14. Для x[1,2], ln bx - 1/(bx+1) при x < 1.3,
где b=1.3. y = bx + 1 при 1.3 x 1.7,
ln bx +1/(bx+1) при x > 1.7,
15. Для x[-1,1], ax2+bx2/3 при x<0.1,
где a=2.5,b=-0.9. z= a x2 при x=0.1,
b x2/3 при x>0.1.
16. Ввести координаты точки (x, y). Напечатать, в каком квадранте или на какой оси координат находится эта точка.
17. Ввести радиусы R1, R2 и высоту. Вычислить объем усеченного конуса: , гдеS – площадь оснований. Если R1 = R2 – объем и площадь цилиндра, если R1 = 0 или R2 = 0 – объем (hπr2) и площадь πr() поверхности конуса.
18. Ввести с клавиатуры цифру. Определить, какой системе счисления она может принадлежать.
19. Ввести число. Определить, делится ли оно нацело на два, три или пять.
20. Ввести a, b, h. Если h=0, вычислить площадь прямоугольника; при a = b, найти площадь квадрата; в противном случае подсчитать площадь трапеции.
Задание 2 (программа 2_2)
1. Определить остаток от деления на восемь введенного числа х и написать восьмиричную цифру прописью.
2. По цифре, введенной с клавиатуры, напечатать название этой цифры.
3. С клавиатуры ввести число k (1..30). Определить, какому дню недели оно соответствует, если первое число – понедельник.
4. Ввести число и номер месяца. Напечатать дату прописью.
5. Идет k секунда суток. Вычислить, сколько прошло часов и полных минут к этому моменту, при этом согласовать со значением слова (час, часа, часов, минута, минуты, минут).
6. В зависимости от номера (N) типа фигуры, организовать ввод необходимых данных и вычислить при N = 1 – площадь круга, N = 2 – объем шара (4/3πR3), N=3 -объем цилиндра, N = 4 – площадь поверхности сферы 4πr2.
7. Ввести число N (0 ≤ N ≤ 15). Определить и напечатать шестнадцатеричную цифру, ему соответствующую.
8. Для целого числа К (1…99) напечатать фразу «Мне К лет», при определенных значениях К слово «лет» заменить словом «год» или «года».
9. В зависимости от номера (N) типа фигуры, организовать ввод необходимых данных и вычислить при N = 1 – площадь прямоугольника, при N=2 – площадь параллелограмма, при N = 3 – площадь трапеции 1/2(a+b)h. В последнем случае напечатать: является ли трапеция параллелограммом или ромбом.
10. Перевести число 0 ≤ х ≤ 31 в шестнадцатеричную систему счисления.
11. Напечатать прописью остаток от деления любого целого числа на пять.
12. По введенному номеру напечатать нужный цвет в радуге.
13. Спроектируйте программу, которая показывает, что, если сумма цифр двузначного числа кратна трем, то и само число делится на три без остатка.
14. Разработайте программу, которая доказывает, что квадрат двузначного числа k5 (последняя цифра – 5), равен k * (k + 1) * 100 + 25 (т. е. может быть получен умножением старшей цифры k на следующую по порядку и припиской «25»). Например, 35 * 11 = 3*4*100 + 25.
Для задания 2 номер варианта определяется остатком от деления индивидуалного варианта на число 12.
Лабораторная работа 3