Функции. Определение среднего арифметического всех элементов между минимальным и максимальным элементами в массивах

Страницы работы

Содержание работы

Балтийский государственный технический университет

«Военмех» им. Д. Ф. Устинова

Кафедра  И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

Вывод: программа работает правильно.

Похожие материалы

Информация о работе