Войти

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


toy
27-05-2010, 02:08
Помогите переделать вот этот кусок программы в С++ :

uses crt;
type vekt=array[1..20] of real;
matr=array[1..20] of vekt;
function Sred(v:vekt;x:byte):real;
var i:byte;

вообщем в Си не сильна...)
Само задание вот:
Составить функцию вычисления среднего арифметического элементов вектора. Используя её, преобразовать квадратную матрицу следующим образом: диагональные элементы матрицы заменить средними арифметическими значениями соответствующих строк.

и вот решение на паскале:
uses crt;
type vekt=array[1..20] of real;
matr=array[1..20] of vekt;
function Sred(v:vekt;x:byte):real;
var i:byte;
s:real;
begin {
s:=0; s=0;
for i:=1 to x do
s:=s+v[i];
Sred:=s/x;
end;

var a:matr;
n,i,j:byte;
begin
clrscr;
repeat
write('Размер матрицы от 2 до 20 n=');
readln(n);
until n in [2..20];
writeln('Введите ',n*n,' элементов матрицы:');
for i:=1 to n do
for j:=1 to n do
begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
clrscr;
writeln('Исходная матрица:');
for i:=1 to n do
begin {
for j:=1 to n do
write(a[i,j]:5:1);
writeln;
end
writeln;
for i:=1 to n do
a[i,i]:=Sred(a[i],n);
writeln('Результат:');
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:5:1);
writeln;
end;
readln
end.


Может быть кто-то знает как на С++ не ОПП реализовать? Или хотя бы тот кусочек?)

LilLoco
27-05-2010, 19:01
ну , если, я правильно понял задание то приблизительно получится вот так вот :


#include "stdafx.h"
#include "iostream"
using namespace std;


void main()
{
const int n = 20; //размер для вектора и массива
int vektor[n]; //объявление векотра
int matrix[n][n]; //объявление матрицы
int sum = 0; //переменная для нахождения среднего арифметического

cout << "Enter Elements of vektor";
for (int i = 0; i < n; i++)
{
cin >> vektor[i]; //заполняем вектор
sum = sum + vektor[i];
}
sum = sum/n; //это и есть среднее арифметическое
cout << "Enter Elements Of Matrix";
for ( int i = 0; i < n; i++)
{
for ( int j = 0; j < n; j++)
{
cin >> matrix[i][j]; //заполняем матрицу
}
}

for ( int i = 0; i < n; i++)
{
matrix[i][i] = sum; //элементы диагонали заменяем на среднее арифметическое
}
for (int i = 0; i < n; i++)
{
cout << "\n";
for (int j = 0; j < n; j++)
{
cout << matrix[i][j] << "\t"; //выводим матрицу на экран
}
}
}


З.Ы. Матрица и вектор - целочисленные...

toy
30-05-2010, 13:32
LilLoco LilLoco, спасибо большое только он как-то странно считает....

LilLoco
30-05-2010, 15:32
эм, в чем именно странность?

toy
31-05-2010, 01:01
она как-то странно считает... Я вот как понимаю задание: составить ф-ю вычисления среднего арифметического, затем с помощью нее найти ср. а. в каждой строке... т.е. если матрица 3Х3 то в первой строке будет заменяться первый элемент, во второй второй и в третьей третий соответственно.

К примеру первая строка выглядит так: 1 2 3 складываем все элементы, получаем 6 делим на 3 получаем 2, и затем заменяем 1 на 2. Т. е. получаем 2 2 3
Как - то так)

LilLoco
31-05-2010, 08:24
Ну вроде как в задании найти среднее арифметическое для вектора, а не матрицы :)

toy
31-05-2010, 15:42
в задание сказано составить функцию вычисления ср.а. для вектора и с помощью него преобразовать матрицу)) ведь каждая строка матрицы это и будет вектор :)

LilLoco
31-05-2010, 19:09
ммм, ну не правильно задание понял :) ну сделай из этого всего через функцию :)

toy
01-06-2010, 19:15
если бы я знала как... я задание-то понимаю, а что-то сделать из этого для меня огромная проблема(




© OSzone.net 2001-2012