У вас вопросы?
У нас ответы:) SamZan.net

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

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 26.12.2024

П О Я С Н Е Н И Я    К      Э К З А М Е Н А Ц И О Н Н О Й     З А Д А Ч Е

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

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

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

Первый абзац

   В описании подпрограммы Р фигурирует некоторая функция f, о которой известно следующее: а)она  зависит от одного аргумента,  в)тип этого аргумента,  с) тип самой функции. Имя функции f должно быть среди формальных параметров  подпрограммы Р.  Подпрограмма Р  не должна содержать операторов ввода и вывода.  В ней должны производиться  те и только те действия  и  над теми объектами,  которые указаны в описании подпрограммы (т.е. в первом абзаце). В процедуре Р должен обрабатываться только одномерный массив (или два одномерных массива).  Не "перетягивайте" в подпрограмму Р матрицу и действия, которые не описаны в первом абзаце.

Второй абзац

Надо внимательно прочитать второй абзац и определить какие функции будут использоваться в качестве фактических при обращении к подпрограмме Р. Это могут быть функции, реализующие sin(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();

   }




1. Франклінізація і аероіонотерапі
2. Обряд Харакири
3. Реферат- Правила безопасного поведения в толпе
4. Тема VII Смутное время Нарушив старину грубо поправ казавшиеся безусловными обычаи растеряв во время
5. Чинники успішного працевлаштування за фахом
6. тема информационная система предприятия общества государства и т
7. Состав арбитражного суда
8.  Как назначаются и нумеруются ориентиры для управления огнем Для управления огнем старшим командиром назн
9. специалиста честности неподкупности верности духу и букве закона соблюдения равенства всех перед законом
10. 228780 b s IyIz
11. leder 2 ccept 3 crzy 4 delighted 5 freeze 6 hero 7 t lst 8 disguise 9 tke off 10 reson chief deny
12. Мой первый вернисаж которая открылась в библиотеке имени Д
13. Социально-психологическая поддержка учащихся в образовательном пространстве.html
14. Системная концепция обеспечения безопасности объектов
15. Сочинение- Творческий путь Жоржа Сименона
16. Перерождение Посвящается моим детям.
17.  Российская Федерация ~ светское государство
18. Современные психолого-педагогические технологии обучения.html
19. Теоретические основы изучения проблемы метода сценариев при разработке управленческих решений [3
20. Преобразование Фурье