Консультация № 175534
22.12.2009, 17:05
35.00 руб.
0 2 1
Здравствуйте, уважаемые эксперты, имеется задача -

Даны вещественные массивы A[14], F[14]. В каждом массиве определить значение минимального элемента и его индекс. Вывести на печать исходный массив и результаты.

Среда программирования - Borland C++ 3.1

Прошу написать программу как можно более простым языком (язык пока что только изучаю).

Заранее благодарен.

Обсуждение

Неизвестный
22.12.2009, 19:15
общий
это ответ
Здравствуйте, Penkov213.

В приложении — пример решения данной задачи. Этот вопрос очень похож на заданный Вами ранее 175532, даже проще, поскольку массив — одномерный.

Поскольку требуется выполнить одинаковую задачу для двух массивов, то она оформлена в виде отдельной функции do_all(), из которой вызываются, в свою очередь, функции для ввода массива и поиска минимального элемента. Поскольку Вы пишете, что изучаете язык, то здесь я продемонстрировал, как можно обращаться к элементам массива по указателям (должно же быть что-то новое?). Если будут вопросы, то задавайте их в мини-форуме.

Успехов!

Приложение:
/*
Даны вещественные массивы A[14], F[14].
В каждом массиве определить значение минимального элемента и его индекс.
Вывести на печать исходный массив и результаты.

Среда программирования - Borland C++ 3.1
*/

#ifdef __BORLANDC__
# include <iostream.h>
#else
# include <iostream>
using namespace std;
#endif


#define N_ELEM 14

// В параметрах всех функций:
// a - указатель на массив
// n - число элементов массива

void array_input( float* a, int n, const char* pszArrayName )
{
cout << "Введите элементы массива " << pszArrayName << ":\n";
for( int i = 0; i < n; ++i, ++a ) {
cout << pszArrayName << '[' << i << "] = ";
cin >> *a;
}
}

float array_find_min( const float* a, int n, int& iMin )
{
float m = *a; // текущий минимальный элемент
iMin = 0; // индекс минимального элемента
for( int i = 0; i < n; ++i, ++a )
if( *a < m ) {
m = *a;
iMin = i;
}
return m;
}

void do_all( float* a, int n, const char* pszArrayName )
{
// вводим массив
array_input( a, n, pszArrayName );
// ищем минимум и его положение (индекс)
int iMin;
float aMin = array_find_min( a, n, iMin );
// выводим результат
cout << "Минимальный элемент в массиве: " << pszArrayName << '[' << iMin << "] = " << aMin << "\n";
}

void main()
{
float A[N_ELEM], F[N_ELEM];
do_all( A, N_ELEM, "A" );
do_all( F, N_ELEM, "F" );
}
Неизвестный
23.12.2009, 16:10
общий
Penkov213:
Совсем опустил, что по условию нужно "Вывести на печать исходный массив и результаты". Поэтому вот модифицированный вариант программы:
Код:
/*
Даны вещественные массивы A[14], F[14].
В каждом массиве определить значение минимального элемента и его индекс.
Вывести на печать исходный массив и результаты.

Среда программирования - Borland C++ 3.1
*/

#include <fstream.h>

#define N_ELEM 14

// В параметрах всех функций:
// a - указатель на массив
// n - число элементов массива

void array_input( float* a, int n, const char* pszArrayName )
{
cout << "Введите элементы массива " << pszArrayName << ":\n";
for( int i = 0; i < n; ++i, ++a ) {
cout << pszArrayName << '[' << i << "] = ";
cin >> *a;
}
}

float array_find_min( const float* a, int n, int& iMin )
{
float m = *a; // текущий минимальный элемент
iMin = 0; // индекс минимального элемента
for( int i = 0; i < n; ++i, ++a )
if( *a < m ) {
m = *a;
iMin = i;
}
return m;
}

void array_print( ofstream& out, const float* a, int n, const char* pszArrayName )
{
out << "Массив " << pszArrayName << ":\n";
for( int i = 0; i < n; ++i, ++a )
out << pszArrayName << '[' << i << "] = " << *a << "\n";
}

void do_all( float* a, int n, const char* pszArrayName )
{
// вводим массив
array_input( a, n, pszArrayName );
// ищем минимум и его положение (индекс)
int iMin;
float aMin = array_find_min( a, n, iMin );
// выводим результат
ofstream out(4); // 4=stdprn
array_print( out, a, n, pszArrayName );
out << "Минимальный элемент в массиве: " << pszArrayName << '[' << iMin << "] = " << aMin << "\n";
}

void main()
{
float A[N_ELEM], F[N_ELEM];
do_all( A, N_ELEM, "A" );
do_all( F, N_ELEM, "F" );
}


  • Вместо iostream.h подключаем файл fstream.h;
  • Добавлена функция array_print(), первый параметр которой — ссылка на поток, в который требуется вывести массив;
  • В функции do_all() выходной поток связывается со стандартным устройством печати:
    ofstream out(4);
    4 — описатель (номер, handle) стандартного устройства печати. Заметьте, что этот код годится для DOS, но не для 32-битных версий Windows.
    Далее этот поток используется для вывода на печать исходного массива и результатов.
Форма ответа