50164

Программирование задач с использованием функций пользователя, выдающих один и несколько результатов

Лабораторная работа

Информатика, кибернетика и программирование

Вы можете написать свои функции и затем использовать их так же как функции из библиотек языка С или С. Собственные функции помещаются после закрывающей фигурной скобки min. Каждая функция имеет структуру аналогичную структуре функции min. Функцию можно вызвать из любого места программы в том числе из другой функции.

Русский

2014-01-17

58.5 KB

6 чел.

Лабораторная Работа № 13

Тема: Программирование задач с использованием  функций пользователя, выдающих один и несколько результатов.

Цель: Овладение навыками алгоритмизации и программирования задач с использованием подпрограмм пользователя. Овладение навыками написания подпрограмм и обращения к ним, выбор параметров подпрограмм.

Теоретические сведения:

Приступая к решению задач на предложенную тему, следует вспомнить, что:

  •  Функцией называется выделенная последовательность инструкций, предназначенных для решения определенной задачи. Вы можете написать свои функции и затем использовать их так же, как функции из библиотек языка С или С++.
  •  Собственные функции помещаются после закрывающей фигурной скобки main(). Каждая функция имеет структуру, аналогичную структуре функции main().
  •  Функцию можно вызвать из любого места программы, в том числе, из другой функции. Инструкция return(0);  в теле функции всегда передает управление инструкции, следующей за вызывом функции.
  •  Если компилятор С следует стандарту ANSI, вы должны указать тип функции даже в том случае, если функция не возвращает никаких значений. При этом тип определяется как void. Эта информация говорит компилятору, что функция не будет возвращать вызывающей функции никакого значения. В С++ введение ключевого слова void  является не обязательным, но желательным.
  •  Для передачи данных в функцию надо использовать только параметры. Глобальные переменные, то есть переменные, объявленные вне функции, использовать не рекомендуется.
  •  Тип каждого фактического параметра (константы или переменной) в инструкции вызова функции должен совпадать с типом соответствующего формального параметра, указанного в объявлении функции.
  •  Если параметр функции используется для возврата результата, то в объявлении функции этот параметр должен быть ссылкой, а в инструкции вызова функции в качестве фактического параметра должен быть указан адрес переменной.
  •  При работе с компиляторами языка С++(и некоторыми С - компиляторами) желательно начинать программу с прототипов функций. Прототип – это строка определения функции, повторенная в начале программы перед main(). Прототип сообщает компилятору типы и количество аргументов тех функций, которые будут использованы в программе.

Пример: 

Написать функцию, обеспечивающую решение квадратного уравнения. Параметрами функции должны быть коэффициенты и корни квадратного уравнения. Значение, возвращаемое функцией, должно передавать в вызывающую программу информацию о наличии  у  уравнения корней: 2 – два разных корня, 1 – корни одинаковые, 0 – уравнение не имеет решения. Кроме того, функция должна проверять корректность исходных данных. Если исходные данные не верные, то функция должна возвращать -1.

Тексты программы:

#includ<stdio.h>

#includ<conio.h>

#includ<math.h>

// тело функции

int kvadur(float a, float b, float c, float *x1,float *x2) //коэф. уравнения, корни уравнения

// значение функции – количество корней

// или -1, если неверные исходные данные

{

float d; // дискриминант 

if (a==0) return(-1);

d=b*b-4*a*c;

if(d<0)

return(0); // уравнение не имеет решения

*x1=(-b+sqrt(d))/(2*a);

*x2=(-b-sqrt(d))/(2*a);

if (*x1!=*x2) return(2);

   else return(1);

}

 // проверка работоспособности функции

void main()

{

float a,b,c; // коэффициенты уравнения

float x1,x2; // корни уравнения

int n; // количество корней

puts(“Введите коэффициенты”);

scanf(“%f%f%f”,&a,&b,&c);

switch (kvadur(a,b,c,&x1,&x2))

{

case -1: puts(“Ошибка исходных данных”);

             break;

case 0: puts(“Уравнение не имеет решения”);

            break;

case 1: printf(“Корни одинаковые: x=%3.2f”,x1);

           break;

case 2:  printf(“ x1=%3.2f x2=%3.2f”,x1,x2);

}

getch();

}

Варианты заданий: 

Выполнить задание согласно варианту:

Вариант задания

Условия задачи

Примечания

1

Подсчитать число точек, находящихся внутри круга радиусом r с центром в начале координат; координаты заданы массивами X(10), Y(10).

Расстояние точки от начала координат вычислять в подпрограмме.

2

Определить периметры треугольников, заданных координатами их вершин XA(5), XB(5), XC(5)

                                            YA(5), YB(5), YC(5).

Длину стороны треугольников вычислять в подпрограмме.

3

Вычислить z=(v1+v2+v3)/3,  где v1, v2, v3 –объем шаров с радиусами r1, r2, r3 соответственно.

Vi – вычислять в подпрограмме.

4

Вычислить суммы положительных элементов массивов x(n), y(m), z(k).

n<=5

m<=5

k<=5

5

Вычислить среднее арифметическое положительных элементов для массивов a(n1),b(n2), c(n3).

n1<=5

n2<=5

n3<=5

6

Подсчитать количество элементов матриц x(5,5) и y(4,6), удовлетворяющих условию 0<=xij<=1 и 0<=yij<=1

7

Вычислить суммы положительных элементов каждой строки для матриц a(4,5) и b(5,6).

8

Вычислить суммы элементов главных диагоналей матриц a(n,n)  и b(m,m).

n<=5

m<=5

9

Вычислить z=(s1+s2)/2,  где s1 – сумма положительных элементов массива x(5); s2 – сумма отрицательных элементов массива y(6).

Обе суммы вычислять в одной подпрограмме.

10

Подсчитать число нулевых элементов для матриц a(4,5) и b(5,6).

11

Вычислить суммы элементов нижних треугольных матриц для матриц a(n,n)  и b(m,m).

n<=5

m<=5

12

Определить число положительных элементов до первого отрицательного в массивах x(4), y(5), z(7).

13

Вычислить z=(xm1+xm2)/2, где xm1 и xm2  - наименьшие элементы массивов x1(12) и  x2(15).

14

Переписать положительные элементы массива x(10) и y(14) в массив z подряд.

Запись в массив z осуществлять в подпрограмме.

15

Найти наименьшие элементы и номера строк и столбцов, в которых они расположены, для матриц a(4,5) и b(5,6).

Контрольные вопросы:

  1.  В чем заключаются различия между библиотечными функциями языка С и функциями, которые вы пишите сами?
  2.  Всегда ли вызов функции осуществляется из функции main()?
  3.  Чем отличаются формальные и фактические параметры?
  4.  Что происходит, когда заканчивается выполнение функции?
  5.  Как объявляются глобальные и локальные переменные? Каково правило видимости этих переменных?
  6.  Объясните разницу между автоматическими и внешними переменными?
  7.  Как передать значение функции?
  8.  Как получить значение от функции?

    

Содержание отчета:

  1.  Краткие теоретические сведения.
  2.  Схемы алгоритмов.
  3.  Тексты составленных программ.
  4.  Протоколы к составленным программам.
  5.  Вывод о проделанной работе.


 

А также другие работы, которые могут Вас заинтересовать

21484. Операционный риск в соответствии с соматическим состоянием больного и тяжестью оперативного вмешательства 47 KB
  В отношении общехирургических больных в большинстве хирургических учреждений нашей страны и за рубежом принят рутинный комплекс предоперационного обследования позволяющий выявить нераспознанные заболевания способные осложнить течение общей анестезии операции и послеоперационного периода: общий анализ крови мочи биохимический анализ крови содержание глюкозы общего белка мочевины креатинина билирубина определение группы крови и резусфактора ЭКГ и рентгенография органов грудной клетки. Обязательным элементом предоперационной...
21485. ПОКАЗАНИЯ К НЕОТЛОЖНОЙ ПОМОЩИ У ОБОЖЖЕННЫХ 187 KB
  положительных высевов из крови вторичных септических очагов что подтверждает примат метаболических нарушений в патогенезе развития осложнений при тяжелом ожоговом поражении.ЛЕЧЕНИЕ ОЖОГОВОГО ШОКА Принципиальным направлением в лечении гиповолемического ожогового шока в первые часы является двуединая задача: восполнение объема циркулирующей крови с одновременной регидратацией интерстициального пространства что достигается интенсивным введением глюкозосолевых растворов. На фоне проводимой инфузионной терапии должна выполняться базовая...
21486. Категорії моральної свідомості і моральної самосвідомості 97.5 KB
  Вони виражають особливість моральнісного життя суспільства, особистості і виступають критерієм оцінки самих різноманітних вчинків, оскільки синтезують знання про реальність моральнісного життя з одного боку і бажане й належне з іншого. В історії філософії першу систему категорій запропонував Аристотель. Категорії тлумачились ним, як форми і структури упорядкування буття і найзагальніші ідеї
21487. Правовые и этические проблемы анестезиологии и реанимации 35 KB
  Для осущетсвления своевременной и полной коррекции метаболических сдвигов необходимы следующие мероприятия: общий анализ крови и мочи определение ЦВД исследование сыворотки крови на калий натрий хлориды осмотичность цельной крови на рО2 рСО2 рН азот мочевины гематокрит глюкозу. Из обычных лабораторных показателей наиболее показательны данные красной крови Эр Нв Нt и показатели общего белка. Если показатели красной крови свидетельствуют о явлениях гемоконцентрации необходимо стремиться к снижению этих показателей то уровень...
21488. ПРАКТИЧЕСКИЕ РЕКОМЕНДАЦИИ ДЛЯ ПРОВЕДЕНИЯ СЕАНСОВ ГБО ПРИ НЕКОТОРЫХ КРИТИЧЕСКИХ СОСТОЯНИЯХ 46.8 KB
  В процессе проведения компрессии обычно наблюдается увеличение сукровичного пятна на повязках связанное с усилением оттока раневого отделяемого. Для осущетсвления своевременной и полной коррекции метаболических сдвигов необходимы следующие мероприятия: общий анализ крови и мочи определение ЦВД исследование сыворотки крови на калий натрий хлориды осмотичность цельной крови на рО2 рСО2 рН азот мочевины гематокрит глюкозу. Из обычных лабораторных показателей наиболее показательны данные красной крови Эр Нв Нt и показатели...
21489. ПРОЕКТ ПРОТОКОЛА ЛЕЧЕНИЯ БОЛЬНЫХ С ЧЕРЕПНО-МОЗГОВОЙ ТРАВМОЙ 56.5 KB
  Основной Целью данного протокола является улучшение результатов лечения больных с ЧМТ за счет внедрения в практику наиболее эффективных методик лечения данной категории больных. Одним из основных критериев адекватности терапии является качество жизни (уровень социальной адаптации) пациента после выписки из стационара. Параллельно с основной цепью предполагается решение следующих задач...
21490. Побудова і технологічне планування приміщень магазинів 55.69 KB
  Торгові приміщення є основними в магазині. До таких приміщень відносяться: торгові зали магазинів; відділ замовлень; зал кафетерію; приміщення або площі додаткового обслуговування покупців (місця відпочинку покупців, приміщення для розкрою тканин і ін.).
21491. Реаниматологическая помощь при термической травме 21 KB
  При комбинированной травме показаниями к проведению ВЧВВ легких через микротрахеостому у таких пострадавших должны быть: 1) поражение дыхательных путей продуктами горения легкой степени + ожог верхних дыхательных путей
21492. СЕПСИС И СЕПТИЧЕСКИЙ ШОК 120 KB
  Кандидат медицинских наук старший преподаватель подполковник медицинской службы Журавлев В.:Медицина1991. 5 2Введение Сепсис остается сложной медицинской проблемой и на се годняшний день продолжает быть одной из ведущих причин ле тальности несмотря на современные открытия в патогенезе этого заболевания и принципах его лечения.