Proga



Министерство образования Республики Беларусь
Учреждение образования
«Белорусский государственный университет
информатики и радиоэлектроники»


Кафедра «Вычислительные методы и программирование»






КОНТРОЛЬНАЯ РАБОТА № 1
по дисциплине
«ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ»
Вариант № 4




Выполнил:
студент группы 200701
Решетников О.Г.





Минск БГУИР 2012

ЗАДАНИЕ №2.
Вычислить значение y в зависимости от выбранной функции ((x), аргумент которой определяется из поставленного условия. Возможные значения функции ((x): 2x, x2, х/3 (в оконном приложениии выбор выполнить с помощью компоненты RadioGroup). Предусмотреть вывод сообщений, показывающих, при каком условии и с какой функцией производились вычисления у.
13 EMBED Equation.3 1415, где 13 EMBED Equation.3 1415
Текст программы:
//---------------------------------------------------------------------------
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Результаты выполнения:


ЗАДАНИЕ №3.
Для каждого x, изменяющегося от a до b с шагом h, найти значения функции Y(x), суммы S(x) и |Y(x)–S(x)| и вывести в виде таблицы. Значения a, b, h и n вводятся с клавиатуры.
Так как значение S(x) является рядом разложения функции Y(x), при правильном решении значения S и Y для заданного аргумента x (для тестовых значений исходных данных) должны совпадать в целой части и в первых двух-четырех позициях после десятичной точки.
Работу программы проверить для a = 0,1; b = 1,0; h = 0,1; значение параметра n выбрать в зависимости от задания (10, 20, 50, 100).
13 EMBED Equation.2 1415 13 EMBED Equation.2 1415.
Текст программы:
//---------------------------------------------------------------------------
#include ·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·bs(y-s));
}
puts("\nPress any key ... ");
getch();
}

Результаты выполн0ения:


ЗАДАНИЕ №4.
По заданию лабораторной работы №3 написать программу расчета выбранной функции Y(x), или S(x) (желательно и |Y(x)–S(x)|), вид которой определяется в функции вывода (Out_Rez) в зависимости от переданного ей параметра kod.
Текст программы:
//---------------------------------------------------------------------------
#include
#include
#include
#include
//------------------- Декларации прототипов функций -------------------------
double fun1(double, int);
double fun2(double, int);
void Out_Rez (int, double, double, double, int);
//-----------------------------------------------------------------------------------------
void main()
{
double a, b, h;
int n;
puts("Input a, b, h, n");
scanf("%lf%lf%lf%d", &a, &b, &h, &n);
puts("\n\t Function - Y(x)");
Out_Rez (1,a,b,h,n);
puts("\n\t Function - S(x)");
Out_Rez (2,a,b,h,n);
puts("\n Press any key ... ");
getch();
}
//---------- Реализации функций пользователя ---------------------------------
double fun1( double x, int n)
{
int k,zn=-1;
double r, s;
r = s = 1;
for(k = 1; k<=n; k++) {
r=zn*r*x*x/(2*k)/(2*k-1);
s+=r;
}
return s;
}
//---
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
double (*fun)(double, int); // Декларация указателя на функцию
switch(kod) {
case 1:
fun = fun1;
break;
case 2:
fun = fun2;
break;
}
for(double x=xn; x<=xk; x+=h)
printf(" x = %5
·.2lf \t y = %8.4lf\n", x, fun(x,n));
}

Результаты выполнения:



Задание №5.
Написать программу по обработке одномерных массивов. Размеры массивов вводить с клавиатуры. В консольном приложении предусмотреть возможность ввода данных как с клавиатуры, так и с использованием функции random().
При создании оконного приложения скалярный (простой) результат выводить в виде компоненты Label, а массивы вводить и выводить с помощью компонент StringGrid.
В одномерном массиве, состоящем из n вводимых с клавиатуры целых элементов,вычислить:
1. Произведение элементов массива, расположенных между максимальным и минимальным элементами.
Текст программы:
//---------------------------------------------------------------------------
#include
#include
#include
void main()
{
int a[10],n,k, i, sum=0;
randomize(); // Изменение начального адреса для random()
printf("Input N (<=10) ");
scanf("%d", &n);
printf("Vvod rukami (1), ili RANDOM(2) ");
scanf("%d", &k);
puts("\n Massiv A");
for(i=0; i if (k==2)
{
a[i] = random(21)-10; // Заполнение массива А случайными числами
printf("%4d", a[i]);
}
else {
printf("a[%d] = ",i);
scanf("%d", &a[i]);
}
}

//Поиск позиции первого положительного
for (i=0; i //Поиск позиции последнего положительного
for (k=n-1; k>=0 && a[k]<=0; k--);
//Подсчет суммы
for(i++; i sum+=a[i];
printf("\n Summa el-tov mezhdu 1-m i poslednim polozhitel`nimi = %d",sum);
puts("\n Press any key ... ");
getch();
}

Результат выполнения:



Задание №6.

Текст программы:
//---------------------------------------------------------------------------
#include
#include
#include
void main()
{
double **a, sum;
int i, j, n, m, kol=0;
printf(" Input size N,M : ");
scanf("%d%d",&n,&m);
a = new double*[n]; // Захват памяти под указатели
for(i=0; i a[i] = new double[m]; // Захват памяти под элементы
puts("\n Input Massiv A:");
for(i=0; i for(j=0; j scanf("%lf", &a[i][j]);
for(i=0; i for(j=0; j printf("%5.2lf",a[i][j]);
printf("\n");
}
//подсчет особых элементов
for (j=0; j sum=0;
for (i=0; i sum+=a[i][j];
for (i=0; i if (a[i][j]>sum/2) kol++;
}

printf("Koli4estvo osobih elementov = %d",kol);
for(i=0; i delete []a[i];
delete []a;
puts("\n Delete !");
puts("\n Press any key ... ");
getch();
}

Результат выполнения:


Задание №7.


Текст программы:
//---------------------------------------------------------------------------
#include
#include
#include
#include
void main()
{
int n, i, k, nst, len;
char st[100], sl[100] ;
puts(" Input string ");
gets(st);
strcat (st," ");
len = strlen(st);
k=0;
printf("Gruppi s 4etnim kol-vom simvolov:\n");
sl[0] = '\0';
for (i=0; i if (st[i] != ' ')
{
sl[k] = st[i];
sl[k+1] = '\0';
k++;
}
else
{
if (strlen (sl) % 2 == 0) puts (sl);
sl[0] = '\0';
k = 0;
}

puts("\nPress any key ... ");
getch();
}
Результат выполнения:



ЛИТЕРАТУРА

1. Методичка по Builder для заочников.
2. Березин, Б. И. Начальный курс С и С++ / Б. И. Березин, С. Б. Березин. – М.: Диалог – МРТИ, 1999.

Root Entry

Приложенные файлы

  • doc 17698255
    Размер файла: 367 kB Загрузок: 0

Добавить комментарий