Главная » Статьи » Задачи из заказов » Заказ 09.11.07 |
Написать и протестировать функцию для сложения и вычитания вещественных матриц.
// 3.26 // Написать и протестировать функцию для сложения и вычитания вещественных // матриц. Одним из формальных параметров должен быть признак вида операции #include <stdio.h> #include <conio.h> #include <stdlib.h> float *creatematrix(int n) { float* a = (float*)malloc(n * n * sizeof(float)); return a; } void randmatrix(float *a, int n) { int i, j; for (i = 0; i < n; i++) for (j = 0; j < n; j++) *(a + i * n + j) = rand(); } void inputmatrix(float *a, int n) { int i, j; for (i = 0; i < n; i++) for (j = 0; j < n; j++) { printf("[%d, %d] = ", i, j); scanf("%f", a + i * n + j); } } void printmatrix(float *a, int n) { int i, j; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) printf("%f ", *(a + i * n + j)); printf("\n"); } } int func(float *a, float *b, int op, float *c, int n) { if (op != 1 && op != 2) return -1; int i, j; for (i = 0; i < n; i++) for (j = 0; j < n; j++) if (op == 1) *(c + i * n + j) = *(a + i * n + j) + *(b + i * n + j); else *(c + i * n + j) = *(a + i * n + j) - *(b + i * n + j); return 0; } void main() { clrscr(); int n, op; float *a , *b, *c; char ans; printf("Vvedite n: "); scanf("%d", &n); a = creatematrix(n); b = creatematrix(n); c = creatematrix(n); printf("Vvod matrici a:\n"); printf("Vruchnuyu? (Y/N): \n"); ans = getch(); printf("%c\n", ans); if (ans == 'Y' || ans == 'y') inputmatrix(a, n); else randmatrix(a, n); printf("Vvod matrici b:\n"); printf("Vruchnuyu? (Y/N): \n"); ans = getch(); printf("%c\n", ans); if (ans == 'Y' || ans == 'y') inputmatrix(b, n); else randmatrix(b, n); printf("Vibor operacii:\n1. slogenie\n2. vichetanie\n"); scanf("%d", &op); if (func(a, b, op, c, n) != -1) { printf("Matrica A: %s\n"); printmatrix(a, n); printf("Matrica B: %s\n"); printmatrix(b, n); printf("Resultat raboti functii: %s\n"); printmatrix(c, n); } else printf("Nekorektno vvedennie dannie!\n"); getch(); free(a); free(b); free(c); } | |
Категория: Заказ 09.11.07 | Добавил: solver (09.11.2007) | |
Просмотров: 1162 |