Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_ПВМ.doc
Скачиваний:
5094
Добавлен:
21.02.2016
Размер:
2.79 Mб
Скачать

Тема 6-7. Составление программ решения задач с использованием функции.

Форма проведения: Решение задач.

Задание.В заданиях требуется реализовать процедуры или функции.

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

  1. Описать функцию Min2(A,B) вещественного типа, находящую минимальное из двух вещественных чисел A и B. С помощью этой функции найти минимальные из пар чисел A и B, A и C, A и D, если даны числа A, B, C, D.

  2. Описать функцию Fact(N) целого типа, вычисляющую значение факториала N! = 1·2·...·N (N > 0 — параметр целого типа). С помощью этой функции вычислить факториалы 10 данных чисел.

  3. Описать функцию Max(A,N) вещественного типа, находящую максимальный элемент массива A, состоящего из N вещественных чисел. С помощью этой функции найти максимальные элементы массивов A, B, C размера NA, NB, NC соответственно.

  4. Описать функцию NMin(A,N) целого типа, находящую номер минимального элемента массива A (массив состоит из N вещественных чисел). С помощью этой функции найти номера минимальных элементов массивов A, B, C размера NA, NB, NC соответственно.

  5. Описать процедуру NMinmax(A,N,NMin,NMax), находящую номера минимального и максимального элемента массива A из N вещественных чисел. Выходные параметры: NMin (номер минимального элемента) и NMax (номер максимального элемента). С помощью этой процедуры найти номера минимальных и максимальных элементов массивов A, B, C размера NA, NB, NC соответственно.

Методические рекомендации по проведению СРСП.

Контрольный пример 1. Даны квадратные матрицы А, B, С иDпорядкаn. Получить матрицу (А+В)*(С+D).

Контрольный пример 2. Написать программу, вычисляющую числа Фибоначчи. Числа Фибоначчи 0, 1, 1, 2, 3, 5, 8, 13, 21, … начинаются с 0 и 1 и имеют то свойство, что каждое последующее число Фибоначчи равно сумме двух предыдущих.

/* пример 1 */

#include <stdio.h>

#include <math.h>

#include <conio.h>

#define n 3

void input_matrix(int [n][n]);

void summa_matrix(int [n][n], int [n][n], int [n][n]);

void proiz_matrix(int [n][n], int [n][n], int [n][n]);

main ()

{

int a[n][n],c[n][n],b[n][n],d[n][n],ab[n][n],cd[n][n];

int ac[n][n], i, j;

clrscr();

printf("Enter matrix A:\n"); input_matrix(a);

printf("Enter matrix B:\n"); input_matrix(b);

printf("Enter matrix C:\n"); input_matrix(c);

printf("Enter matrix D:\n"); input_matrix(d);

summa_matrix(a, b, ab); summa_matrix(c, d, cd);

proiz_matrix(ab, cd, ac);

printf("Matrix (A+B)*(C+D):\n");

for (i=0;i<n;i++) { for (j=0;j<n;j++)

printf("%5d",ac[i][j]); printf("\n"); }

getch();

return 0;

}

for (j=0;j<n;j++)

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

void summa_matrix(int x[n][n], int y[n][n], int z[n][n])

{ int i,j;

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

for (j=0;j<n;j++)

z[i][j]=x[i][j]+y[i][j]; }

void proiz_matrix(int x[n][n], int y[n][n], int z[n][n])

{ int i,j,k,s;

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

for (j=0;j<n;j++)

{ s=0;

for (k=0;k<n;k++) s+=x[i][k]*y[k][j];

z[i][j]=s; } }

void input_matrix(int x[n][n])

{ int i, j;

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

/* пример 2 */

#include <stdio.h>

#include <math.h>

#include <conio.h>

long fibonacci(long);

main ()

{long result, number;

clrscr();

printf("Enter an integer: ");

scanf("%ld", &number);

result=fibonacci(number);

printf("Fibonacci(%ld) = %ld\n", number, result);

getch();

return 0; }

long fibonacci(long n)

{ if (n==0 || n==1)

return n;

else

return fibonacci(n-1)+fibonacci(n-2);

}

Контрольный пример 3. Дано целое число n. Проверить, является ли оно простым.

Контрольный пример 4. Даны действительные числа u1, u2,w1,w2. Получить, гдеu,w– комплексные числаu1+iu2,w1+iw2(Определить процедуру вычисления суммы комплексных чисел).

/* пример 3 */

#include <stdio.h>

#include <math.h>

#include <conio.h>

int prost(int );

main ()

{

int n;

clrscr();

printf("Enter number:\n");

scanf("%d", &n);

if (prost(n)==1) printf("Number %d is prostoe",n);

else printf("Number %d not is prostoe",n);

getch();

return 0;

}

int prost(int k)

{

int i, j = 1;

for (i=2;i<k-1;i++)

if (k % i == 0) { j=0; break;}

return (j);

}

/* пример 4 */

#include <stdio.h>

#include <math.h>

#include <conio.h>

void summa(int *, int *, int *, int *, int *, int *);

main ()

{

int u1, u2, w1, w2, v1, v2;

clrscr();

printf("Enter u1:\n"); scanf("%d",&u1);

printf("Enter u2:\n"); scanf("%d",&u2);

printf("Enter w1:\n"); scanf("%d",&w1);

printf("Enter w2:\n"); scanf("%d",&w2);

summa(&u1, &u2, &w1, &w2, &v1, &v2);

printf("%d %d", v 1, v2);

getch();

return 0;

}

void summa(int *a, int *b, int *c, int *d, int *e, int *f)

{

*e=*a+*c;

*f=*b+*d;

}