Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






П о я с н е н и я к э к з а м е н а ц и о н н о й з а д а ч е

Условие задачи записано в двух абзацах:

- в первом абзаце приводится описание подпрограммы Р, которую надо разработать;

- во втором абзаце приводится задание, для выполнения которого надо использовать разработанную подпрограмму.

 

Первый абзац

В описании подпрограммы Р фигурирует некоторая функция 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)

Вид данного Обозна-чение Смысл Тип Лримечание
Параметры, передаваемые в подпрограмму X Заданный одномерный массиввещественных чисел float  
n Кол-во элементов массива Х int  
C Заданная величина float  
F Вещественная функция одного вещественного аргумента void  
Результаты S Сумма элементов массива x, для которых f(x[k]) > c float  
kol Кол-во элементов массива x, для которых f(x[k]) > c int  
Промежуточные данные k Номер текущего эл-та массива х int  

PS.

Таблица данных для void main()

Вид данного Обозна-чение Смысл Тип Примечание
Исходные данные (ИД) a Матрица вещественных чисел float  
Результирующие Данные (РД) sum1 Сумма элементов текущей строки, синус которых больше 0.3 float  
sum2 Сумма элементов текущей строки, косинус которых больше 0.2 float  
Промежуточ-ные данные Rab Рабочий массив для хранения текущей строки float  
Kol1 Кол-во элементов текущей строки, синус которых больше 0.3 Int  
Kol2 Кол-во элементов текущей строки, косинус которых больше 0.2 Int  
i Номер текущей строки матрицы а Int  
j Номер текущего столбца матрицы а int  

Некоторые замечания

- в условии задачи явно не указано, что необходимо найти количество элементов строки, для которых синус больше, чем 0.3 или количество элементов, для которых косинус больше, чем 0.2. Но это приходится делать, чтобы определить есть ли такие элементы в строке.

4)Алгоритмы

Для функции P для функции main:
Начало s: =0 kol: =0 для k от 0 до (n-1) шаг 1 цикл если (f(x[k]) < c) то s: = s+ x[k] kol: = kol +1 конец если конец цикла конец   Начало ввод c ввод массива (ai, j, i: =1, …, 5, j: =1, …, 7) для i от 1 до 5 шаг 1 цикл перепись i -ой строки в массив rab вычисление sum1, kol1 { p(rab, 7, 0.3, f1, sum1, kol1) } если (kol1 > 0) то вывод sum1 иначе вывод ‘ нет ’ конец_если вычисление sum2, kol2 { p(rab, 7, 0.2, f2, sum2, kol2) } если (kol2 > 0) то вывод sum2 иначе вывод ‘ нет ’ конец_если конец_цикла конец
Для функции f1= sin(z)
Для функции f2=cos(z)

#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();

}

 

<== предыдущая лекция | следующая лекция ==>
Механизм экономического роста | Обеспечение безопасности участников и зрителей. проведения Забега с препятствиями Выжить_Вместе




© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.