Консультация № 169666
20.06.2009, 23:57
0.00 руб.
0 1 1
Здравствуйте, эксперты.Помогите решить задачу:
Даны вещественные массивы A[5][4], D[5][4]. Для каждого
массива опpеделить количество элементов, значения котоpых
меньше сpеднего аpифметического значения всех элементов
массива.



Приложение:
Имеется задача, на подобие которой надо сделать мою

Условие задачи - Даны целые массивы A[14], D[14]. Для каждого
массива опpеделить количество элементов, пpедшествующих
наименьшему элементу массива.

В данной задаче должны быть реализованы такие действия:
1. Ввод исходных массивов.
2. Определение количества элементов, предшествующих наименьшему
элементу массива.
3. Вывод на экран исходного массива и полученного результата.
Каждое действие оформим в виде отдельной функции.
Пусть:
inputmas() - функция ввода массива
schet() - функция определения количества элементов до наименьшего
(данная функция должна посредством инструкции return
возвращать результат работы в точку вызова фунции)
outrez() - функция вывода исходного массива и полученного результата
Текст программы
#include <iostream.h>
#include <iomanip.h>
// прототипы функций
void inputmas( int [14], char );
int schet( int [14] );
void outrez( int [14], char, int );

void main()
{
// объявление массивов и переменных
int a[14], d[14], kola, kold;

// обращение
inputmas(a, 'a'); // в функцию в качестве аргументов передается
inputmas(d, 'd'); // массив и его имя (символ в апострофах)

kola = schet( a ); // вызов функции, возвращающей одно значение
kold = schet( d );

outrez(a, 'a', kola);
outrez(d, 'd', kold);
}

// определение функции ввода массива input()
void inputmas ( int x[14], char name)
{
int i;
cout << "Вводим массив " << name << endl;



for (i=0; i<14; i++)
{
cout << " Введите элемент массива " << name << "[" << i << "]=";
cin >> x[i];
}
}

// определение расчетной функции schet()
int schet ( int m[14] )
{
int i, kol, min;
min = m[0]; // первоначально за минимальное примем 1-й элемент
kol = 0; // кол-во элементов, предшествующих минимальному
for (i=1; i<14; i++)
if ( m[i] < min )
// нашли в массиве элемент, значение которого меньше
// значения принятого за минимум
{
min = m[i]; // заменили значение минимума
kol = i; // количество элементов, предшествующих минимальному
}
return (kol); // передача значения в точку вызова данной функции
}

// определение функции вывода массива outrez()
void outrez ( int x[14], char name, int kol)
{
int i;
cout << " Исходный массив " << name << ":" << endl;
for (i=0; i<14; i++)
cout << setw(5) << x[i];
cout << "Наименьшему элементу в массиве " << name <<
" предшествует " << kol << " элемента(ов) \n";
}

Обсуждение

Неизвестный
22.06.2009, 15:19
общий
это ответ
Здравствуйте, Селезнёва Ирина Сергеевна.

Программа в приложении

Приложение:
// Даны вещественные массивы A[5][4], D[5][4].
// Для каждого массива опpеделить количество элементов,
// значения котоpых меньше сpеднего аpифметического
// значения всех элементов массива

// В данной задаче должны быть реализованы такие действия:
// 1. Ввод исходных массивов.
// 2. Вывод на экран исходного массива.
// 3. Определение среднего арифметического значения элементов массива
// и определение количества элементов, удовлетворяющих условию.
// 4. Вывод на экран полученного результата.

// Каждое действие оформим в виде отдельной функции.

// InputArray () - функция ввода массива
// PrintArray () - функция вывода исходного массива
// ProcessArray () - функция определения количества элементов,
// удовлетворяющих условию
// (данная функция должна посредством инструкции return
// возвращать результат работы в точку вызова фунции)
// OutputResult () - функция вывода полученного результата

#include <stdio.h>

#define N 5
#define M 4

// Функция ввода массива
// Первый параметра - массив, второй - имя массива
void InputArray (float a[N][M], char * aName) {
printf ("Введите массив '%s':\n", aName);
for (int i = 0; i < N; i++)
for (int j = 0; j < M; j++) {
printf ("a [%d] [%d] --> ", i, j);
scanf ("%f", &(a [i] [j]));
}
}

// Функция вывода массива
// Первый параметра - массив, второй - имя массива
void PrintArray (float a[N][M], char * aName) {
printf ("Массив '%s':\n", aName);

for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++)
printf (" %5.2f", a [i] [j]);
printf ("\n");
}
}

// Функция нахождения числа указанных элементов в массиве
int ProcessArray (float a[N][M]) {
float avg = 0.0; // значение среднего арифметического элементов

// Находим сумму элементов массива
for (int i = 0; i < N; i++)
for (int j = 0; j < M; j++)
avg += a [i] [j];

// Определяем среднее арифметическое
avg /= (N * M);

// Определяем количество указанных элементов
int count = 0;
for (i = 0; i < N; i++)
for (int j = 0; j < M; j++)
if (a [i] [j] < avg) count++;

printf ("Среднее арифметическое значение элементов массива равно %5.2f\n", avg);

return count;
}

// Функция вывода результата
void OutputResult (int res) {
printf ("Количество элементов массива, значения которых меньше "
"среднего арифметического значения элементов массива, "
"равно %d\n\n", res);
}

void main () {
float a[N][M], d[N][M];

InputArray (a, "A");
InputArray (d, "D");

PrintArray (a, "A");

OutputResult (ProcessArray (a));

PrintArray (d, "D");

OutputResult (ProcessArray (d));
}
Форма ответа