Регистрация: 22.05.2022
Сообщений: 5
|
Язык СИ. Двумерный массив и функция
Здравствуйте! Дана программа написанная в языке Си "Операции с двумерными массивами. Функции." и необходимо его дополнить по заданию (см.фото). Место для работы я выделил. В разделе ОБРАБОТКА (в конце программы) пишется код по которому находится значение (там таких 2 - №5, №6). А для вывода значений пишется в разделе ПУНКТ 4. ЗАВЕРШЕНИЕ - 'ВЫВОД ДАННЫХ И РЕЗУЛЬТАТ', место тоже выделил. Все обработки пишется через функции VOID.
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <locale.h>
#define N 10 //МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ РАЗМЕРНОСТЬ МАТРИЦЫ
void vvod_rnd(float,float,float[][N],int);
void vivod(float[][N],int,char*);
void vvod_d(float x[][N],float y[][N],float z[][N],float g[][N],int);
void vvod_hands(float[][N],int);
void main()
{
int v;
float A[N][N],B[N][N],C[N][N],D[N][N]; int n,p=0;
srand(time(NULL));
setlocale(LC_ALL, "Rus");
///==================================//ОСНОВНОЕ МЕНЮ ПРОГРАММЫ\\===================================///
char ch;
do
{
system("cls");
printf("+===================================================================================================+ \n");
printf("| Добро пожаловать, дорогой пользователь! Нажимите на кнопку от F1 до F4 для нужного пункта > | \n");
printf("+===================================================================================================+ \n");
printf("| F1: 'Начало - 'Ввод исходных данных'' | \n");
printf("| F2: 'Обработка данных' | \n");
printf("| F3: 'Завершение - 'Вывод на экран исходной строки и полученной в результате обработки'' | \n");
printf("| Esc: 'Выход из программы' | \n");
printf("+===================================================================================================+ \n");
ch=getch();
if (ch == 0) ch = getch();
switch(ch)
//=========================================\\КОНЕЦ//===============================================//
///==========================//ПУНКТ 2. НАЧАЛО - 'ВВОД ИСХОДНЫХ ДАННЫХ'\\===========================///
case 59:
system("cls");
printf("+===================================================================================================+ \n");
printf("| Пункт 2. Начало - 'Ввод исходных данных' | \n");
printf("+===================================================================================================+ \n");
{
printf("Выберите режим ввода матрицы? Кнопка 1 - ввод с клавиатуры, 2 - случайная генерация\n");
scanf("%d",&v);
if(v==2) //случайная генерация RANDOM
{
printf("Введите размерность массива(%d)=",N);
scanf ("%d",&n);
//ввод матрицы A, B, C, D
vvod_rnd(6,8,A,n);
vvod_rnd(-8,2,B,n);
vvod_rnd(-15,4,C,n);
vvod_d(A,C,D,B,n);
p=1;
getch(); break;
}
if(v==1) //ввод с клавиатуры
{
printf("Введите размерность массива(%d)=",N);
scanf ("%d",&n);
//ручной ввод матрицы A, B, C, D
vvod_hands(A,n);
vvod_hands(B,n);
vvod_hands(C,n);
vvod_d(A,C,D,B,n);
p=1;
getch(); break;
}
if(v<1||v>2) //ввод другой кнопки
{
printf("Ошибка! Попробуйте еще раз");
getch(); break;
}
}
//==========================================\\КОНЕЦ//==============================================//
///=================================//ПУНКТ 3. ОБРАБОТКА ДАННЫХ\\===================================///
case 61:
system("cls");
printf("+===================================================================================================+ \n");
printf("| Пункт 3. Обработка данных | \n");
printf("+===================================================================================================+ \n");
if (p==1)
{
//вывод матрицы A, B, C, D
vivod(A,n,"\n Матрица A\n");
vivod(B,n,"\n Матрица B\n");
vivod(C,n,"\n Матрица C\n");
vivod(D,n,"\n Матрица D\n");
}
else
printf("\n Матрицы не введены. Вернитесь к пункту 1 (F2)!");
getch(); break;
///==========================//ПУНКТ 4. ЗАВЕРШЕНИЕ - 'ВЫВОД ДАННЫХ И РЕЗУЛЬТАТ'\\===========================///
case 62:
system("cls");
printf("+===================================================================================================+ \n");
printf("| Пункт 4. Завершение - 'Вывод на экран исходной строки и полученной в результате обработки' | \n");
printf("+===================================================================================================+ \n");
if (p==1)
{
...
//тесктовое сообщение о нахождении необходимых значений
...
}
else
printf("\n Матрицы не введены. Вернитесь к пункту 1 (F2)!");
getch(); break;
}
}
while (ch != 27);
}
//+++++++++++++++++++++++++++++//ОБРАБОТКА\\+++++++++++++++++++++++++++++//
//==================//1. ВВОД МАСТРИЦЫ ПРИ ПОМОЩИ RANDOM\\==================//
void vvod_rnd(float xn,float xk,float x[][N],int size)
{
int i,j;
for (i=0; i<size;i++)
for (j=0; j<size;j++)
x[i][j]=xn+(xk-xn+1)*rand()/RAND_MAX;
}
//==================//2. ВЫВОД МАТРИЦ НА ЭКРАН\\==================//
void vivod(float x[][N],int size,char*st)
{
int i,j;
printf("%s",st);
for (i=0;i<size;i++)
{
for (j=0; j<size;j++)
printf("%8.2f",x[i][j]);
printf("\n");
}
}
//==================//3. НАХОЖДЕНИЕ МАТРИЦЫ D\\==================//
void vvod_d(float x[][N],float y[][N],float z[][N],float g[][N],int size)
{
int i,j,k;
for (i=0; i<size;i++)
for (j=0; j<size;j++)
{
z[i][j]=0;
for (k=0; k<size;k++)
z[i][j]+=x[i][k]*y[k][j];
z[i][j]-=g[i][j];
}
}
//==================//4. ВВОД МАТРИЦЫ ПРИ ПОМОЩИ КЛАВИАТУРЫ\\==================//
void vvod_hands(float x[][N],int size)
{
int i,j;
for(i=0;i<size;i++)
for(j=0;j<size;j++)
{
printf("Элемент матрицы[%d,%d]:",i,j);
scanf("%f",&x[i][j]);
}
}
//===========//5. НАХОЖДЕНИЕ МИНИМАЛЬНОГО ЗНАЧЕНИЯ МАТРИЦЫ 'C'\\============//
... /// > НЕОБХОДИМО ЗАПОМНИТЬ
//============//6. ПОВОРОТ МАТРИЦЫ 'D' ПРОТИВ ЧАСТОВОЙ СТРЕЛКИ\\============//
... /// > НЕОБХОДИМО ЗАПОМНИТЬ
|