Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Копия СистемыПрограммирования.doc
Скачиваний:
26
Добавлен:
30.03.2015
Размер:
1.55 Mб
Скачать

Разработка программ из нескольких функций. Обработка двумерных массивов

Пример 1. Даны три двумерных массива. Найти средние арифметические значения в каждом из них.

# include <stdio.h> // Передача в подпрограмму двумерного массива

# include <math.h>

int ka, kb, kc;

int a[5][5], b[5][5], c[5][5];

double sr(int k, int f[5][5]); // Прототип функции

void main() //Основная программа

{

int i, j, z; // Тело функции

printf("Введите размер матрицы: ");

scanf("%d", &z);

printf("Введите массив из %dx%d элементов\n\n",z,z);

for ( i=0; i<z; i++ )

{

for ( j=0; j<z; j++ )

{

printf("Введите %d-е элементы %d-й строки трех матриц: ", (j+1),(i+1));

scanf("%d %d %d" , &a[i][j], &b[i][j], &c[i][j]);

}

}

printf("srA = %lg\n\n",sr(z,a)); // Обращение к функции SR

printf("srB = %lg\n\n",sr(z,b));

printf("srC = %lg\n",sr(z,c));

}

double sr(int k, int f[5][5]) // Заголовок функции

{

int i, j; float s;

s = 0;

for ( i = 0; I < k; i++)

for ( j = 0; j < k; j++)

s = s + f[i][j];

// if ( k==0 ) { printf("Деление на ноль\n"); return 0; }

return (double)s / (k*k);

} // Конец функции

Пример 2. Даны три массива A (5), B (5), C (5). Найти средние арифметические значения в каждом из них. Ввод элементов массивов оформить отдельной функцией.

#include <stdio.h>

#include <math.h>

int ka, kb, kc;

int a[5], b[5], c[5];

void vvod(int d[5], int *k) // Заголовок функции ввода

{

int i,z; // Тело функции

printf("Введите число элементов: ");

scanf("%d", &z); *k = z;

printf("Введите массив из %d элементов\n\n",z);

for (i=0; i<z; i++)

{

printf("Введите %d-й элемент: ",(i+1));

scanf("%d",&d[i]);

}

} // Конец функции vvod

double sr(int k, int f[5]) // Заголовок функции

{

int i,s;

s=0;

for (i=0; i<k; i++)

s = s + f[i];

// if ( k==0 ) { printf("Деление на ноль\n"); return 0;}

return (double)s/k;

} // Конец функции sr

void main() // Главная программа

{

int i;

vvod(a,&ka); /* Обращение к процедуре, возвращающей в основную программу массив A и его размер */

printf("srA = %g\n\n",sr(ka,a)); // Обращение к функции SR

vvod(b,&kb);

printf("srB = %g\n\n", sr(kb,b) );

vvod(c,&kc);

printf("srC = %g\n", sr(kc,c) );

}

Задание (программа 2_1)

Разработать программы, содержащие функции для следующих задач.

  1. Для вещественных массивов A [1..5], B [1..5] и C [1..5] вычислить

  1. Даны две квадратные вещественные матрицы шестого порядка. Напечатать квадрат той из них, в которой наименьший след (сумма диагональных элементов), считая, что такая матрица одна.

  2. Вычислить все медианы для каждого из трех треугольников по заданным в массивах A, B, C сторонам: ma=0.5, mb=0.5, mc=0.5. Вычисление медианы оформить функцией.

  3. Даны два двумерных массива целых чисел размером 4х5 элементов каждый. Подсчитать количество отрицательных элементов в каждом из них.

  4. Даны три одномерных массива вещественных чисел A [1..6], B [1..8] и С [1..7]. Найти общую сумму положительных элементов в массивах. Нахождение суммы элементов в массиве оформить функцией.

  5. Даны два двумерных массива целых чисел размером 5х5 элементов каждый. Подсчитать произведение элементов главных диагоналей в каждом из них.

  6. Даны два одномерных массива целых чисел A [1..8] и B [1..8]. Найти сумму их максимальных элементов. Для нахождения максимального элемента в массиве использовать функцию.

  7. Даны две квадратные вещественные матрицы шестого порядка. Напечатать квадрат той из них, в которой наименьший след (сумма диагональных элементов), считая, что такая матрица одна.

  8. Даны три одномерных массива целых чисел A [1..6], B [1..8] и С [1..7]. Подсчитать количество неотрицательных элементов в каждом.

  9. Даны две матрицы целых чисел V [1..2,1..3], W [1..3, 1..2]. Найти суммы элементов строк и общую сумму элементов в каждой из этих матриц.

  10. Даны два одномерных массива целых чисел A [1..6] и B [1..8]. Вычислить значение Z = (min A[i] + min B[j]) / min (A[i] + B[j]).

  11. Для двух квадратных матриц четвертого порядка найти и напечатать числа, ближайшие к среднему арифметическому значению в каждой. Использовать функцию.

  12. По заданным целым массивам X [0..7] и Y [8..15] вычислить

  1. Найти правило и оформить функцией вычисление любой строки.

  2. Даны три одномерных массива вещественных чисел К [1..6], B [1..8] и С [1..7]. Найти общую сумму положительных элементов в массивах, указать наименьшую и наибольшую из них. Нахождение суммы элементов в массиве оформить функцией.

  3. Дана матрица целых чисел D [1..6,1..5]. Найти наименьшую из сумм неотрицательных элементов строк матрицы. Для вычисления суммы использовать подпрограмму (функцию).

  4. Для трех одномерных массивов напечатать по одному числу, ближайшему к среднему арифметическому значению. Среднее арифметическое значение вычислить в функции.

  5. Дана матрица целых чисел E [1..3,1..5]. Используя функцию, найти среднее геометрическое значение для каждого столбца матрицы.

  6. Даны три одномерных массива. Вычислить средние геометрические значения для них и их сумму.

  7. Дана матрица целых чисел F [1..4,1..5]. Найти наименьшие значения элементов в каждой из строк матрицы с помощью функции.

  8. Даны квадратные матрицы A и B размером 5х5 каждая. Выбрать из них положительные и отрицательные элементы и записать соответственно в массивы Aпол, Аотр, Bпол, Вотр. Подсчитать количество чисел в каждом полученном массиве, число положительных и число отрицательных.

  9. Даны одномерные массивы В [1..8], C [1..8]. Записать их в виде матриц ВВ[1..2,1..4], CC [1..2,1..4], найти наибольшие элементы в каждой.

Лабораторная работа № 3