Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
П о я с н е н и я к э к з а м е н а ц и о н н о й з а д а ч е
Условие задачи записано в двух абзацах: - в первом абзаце приводится описание подпрограммы Р, которую надо разработать; - во втором абзаце приводится задание, для выполнения которого надо использовать разработанную подпрограмму.
Первый абзац В описании подпрограммы Р фигурирует некоторая функция f, о которой известно следующее: а)она зависит от одного аргумента, в)тип этого аргумента, с) тип самой функции. Имя функции f должно быть среди формальных параметров подпрограммы Р. Подпрограмма Р не должна содержать операторов ввода и вывода. В ней должны производиться те и только те действия и над теми объектами, которые указаны в описании подпрограммы (т.е. в первом абзаце). В процедуре Р должен обрабатываться только одномерный массив (или два одномерных массива). Не " перетягивайте" в подпрограмму Р матрицу и действия, которые не описаны в первом абзаце.
Второй абзац Надо внимательно прочитать второй абзац и определить какие функции будут использоваться в качестве фактических при обращении к подпрограмме Р. Это могут быть функции, реализующие s in(z), cos(z), ln(z), exp(z), abs(z), int(z), sqrt(z), x3, x2 и т.д. Обратите внимание, что описания этих функций должны быть расположены вне других подпрограмм. Проанализируйте содержание абзаца. Если там сказано, что надо обработать каждую строку матрицы, то надо будет переписывать в одномерный рабочий массив текущую строку матрицы и передавать ее в подпрограмму Р в качестве фактического параметра. Аналогично, если надо обрабатывать каждый столбец матрицы или всю матрицу целиком, их надо будет переписывать в одномерный рабочий массив. Ввод исходных данных и вывод результатов надо делать непосредственно в main. Внимание. 1)проверку правильности ввода исходных данных производить не надо. 2)Переписывать условие задачи не надо.
П Р И М Е Р Э К З А М Е Н А Ц И О Н Н О Й З А Д А Ч И Разработать подпрограмму Р для вычисления суммы и количества тех элементов массива x, для которых f(x[i]) > c, где f - некоторая функция, c - заданная величина, x - массив вещественных чисел. Используя подпрограмму P, для каждой строки матрицы а c 5 строками и 7 столбцами найти и вывести сумму тех ее элементов, значения синусов которых больше 0.3, а если таких элементов в строке нет – вывести сообщение ‘ нет ’. То же самое сделать для элементов, значения косинусов которых больше 0.2.
1)Таблицы данных Таблица данных для void P(float x[], int n, float c, float f(float z), float & s, int & kol)
PS. Таблица данных для void main()
Некоторые замечания - в условии задачи явно не указано, что необходимо найти количество элементов строки, для которых синус больше, чем 0.3 или количество элементов, для которых косинус больше, чем 0.2. Но это приходится делать, чтобы определить есть ли такие элементы в строке. 4)Алгоритмы
#include < iostream.h> #include < conio.h> #include < stdio.h> #include < math.h>
float f1(float z) { return sin(z); }
float f2(float z) { return cos (z); }
void p(float x[ ], int n, float c, float f(float z), float & s, int & kol) { float s; int k; s=0; kol=0; for(k=0; k< n; k++) if (f(x[k])> c) { s=s+x[k]; kol++; } }
void main() { float a[5][7], rab[7]; float sum1, sum2; int i, j, kol1, kol2;
cout< < ”введите массив а”; for (i=0; i< 5; i++) for (j=0; j< 7; i++) cin> > a[i][j];
for (i=0; i< 5; i++) { for (j=0; j< 7; j++) rab[j]=a[i][j];
cout< < ”\nsum1=”; p(rab, 7, 0.3, f1, sum1, kol1) if(kol1> 0) cout> > sum1; else cout> > ”нет”;
cout< < ”\nsum2=”; p(rab, 7, 0.2, f2, sum2, kol2) if(kol2> 0) cout> > ”\nsum2=”> > sum2; else cout> > ”нет”; getch(); }
|