Будь умным!


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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 20.5.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. Й ГЛАВЫ ВТОРОГО ПОСЛАНИЯ К СОЛУНЯНАМ 2я глава Второго послания к Солунянам содержащая учение апостол
3. shortges of price formtion price disprity price trends correcting of price policy Цены и ценообразование всегда оказывали большое влияние н
4. Смысл человеческого существования
5. Благотворительный фонд Счастливое будущее именуемый в дальнейшем
6. Основными дефектами коленчатого вала являются изгиб износ шатунных и коренных шеек износ отверстия под по
7. Каюров Юрий Иванович
8. прыжку А пока раздает автографы поклонницам в Челябинске Захар Прилепин готовится к прыжку
9. 2003 032004 К оглавлению Э
10. Фізична та колоїдна хімія Збірник задач
11. Биография и вклад в науку Н И Вавилова
12. . Общая харка фии экзистенциализма
13. Система натуральных чисел Принцип математической индукции Теоремы математической индукции
14. Российская урбанизация 1860-1914 годов в трудах отечественных историков
15. Да и для большинства религий характерно возвеличивание интуитивизма вкупе с принижением рационального мыш
16. Общество не вправе заключать контракт со смертью
17. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ К ВЫПОЛНЕНИЮ КОНТРОЛЬНЫХ РАБОТ для направления Юриспруденция При выполне
18. Социальная философия ЛН Толстого
19. социальной позиции Божович Л
20. Промтрактор28 2