Балтийский государственный технический университет
«Военмех» им. Д. Ф. Устинова
Кафедра И5
«Автоматизированные системы обработки информации и управления»
Лабораторная работа № 7
«ФУНКЦИИ»
Вариант 17.
Выполнила:
Студентка Фомина А.А.
Группа И561
Преподаватель:
Арипова О. В.
Санкт-Петербург
2007
Задача №1:
Найти средне арифметическое всех элементов между минимальным и максимальным элементами в массивах Х (7*8) и Y(34).
Блок-схема.
Листинг.
#include <stdio.h>
#include <conio.h>
#define A 7
#define B 8
#define C 34
float SrArifm(int*,int);
int Min(int*,int);
int Max(int*,int);
void InArray(int*,int);
void main(void)
{
int x[A][B],y[C],min,max;
clrscr();
printf("Vvedite massiv Y[%d]:\n",C);
InArray(y,C);
min=Min(y,C);
max=Max(y,C);
printf("Srednee arfim. mezhdu min i max - %.2f\n",SrArifm(y+(min<max?min:max),max-min>0?max-min:min-max));
printf("Vvedite massiv X[%d][%d]:\n",A,B);
InArray(&x[0][0],A*B);
min=Min(&x[0][0],A*B);
max=Max(&x[0][0],A*B);
printf("Srednee arfim. mezhdu min i max - %.2f\n",SrArifm(&x[0][0]+(min<max?min:max),max-min>0?max-min:min-max));
getch();
}
float SrArifm(int * array,int size)
{
int i;
float s;
for (i=0;i<=size;i++)
s+=*(array+i);
s/=(size+1);
return s;
}
void InArray(int * array,int size)
{
int i;
for (i=0;i<size;i++)
scanf("%d",array+i);
}
int Min(int * array,int size)
{
int k=0,i,temp=*array;
for (i=1;i<size;i++)
{
if (temp>*(array+i))
{
temp=*(array+i);
k=i;
}
}
return k;
}
int Max(int * array,int size)
{
int k=0,i,temp=*array;
for (i=1;i<size;i++)
{
if (temp<*(array+i))
{
temp=*(array+i);
k=i;
}
}
return k;
}
Тестирование.
Массив |
Должно быть |
Получено |
1 2 3 4 5 |
3 |
3 |
1 2 3 1 2 3 1 2 3 1 2 3 |
2 |
2 |
Вывод: программа работает правильно.
Задача №2:
Отсортировать в порядке возрастания строки матриц N(11*5) и М(9*7), номера которых задаются пользователем (не менее трех строк).
Блок-схема.
Листинг.
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#define A 11
#define B 5
#define C 9
#define D 7
void PrintArray(int *,int,int);
void RndFillArray(int *, int);
void SortArray(int *,int);
void main(void)
{
int n[A][B],m[C][D],nomer=1;
RndFillArray(&n[0][0],A*B);
RndFillArray(&m[0][0],C*D);
while(nomer)
{
clrscr();
printf("Massiv N[%d][%d]:\n",A,B);
PrintArray(&n[0][0],A,B);
printf("Kakie stroki hotite otsortirovat'? (Vvedite nomer stroki, ili 0 dlja vihoda)\n");
scanf("%d",&nomer);
if (nomer) SortArray(&n[nomer-1][0],B);
}
nomer=1;
while(nomer)
{
clrscr();
printf("Massiv M[%d][%d]:\n",C,D);
PrintArray(&m[0][0],C,D);
printf("Kakie stroki hotite otsortirovat'? (Vvedite nomer stroki, ili 0 dlja vihoda)\n");
scanf("%d",&nomer);
if (nomer) SortArray(&m[nomer-1][0],D);
}
}
void SortArray(int *arr,int size)
{
int i,j,temp;
for (i=0;i<size-1;i++)
for (j=0;j<size-1-i;j++)
if (*(arr+j)>*(arr+j+1))
{
temp=*(arr+j);
*(arr+j)=*(arr+j+1);
*(arr+j+1)=temp;
}
}
void PrintArray(int *arr,int a, int b)
{
int i,j;
for (i=0;i<a;i++)
{
for (j=0;j<b;j++)
printf("%2d ",*(arr++));
printf("\n");
}
}
void RndFillArray(int *arr,int size)
{
int i;
randomize();
for (i=0;i<size;i++)
*(arr+i)=rand() % 100;
}
Тестирование.
Массив |
Должно быть |
Получено |
1 3 5 2 4 |
1 2 3 4 5 |
1 2 3 4 5 |
3 4 7 1 2 |
1 2 3 4 7 |
1 2 3 4 7 |
Вывод: программа работает правильно.
Задача №3:
, , N =35, метод трапеций.
Листинг.
#include <stdio.h>
#include <conio.h>
#include <math.h>
float int_trap(float,float,int,float (*)(float));
float y1(float);
float y2(float);
void main(void)
{
float a1=-1,b1=3,a2=1,b2=5;
int n=35;
clrscr();
printf("Integral N1 = %f\n",int_trap(a1,b1,n,y1));
printf("Integral N2 = %f",int_trap(a2,b2,n,y2));
getch();
}
float int_trap(float a,float b,int n,float (* y)(float))
{
float i,result,t;
result=(y(a)+y(b))/n;
t=(b-a)/n;
for (i=a+t;i<=b-t;i+=t)
result+=y(i);
result*=(b-a)/n;
return result;
}
float y1(float x) { return 1/(3*x*x-2*x+4); }
float y2(float x) { return cos(x)/(1+sin(x)*sin(x)); }
Тестирование.
№ интегала |
должно быть |
получено |
N1 |
0.606801 |
0.606801 |
N2 |
-1.497654 |
-1.497654 |
Вывод: программа работает правильно.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.