Вопрос № 175531: Здравствуйте, уважаемые эксперты, имеется задача - Даны вещественные массивы A[5][4], D[5][4]. Для каждого массива опpеделить количество элементов, значения котоpых меньше сpеднего аpифметического значения всех элементов массива. Среда ...
Вопрос № 175532: Здравствуйте, уважаемые эксперты, имеется задача - Даны массивы A[2][5], B[2][5], C[2][5]. Для каждого опpеделить местоположение (номер строки и номер столбца) минимального элемента. Среда программирования - Borland C++ 3.1 Прошу...
Вопрос № 175533: Здравствуйте, уважаемые эксперты, имеется задача - Даны вещественные массивы S[5][5], X[5][5]. Опpеделить значения пеpеменных A (по массиву S) и B (по массиву X) по следующему пpавилу: пеpеменной пpисвоить значение 1, если положительных элемен...
Вопрос № 175534: Здравствуйте, уважаемые эксперты, имеется задача - Даны вещественные массивы A[14], F[14]. В каждом массиве определить значение минимального элемента и его индекс. Вывести на печать исходный массив и результаты. Среда программирования -...
Вопрос № 175531:
Здравствуйте, уважаемые эксперты, имеется задача -
Даны вещественные массивы A[5][4], D[5][4]. Для каждого массива опpеделить количество элементов, значения котоpых меньше сpеднего аpифметического значения всех элементов массива.
Среда программирования - Borland C++ 3.1
Прошу написать программу как можно более простым языком (язык пока что только изучаю).
Отвечает amnick, 8-й класс :
Здравствуйте, Penkov213. В приложении — пример решения данной задачи. Блок
#ifdef __BORLANDC__ # include <iostream.h> #else # include <iostream> using namespace std; #endif
в начале исходника обеспечивает компиляцию исходника как в Borland C++ 3.1, так и в MSVC++ 6.0 (а также и в некоторых других компиляторах). Причина в том, что потоковый ввод/вывод описан в заголовочном (включаемом) файле iostream.h в Borland C++ 3.1, а в других компиляторах — в файле iostream.
Поскольку
требуется выполнить одинаковую задачу для двух массивов, то задача оформлена в виде отдельной функции do_all(), из которой вызываются, в свою очередь, функции для ввода массива, вычисления средного арифметического и нахождения кол-ва элементов со значением, меньше заданного. В последнюю функцию (count_less_than) в качестве актуального параметра передается среднее арифметическое элементов массива, что и требуется по условию задачи.
Каким образо
м решаются подобные задачи? Метод известен как "программирование сверху - вниз" (если я ошибся, пусть меня поправят): задача разбивается на несколько более простых, эти более простые разбиваются на еще более элементарные до тех пор, пока не станет ясно, как запрограммировать элементарные подзадачи. Здесь: нам надо решить одинаковую задачу для двух массивов, значит, пишем функцию, которая в качестве параметра будет принимать массив. Я обозвал ее по-простому "сделать все" — do_all(). Что должна
делать эта функция? Разбиваем нашу задачу на подзадачи: ввести массив, вычислить среднее, подсчитать число элементов меньше среднего, вывести результат (это — псевдокод):
do_all( float a ) { array_input( a ); // вводим массив float average = array_average( a ); // находим среднее int n = count_less_than( a, average ); // подсчитываем число элеменов меньше среднего type_result(); }
Ну, теперь уже просто запрограммировать элементарны
е функции. Если будут вопросы, то задавайте их в мини-форуме.
Успехов!
Приложение:
Ответ отправил: amnick, 8-й класс
Ответ отправлен: 22.12.2009, 18:19
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 258034
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 175532:
Здравствуйте, уважаемые эксперты, имеется задача -
Даны массивы A[2][5], B[2][5], C[2][5]. Для каждого опpеделить местоположение (номер строки и номер столбца) минимального элемента.
Среда программирования - Borland C++ 3.1
Прошу написать программу как можно более простым языком (язык пока что только изучаю).
Отвечает amnick, 8-й класс :
Здравствуйте, Penkov213. В приложении — пример решения данной задачи. Блок
#ifdef __BORLANDC__ # include <iostream.h> #else # include <iostream> using namespace std; #endif
в начале исходника обеспечивает компиляцию исходника как в Borland C++ 3.1, так и в MSVC++ 6.0 (а также и в некоторых других компиляторах). Причина в том, что потоковый ввод/вывод описан в заголовочном (включаемом) файле iostream.h в Borland C++ 3.1, а в других компиляторах — в файле iostream.
Поскольку
требуется выполнить одинаковую задачу для нескольких массивов, то задача оформлена в виде отдельной функции do_all(), из которой вызываются, в свою очередь, функции для ввода массива и поиска минимального элемента. Эти функции достаточно элементарны и должны быть понятны даже начинающему программисту, поэтому я их не комментирую. Если будут вопросы, то задавайте их в мини-форуме.
Успехов!
Приложение:
Ответ отправил: amnick, 8-й класс
Ответ отправлен: 22.12.2009, 17:46
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 258033
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 175533:
Здравствуйте, уважаемые эксперты, имеется задача -
Даны вещественные массивы S[5][5], X[5][5]. Опpеделить значения пеpеменных A (по массиву S) и B (по массиву X) по следующему пpавилу: пеpеменной пpисвоить значение 1, если положительных элементов в массиве больше, чем отpицательных, и пpисвоить значение 0 в пpотивном случае.
Среда программирования - Borland C++ 3.1
Прошу написать программу как можно более простым языком (язык пока что только изучаю).
Отвечает amnick, 8-й класс :
Здравствуйте, Penkov213. В приложении — пример решения данной задачи.
Поскольку требуется выполнить одинаковую задачу для нескольких массивов, то задача оформлена в виде отдельной функции do_all(), из которой вызываются, в свою очередь, функции для ввода массива подсчета числа положительных и отрицательных элементов. Эти функции достаточно элементарны и должны быть понятны даже начинающему программисту, поэтому я их не комментирую. Замечу, однако, что функцию array_scan можно написать по-другому.
Нам ведь не нужно знать, сколько положительных и сколько отрицательных элементов. Нужно всего лишь знать, каких больше, поэтому можно обойтись одной переменной и увеличивать ее для положительных элементов, уменьшать для отрицательных и не изменять для нулевых:
Код:
int array_scan( float a[N_ROWS][N_COLS] ) { int n = 0; // больше нуля, если положительных элементов больше, чем отрицательных for( int i = 0; i < N_ROWS; ++i ) for( int j = 0; j < N_COLS; ++j ) { float v = a[i][j]; if( v < 0 ) --n; else if( v > 0 ) ++n; }
return n > 0; }
Печать результатов вызывается из main(), а не из do_all(), поскольку по условию требуется присвоить результат переменным A и B. Если
будут вопросы, то задавайте их в мини-форуме.
Успехов!
Приложение:
Ответ отправил: amnick, 8-й класс
Ответ отправлен: 22.12.2009, 18:51
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 258035
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 175534:
Здравствуйте, уважаемые эксперты, имеется задача -
Даны вещественные массивы A[14], F[14]. В каждом массиве определить значение минимального элемента и его индекс. Вывести на печать исходный массив и результаты.
Среда программирования - Borland C++ 3.1
Прошу написать программу как можно более простым языком (язык пока что только изучаю).
Отвечает amnick, 8-й класс :
Здравствуйте, Penkov213.
В приложении — пример решения данной задачи. Этот вопрос очень похож на заданный Вами ранее 175532, даже проще, поскольку массив — одномерный.
Поскольку требуется выполнить одинаковую задачу для двух массивов, то она оформлена в виде отдельной функции do_all(), из которой вызываются, в свою очередь, функции для ввода массива и поиска минимального элемента. Поскольку Вы пишете, что изучаете язык, то здесь
я продемонстрировал, как можно обращаться к элементам массива по указателям (должно же быть что-то новое?). Если будут вопросы, то задавайте их в мини-форуме.
Успехов!
Приложение:
Ответ отправил: amnick, 8-й класс
Ответ отправлен: 22.12.2009, 19:15
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 258037
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.