- •Системы программирования
- •Разработка программ из нескольких функций. Обработка двумерных массивов
- •Применение адресов и указателей при возврате из функций нескольких значений
- •Программирование с возвратом из функции структур
- •Задание
- •Основы программирования в системе Code::Blocks Инструкция по работе в Code::Blocks
- •Разработка программ из нескольких функций. Вычисление значения интегралов
- •Задание
- •Библиографический список
- •Типы данных
- •Содержание
Разработка программ из нескольких функций. Обработка двумерных массивов
Пример 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)
Разработать программы, содержащие функции для следующих задач.
Для вещественных массивов A [1..5], B [1..5] и C [1..5] вычислить
Даны две квадратные вещественные матрицы шестого порядка. Напечатать квадрат той из них, в которой наименьший след (сумма диагональных элементов), считая, что такая матрица одна.
Вычислить все медианы для каждого из трех треугольников по заданным в массивах A, B, C сторонам: ma=0.5, mb=0.5, mc=0.5. Вычисление медианы оформить функцией.
Даны два двумерных массива целых чисел размером 4х5 элементов каждый. Подсчитать количество отрицательных элементов в каждом из них.
Даны три одномерных массива вещественных чисел A [1..6], B [1..8] и С [1..7]. Найти общую сумму положительных элементов в массивах. Нахождение суммы элементов в массиве оформить функцией.
Даны два двумерных массива целых чисел размером 5х5 элементов каждый. Подсчитать произведение элементов главных диагоналей в каждом из них.
Даны два одномерных массива целых чисел A [1..8] и B [1..8]. Найти сумму их максимальных элементов. Для нахождения максимального элемента в массиве использовать функцию.
Даны две квадратные вещественные матрицы шестого порядка. Напечатать квадрат той из них, в которой наименьший след (сумма диагональных элементов), считая, что такая матрица одна.
Даны три одномерных массива целых чисел A [1..6], B [1..8] и С [1..7]. Подсчитать количество неотрицательных элементов в каждом.
Даны две матрицы целых чисел V [1..2,1..3], W [1..3, 1..2]. Найти суммы элементов строк и общую сумму элементов в каждой из этих матриц.
Даны два одномерных массива целых чисел A [1..6] и B [1..8]. Вычислить значение Z = (min A[i] + min B[j]) / min (A[i] + B[j]).
Для двух квадратных матриц четвертого порядка найти и напечатать числа, ближайшие к среднему арифметическому значению в каждой. Использовать функцию.
По заданным целым массивам X [0..7] и Y [8..15] вычислить
Найти правило и оформить функцией вычисление любой строки.
Даны три одномерных массива вещественных чисел К [1..6], B [1..8] и С [1..7]. Найти общую сумму положительных элементов в массивах, указать наименьшую и наибольшую из них. Нахождение суммы элементов в массиве оформить функцией.
Дана матрица целых чисел D [1..6,1..5]. Найти наименьшую из сумм неотрицательных элементов строк матрицы. Для вычисления суммы использовать подпрограмму (функцию).
Для трех одномерных массивов напечатать по одному числу, ближайшему к среднему арифметическому значению. Среднее арифметическое значение вычислить в функции.
Дана матрица целых чисел E [1..3,1..5]. Используя функцию, найти среднее геометрическое значение для каждого столбца матрицы.
Даны три одномерных массива. Вычислить средние геометрические значения для них и их сумму.
Дана матрица целых чисел F [1..4,1..5]. Найти наименьшие значения элементов в каждой из строк матрицы с помощью функции.
Даны квадратные матрицы A и B размером 5х5 каждая. Выбрать из них положительные и отрицательные элементы и записать соответственно в массивы Aпол, Аотр, Bпол, Вотр. Подсчитать количество чисел в каждом полученном массиве, число положительных и число отрицательных.
Даны одномерные массивы В [1..8], C [1..8]. Записать их в виде матриц ВВ[1..2,1..4], CC [1..2,1..4], найти наибольшие элементы в каждой.
Лабораторная работа № 3