Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Вектор и матрица (http://forum.oszone.net/showthread.php?t=176676)

toy 27-05-2010 02:08 1421946

Вектор и матрица
 
Помогите переделать вот этот кусок программы в С++ :

Код:

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 1422384

ну , если, я правильно понял задание то приблизительно получится вот так вот :

Код:

#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 1423938

LilLoco LilLoco, спасибо большое только он как-то странно считает....

LilLoco 30-05-2010 15:32 1424009

эм, в чем именно странность?

toy 31-05-2010 01:01 1424366

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

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

LilLoco 31-05-2010 08:24 1424446

Ну вроде как в задании найти среднее арифметическое для вектора, а не матрицы :)

toy 31-05-2010 15:42 1424701

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

LilLoco 31-05-2010 19:09 1424830

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

toy 01-06-2010 19:15 1425423

если бы я знала как... я задание-то понимаю, а что-то сделать из этого для меня огромная проблема(


Время: 18:19.

Время: 18:19.
© OSzone.net 2001-