Министерство образования Республики Беларусь Учреждение образования «БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ» Институт информационных технологий
Специальность__СРРИТ________________________
КОНТРОЛЬНАЯ РАБОТА
По курсу Основы алгоритмизации и прогромирования
Вариант №8
Студент-заочник__1_ курса Группы №_982922______ ФИО: Демко Валерий Леонидович № зачетной книжки: Адрес:211174,Витебская обл.,г.Лепель, ул.Интернациональная 32 кв.28 Тел.8-02132-4-21-71 e-mail: [email protected]
Минск, 2009 Содержание 1. Задача №1 1.1. Постановка задачи 3 1.2. Схема алгоритма программы 4 1.3. Код программы 5 1.4. Результаты работы программы 6 2. Задача №2 2.1. Постановка задачи 7 2.2. Схема алгоритма программы 8 2.3. Код программы 9 2.4. Результаты работы программы 10 3. Задача №3 3.1. Постановка задачи 11 3.2. Схема алгоритма программы 12 3.3. Код программы 15 3.4. Результаты работы программы 16 4. Задача №4 4.1. Постановка задачи 17 4.2. Схема алгоритма программы 18 4.3. Код программы 23 4.4. Результаты работы программы 25 Список литературы 26
Постановка задачи №1
Создать программу вычисления указанной величины. Результат прове-рить при заданных исходных значениях.
При x = –2.23510-2, y = 2.23, z = 15.221 = 39.374.
ОАиП КР01 08
Схема функции main Лист Масса Масшт. Изм. Лист № докум. Подп. Дата Разраб. Демко В.Л. 7.12 Пров. Кривоносова Лист 1 Листов 1 БГУИР гр.982922 Н.контр. Утв. Схема алгоритма программы
int main() { double x,y,z,a,b,c,d,h,f; //объявление переменных printf("Input x: "); //ввод элементов scanf("%lf",&x); printf("Input y: "); scanf("%lf",&y); printf("Input z: "); scanf("%lf",&z); a=fabs(x-y); //|x-y| b=x+y; c=atan(x)+atan(z); //arctg x + arctg z d=x*x*x*x*x*x+log(y)*log(y); h=pow(d,0.33333); //корень кубический из выражения d f=(exp(a)*pow(a,b)/c)+h; //конечное представление уравнения printf("\nThe result is: f=%.3lf",f); //вывод конечного результата getch(); }
Результаты работы программы
Постановка задачи №2
Составить программу для вычисления значения rez в зависимости от поставленного условия. Для получения результатов подобрать исходные данные так, чтобы выполнялись все возможные ветви алгоритма. Перед выводом полученного результата должно выводиться сообщение о ветви, при прохождении которой он получен. rez=
ОАиП КР01 08
Схема функции main Лист Масса Масшт. Изм. Лист № докум. Подп. Дата Разраб. Демко В.Л. 7.12 Пров. Кривоносова Лист 1 Листов 1 БГУИР гр.982922 Н.контр. Утв. Схема алгоритма программы
int main() { double c,k,rez; puts("Input c and k: "); //ввод элементов scanf("%lf%lf",&c,&k);
if(fabs(c+k)>2) //проверка первого условия { rez=pow(tan(c-(2*k)),2); puts("\n|c+k|>2"); //вывод первого условия } else { rez=log(fabs(c-(2*k)))-sin(c/2*k); puts("\n0.5<|c+k|<=2"); //вывод второго условия }
printf("\nThe result is: rez=%.3lf",rez); //вывод результата getch(); }
Результаты работы программы
1 вариант введенные значения соответствуют первому условию:
2 вариант введенные значения соответствуют второму условию:
Постановка задачи №3
В одномерном целочисленном массиве (размер массива (не больше 20) и значения его элементов вводить с клавиатуры) вычислить сумму целых частей элементов массива, расположенных после последнего отрицательного элемента.
ОАиП КР01 08
Схема функции main Лист Масса Масшт. Изм. Лист № докум. Подп. Дата Разраб. Демко В.Л. 7.12 Пров. Кривоносова Лист 1 Листов 3 БГУИР гр.982922 Н.контр. Утв. Схема алгоритма программы
Нет
Да
ОАиП КР01 08
Схема функции main Лист Масса Масшт. Изм. Лист № докум. Подп. Дата Разраб. Демко В.Л. 7.12 Пров. Кривоносова Лист 2 Листов 3 БГУИР гр.982922 Н.контр. Утв.
Нет Да Нет Да
Нет
Да
ОАиП КР01 08
Схема функции main Лист Масса Масшт. Изм. Лист № докум. Подп. Дата Разраб. Демко В.Л. 7.12 Пров. Кривоносова Лист 3 Листов 3 БГУИР гр.982922 Н.контр. Утв.
Код программы
#include "stdio.h" #include "conio.h"
int main() { int n,i,m,okr,s=0; double a[20],l; printf("Input size of massive a:"); //ввод размера массива scanf("%d",&n); printf("\tMassive a:\n"); for(i=0;i<n;i++) //ввод элементов массива { printf("a[%d]= ",i+1); scanf("%lf",&a[i]); } for(i=0;i<n;i++) //поиск последнего отрицательного элемента { if(a[i]<0) { l=a[i]; m=i; } } printf("The last negative number is: %.2lf ",l); for(i=m+1;i<n;i++) //суммирование элементов { okr=int(a[i]); s+=okr; } printf("\nThe SUM is: %d",s); getch(); }
Результаты работы программы
Постановка задачи №4 В двухмерном целочисленном массиве (размеры массива N, M и значения его элементов вводить с клавиатуры) найти количество 0-й и 1-ц в массиве, а также сумму единиц.
ОАиП КР01 08
Схема функции main Лист Масса Масшт. Изм. Лист № докум. Подп. Дата Разраб. Демко В.Л. 7.12 Пров. Кривоносова Лист 1 Листов 5 БГУИР гр.982922 Н.контр. Утв. Схема алгоритма программы
Нет
Да
ОАиП КР01 08
Схема функции main Лист Масса Масшт. Изм. Лист № докум. Подп. Дата Разраб. Демко В.Л. 7.12 Пров. Кривоносова Лист 2 Листов 5 БГУИР гр.982922 Н.контр. Утв.
Нет Да
Нет Да
Нет
Да
ОАиП КР01 08
Схема функции main Лист Масса Масшт. Изм. Лист № докум. Подп. Дата Разраб. Демко В.Л. 7.12 Пров. Кривоносова Лист 3 Листов 5 БГУИР гр.982922 Н.контр. Утв.
Нет
Да
ОАиП КР01 08
Схема функции ISUM Лист Масса Масшт. Изм. Лист № докум. Подп. Дата Разраб. Демко В.Л. 7.12 Пров. Кривоносова Лист 4 Листов 5 БГУИР гр.982922 Н.контр. Утв.
Нет
Да
Нет
Да Нет Да
ОАиП КР01 08
Схема функции ISUM Лист Масса Масшт. Изм. Лист № докум. Подп. Дата Разраб. Демко В.Л. 7.12 Пров. Кривоносова Лист 5 Листов 5 БГУИР гр.982922 Н.контр. Утв.
Нет
Да
Нет
Да Нет Да
Код программы
#include <stdio.h> #include <conio.h>
int ISUM(int, int, int**, int*,int*); // описание прототипа функции void main() { int **a, i, j, n, m,sum,kol1,kol0; //объявление переменных printf("Input amount of rows : "); //ввод количества строк матрицы scanf("%d",&n); printf("Input amount of columns : "); //ввод количества столбцов scanf("%d",&m); a = new int*[n]; // захват памяти под указатели for(i=0; i<n;i++) { a[i] = new int[m]; // захват памяти под элементы } printf("\nInput elements:\n"); for(i=0; i<n; i++) //ввод элементов матрицы { for(j=0; j<m; j++) { printf("\ta[%d] [%d] ",i+1,j+1); scanf("%d",&a[i][j]); } } printf("\n Matrix is:\n"); for(i=0; i<n; i++) //вывод матрицы на экран { for(j=0; j<m; j++) { printf("\t%d ",a[i][j]); } printf(" \n"); } // Обращение к функции с указанием //фактических аргументов sum = ISUM(n,m,a,&kol1,&kol0); printf("\n\nAmount of '1' : %d\nAmount of '0' : %d\n\nSum of '1' is %d ",kol1,kol0,sum); delete []a; // Освобождение памяти printf("\n\nCLEAR ALL"); getch(); } // Реализация функции ISUM int ISUM(int a, int b, int **x, int *k,int *q) { int i, j, s = 0; *k = 0; for(i=0; i<a;i++) { for(j=0; j<b;j++) { if(x[i][j]==1) //поиск единиц в матрице { (*k)++; s += x[i][j]; //подсчёт суммы единиц } } } *q = 0; for(i=0; i<a;i++) { for(j=0; j<b;j++) { if(x[i][j]==0) //поиск нулей в матрице { (*q)++; } } } return s; //возвращение суммы }
Результаты работы программы
Список использованной литературы
1. Батура М.П., Бусько В.Л., Корбит А.Г., Кривоносова Т.М. Основы алгоритмизации и программирования. Язык Си : учеб. пособие. – Минск : БГУИР, 2007. 2. Березин Б.И., Березин С.Б. Начальный курс С и С++. – М.: Диалог-Мифи, 2004. 3. Вирт Н. Алгоритмы и структуры данных. – М.: Мир,1989. 4. Демидович Е.М. Основы алгоритмизации и программирования. Язык Си. – СПб.: БХВ-Петербург,2006. 5. Ляхович В.Ф., Крамаров С.О. Основы информатики. – Ростов н/Д: Фе-никс, 2003. 6. Страуструп, Б. Язык программирования C++ / Б. Страуструп: 2-е изд.: В 2 т. – Киев: ДиаСофт, 1993.