Тема: Алгоритмическое описание, составление программ обработки двумерного массива.



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

Задание. Задав двумерный массив вещественных данных (матрицу А), реализовать его обработку, как указано в варианте. Исходные данные задать самостоятельно, учитывая специфику задачи. Составить блок-схему алгоритма и написать программу.

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

1. Дано число k (0 < k < 11) и матрица размера 4 x 10. Найти сумму и произведение элементов k-го столбца данной матрицы.

2. Дана матрица размера 5 x 9. Найти суммы элементов всех ее четных столбцов.

3. Дана матрица размера 5 x 10. Найти минимальное значение в каждом столбце.

4. Дана матрица размера 5 x 10. В каждой строке найти количество элементов, больших среднего арифметического всех элементов этой строки.

5. Дана матрица размера 5 x 10. Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке.

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

Контрольный пример 1. Дан массив А(10, 10). В области, лежащей не выше главной диагонали, определить минимум, а в области, лежащей не выше побочной диагонали, сумму элементов. Присвоить минимальному элементу полученное значение суммы.

Контрольный пример 2. По матрице А(20, 20) построить массив В(20), присвоив В(I) значение 1, если в строке с номером I матрицы А число положительных элементов не меньше числа отрицательных, и значение 0 – в противном случае.

Контрольный пример 3. По матрице А(20, 20) построить массив В(20) по правилу: В(J) присвоить 1, если в столбце с номером J матрицы А есть хотя бы один отрицательный элемент, и значение 0 – в противном случае.

Контрольный пример 4. По матрице А(10, 10) построить массив В(10) по правилу: В(1) равен сумме элементов главной диагонали, В(2) – сумме элементов диагонали, лежащей ниже главной и параллельно ей и т.д.

 

/* пример 3 */ #include <stdio.h> #include <conio.h> # define n 20 main() { int i, j, a[n][n], b[n]; clrscr(); for(i=0; i<n; i++) for(j=0; j<n; j++)      scanf(“%d”, &a[i][j]); for(j=0; j<n; j++) { b[j]=0;     for(i=0; i<n; i++)         if (a[i][j]<0)             { b[j]=1; break; }} for(i=0; i<n; i++)   printf(“%3d”, b[i]); getch(); return 0; } /* пример 4 */ #include <stdio.h> #include <conio.h> # define n 10 main() { int i, j, s, k, a[n][n], b[n]; clrscr(); for(i=0; i<n; i++) for(j=0; j<n; j++)      scanf(“%d”, &a[i][j]); for(j=0; j<n; j++) { s=0;     for(i=j; i<n; i++)        s+=a[i][i-j];     b[j]=s; } for(i=0; i<n; i++)   printf(“%3d”, b[i]); getch(); return 0; }

 

 

Задание № 6 (СРСП)

 

срок сдачи: 7 неделя, 5 баллов

 (согласно Графику выполнения и сдачи СРС и Графику проведения и содержания СРСП )

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

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

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

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

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; }

 


 Задание № 7 (СРСП)

 

срок сдачи: 10 неделя, 5 баллов

 (согласно Графику выполнения и сдачи СРС и Графику проведения и содержания СРСП )

 


Дата добавления: 2018-06-01; просмотров: 293; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!