Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Программирование с возвратом из функций нескольких значений




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

Для возврата значений из функции можно использовать два способа. Первый способ заключается в использовании глобальных переменных. Второй способ позволяет возвратить одно значение с помощью оператора return, а другие записать в ячейки памяти с указанными адресами. В последнем случае в функцию необходимо передать адреса ячеек, куда надо помес­тить значения. Это выполняется с помощью указателей.

Пример 1. Написать программу, функция в которой будет вычислять квадрат и куб аргумента. (Одно значение будем возвращать из функции оператором return, другое будет записываться по указателю int*.)

# include <stdio.h>

# include <iostream.h> // для потоковых функций ввода/вывода

int fun(int, int*); // прототип функции

void main()

{

int a, kub, qv;

cin>>a; // ввод из потока

qv=fun(a,&kub); //исходное число, адрес ячейки,

куда поместить второе значение

cout<<"для числа " << a<< "\t квадрат=" <<qv<<"\t куб=" <<kub; // вывод

}

int fun(int k, int* p)

{

*p=k*k*k; // значение куба помещаем по адресу *p

return k*k;

}

 

Пример2. Ввести три массива A[1..3], B[1..4], C[1..5] (подпрограммой). Вычислить средние арифметические и геометрические значения в каждом из них.

Для решения задачи pазpаботана СА (pис.11), состоящая из ос­новной программы (а) и двух подпрограмм: одной - для ввода элементов массива (б), другой - для определения среднего арифметического и среднего геометрического значений в массиве (в), а также следующая пpогpамма для реализации алгоритма:

#include <stdio.h>

#include <math.h>

#include <conio.h>


int vvod(int d[])

{

int i, k;

printf("Vvedite chislo elementov ");

scanf("%d",&k);

printf("Vvedite massiv is %d elementov \n", k);

for (i=0; i<k; ++i)

scanf("%d", &d[i]);

return k;

}

float sr(int k, int f[], double *g)

{

int i;

long int s, p;

s = 0; p = 1;

for (i = 0; i<k; ++i)

{

s += f[i]; // s = s + f[i];

p *= f[i]; // p = p * f[i];

}

*g = pow((double)p, 1.0/k);

return ((float)s)/k;

}

void main ()

{

int ka, kb, kc; double ga, gb, gc;

int a[5], b[5], c[5];

clrscr();

ka=vvod(a);

printf("srA = %5.2f \t ", sr(ka,a,&ga));

printf(" srGA = %5.2f \n", ga);

kb=vvod(b);

printf("srA = %5.2f \t ",sr(kb,b, &gb));

printf("srGB = %5.2f \n", gb);

kc=vvod(c);

printf("srA = %5.2f \t ",sr(kc,c, &gc));

printf("srGC = %5.2f \n", gc);

getch();

}

Задание 1 (программа 9_1)

Написать и отладить программу для задачи из лабораторной работы 7 с выделением алгоритма обработки или формирования массива. Организовать вызов процедуры с параметрами-массивами для двух наборов исходных данных. (Для ускорения отладки массив можно задать константой).

Задание 2 (программа 9_2)

1. Даны массивы A [1..6], B [1..6], C [1..6], вычислить суммы положительных и отрицательных элементов. Получить А*B, B*С, А*C. Вычисление произведения массивов оформить подпрограммой.

2. Даны массивы A [1..5], B [1..6]. Получить новые массивы путем сдвига элементов в массивах на два разряда вправо, освободившиеся слева элементы обнулить. Сдвиг элементов в массиве оформить подпрограммой, из подпрограммы вернуть выпавшие справа разряды.

3. Даны два одномерных массива А [1..6] и C [1..6]. Получить A2, С2, А*С. Подсчитать число четных и число нечетных чисел в полученных массивах. Перемножение массивов и подсчет выполнить в подпрограмме.

4. Даны матрицы целых чисел S[1..3,0..2], K[1..3,0..2], в которых имеется по два одинаковых числа. Найти и напечатать их значения и индексы.

5. Вычислить значение функции Z = x1+ex2, где x1, x2 - корни уравнения Aix2+Bix+Ci = 0, где i = 1,2,..,N. Коэффициенты уравнения заданы в массивах A [1..N], B [1..n], C [1..N]. Для вычисления корней использовать подпрограмму.

6. Составить подпрограмму для переменных двух квадратных матриц, с помощью которой вычислить вторую, третью и четвертую степени матрицы M [1..5,1..5]. Для каждой матрицы вычислить сумму и среднее арифметическое значение элементов.

7. Даны массивы A [1..6], B [1..6], C [1..6]. Преобразовать их, каждому элемен-ту массива, присваивая значение, соседнего с ним справа. Последнему элементу присвоить значение первого. Напечатать исходные, результирующие массивы и отдельно последние два элемента результирующего.

8. По заданным вещественным массивам A[1..6], B[1..6] и С[1..6] вычислить (minAi)/maxAi + (maxCi)/min(Ci) + max(B+C)I / min(B+C)i.

9. Даны массивы A [1..6], B[1..8]. Выбрать из них положительные элементы и записать соответственно в массивы A [1..k] и B [1..k], где k<6, n<8; из отрицательных элементов сформировать массивы A2 [1..6-k],B2 [1..8-n]. Напечатать суммы и произведения элементов для каждого.

10. Даны массивы A [1..6], B [1..6], C [1..6]. Переставить элементы в них таким образом, чтобы слева подряд были записаны отрицательные, а справа положительные, подсчитать количество положительных и число отрицательных в каждом массиве.

11. Даны две целые квадратные матрицы четного порядка. Элементы массивов с четными номерами строки и столбца заменить нулем (стереть). Напечатать исходные и полученные массивы, количество четных и число нечетных чисел в каждом.

12. Даны одномерные массивы A[1..6], B[1..8], C[1..10]. Записать их в виде матриц AA [1..3,1..2], BB [1..2,2..4], CC [1..5,1..2], найти наименьшие элементы в каждой и напечатать их номера.

13. Даны две целые квадратные матрицы шестого порядка. Распечатать элементы главных диагоналей каждой из них и вычислить суммы элементов отдельно главной и побочной диагоналей.

14. По заданным 10 элементам вещественных массивам A, B и С вычислить

15. Даны матрицы целых чисел V (-1..2,0..3), W [1..3,0..2]. Сформировать из них одномерные массивы VV и WW, записывая элементы построчно. Напечатать индексы исходных мартиц для максимальных значений.

16. Дана матрица чисел H [1..5,1..6]. Переставить элементы в строкам матрицы таким образом, чтобы они были расположены в порядке возрастания их модулей. Подсчитать сколько в исходных матрицах положительных и отрицательных чисел.

17. Дана матрица чисел G [1..2,1..6]. Переставить элементы в матрице так, чтобы элементы каждого столбца матрицы были смещены циклически вправо. Перестановку элементов в столбце реализовать подпрограммой, напечатать два «выпавших» элемента.

18. Даны массивы A [1..6], B [1..6], C [1..6]. Упорядочить элементы в них в порядке убывания их модулей, напечатать наименьшее и наибольшее значения.

19. Даны две матрицы целых чисел V [1..2,1..3], W [1..2,1..3]. Найти общие суммы элементов строк, из функции вернуть две суммы.

20. Даны две целые квадратные матрицы шестого порядка. Вычислить суммы элементов выше главной диагонали и ниже нее. Определить, можно ли отражением относительно главной диагонали преобразовать одну в другую.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных