PDA

Показать полную графическую версию : матрицы


mego4el
07-10-2010, 21:17
Добрый вечер. Ув. форумчане пожалуйста помогите решить задачу по программированию, на тему: матрицы.

Условие:
Дано действительную квадратную матрицу порядка n. Получить новую матрицу путем замены элементов, сумма индексов которых четная на среднее геометрическое модулей элементов, находящихся на главной диагонали.

необходимо написать код на С++, пожалуйста помогите это сделать, не могу понять как правильно записать последовательность действий.(((

Hector
07-10-2010, 22:34
#include "stdafx.h"
#include "locale.h"
#include "stdio.h"
#include "math.h"

const int N=4; // порядок матрицы 3х3

int inp(float matr[N][N]) // ввод матрицы
{
int i, j;
for (i=1; i<=N-1; i++)
for (j=1; j<=N-1; j++)
{
printf("\n[%d.%d]=",i,j);
scanf("%f",&matr[i][j]);
}
return 0;
}

int out(float matr[N][N]) // вывод матрицы
{
int i, j;
for (i=1; i<=N-1; i++)
{
for (j=1; j<=N-1; j++)
printf("%.2f ",matr[i][j]);
printf("\n");
}
return 0;
}


int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "rus"); // вывод русских символов в консоль
float A[N][N];
printf("Введите значения для матрицы А:\n");
inp(A);
printf("\nВы ввели:\n\nМатрица А:\n");
out(A);
int h, g;
float srGem=1;
// находим средне-геометрическое элементов главной диагонали
for (h=1; h<=N-1; h++)
srGem=srGem*abs(A[h][h]);
srGem=sqrt(srGem);
// итоговая обработка матрицы
for (h=1; h<=N-1; h++)
for (g=1; g<=N-1; g++)
if ((h+g)%2==0)
A[h][g]=srGem;
printf("\nМатрица A после обработки:\n");
out(A);
return 0;
}

LilLoco
07-10-2010, 23:19
const int N=4; » - Матрица 3*3????оО

mego4el
07-10-2010, 23:27
Hector, спасибо большое!


ничего же не должно поменяться если я изменю размеры матрицы до 10х10?

выдает ошибку:

c:\program files\microsoft visual studio\myprojects\ll\ff.cpp(1) : fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directory
Error executing cl.exe.

Hector
07-10-2010, 23:57
LilLoco, что тебя смущает?
mego4el, в принципе не должно. насчет c:\program files\microsoft visual studio\myprojects\ll\ff.cpp(1) : fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directory
Error executing cl.exe. »
вроде не может найти stdafx.h

LilLoco
08-10-2010, 07:37
LilLoco, что тебя смущает? »

Ну вроде как при N = 4, Матрица Matr[N][N] не будет матрицей с размерностью 3*3!или мне кажется?оО

lxa85
08-10-2010, 08:18
LilLoco, массив позволит вместить в себя матрицу размером 3x3. Т.е. памяти будет задействовано больше, но ошибки не возникнет.
А вообще в дебагере надо посмотреть.

LilLoco
08-10-2010, 10:52
Ошибки то не будет, но матрица то будет при этом содержать 4*4 элементов!А я говорю просто про комментарий, в котором написано, что N = 4 - это порядок матрицы 3*3!Этим и с толку сбить можно же!




© OSzone.net 2001-2012