Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2013, 20:06   #1
Markodius
Новичок
Джуниор
 
Регистрация: 14.06.2013
Сообщений: 3
По умолчанию

Часть кода рабочая и она не имеет отношения к сути проблемы.
Задача
Цитата:
Нужно сформировать двухмерный массив чисел, и за вектор массива Х взять тот не парный ряд в котором есть 2 одинаковых элемента, если же таких нет то необходимо за вектор Х последний парный столбик.
В коде только идея сортировки массива. Но я насколько помню нельзя же присваивать из матрицы M[i,j], массиву mas[i] значение M[i]. Как это реализовать.
Подскажите.
Код:
for i:=1 to n do
if (i mod 2=1) then
begin
for j:=1 to n do
if M[i,j]=M[i,j+1] then 
Mas[i]:=m[i];
else
if n mod 2 = 0 then
begin
for j:=1 to n+1 do
begin
for i:=1 to n do
mas[i]:=M[j]
else 
for j:=1 to n-1 do
begin 
for i:=1 to n do
mas[i]:=M[j];
end;
end;
end;
end;
Если нужно могу скинуть весь набраный до этого код, но там только 2 модуля на создание матрицы и разные процедуры.

Код:
p:=0;
v[p]:=m[i,j];
p:=p+1;
if (i mod 2=0) then
begin
for i:=1 to n do
if M[i,j]=M[i,j+1] then
V:=M[i,j];
write(v);
Новая идея, но теперь орет
"попытка присвоить типу array of integer выражение integer"

Последний раз редактировалось Stilet; 14.06.2013 в 21:21.
Markodius вне форума Ответить с цитированием
Старый 14.06.2013, 21:15   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Код:
V:=M[i,j];
Вы пытаетесь засунуть в целый вектор одно единственное число.
Код:
V[p]:=M[i,j];
С точки зрения синтаксиса должно быть именно так, а вот с точки зрения логики работы программы не знаю.
Вообще не очень понятно зачем вы хотите прикрутить сортировку к поиску рядов по определенному условию.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 14.06.2013, 21:57   #3
Markodius
Новичок
Джуниор
 
Регистрация: 14.06.2013
Сообщений: 3
По умолчанию

Ну мне же нужно проверить элементы матрицы и вывести их в вектор.
Вот весь код
Код:
{Модуль на описание типов}
Unit Opisanie;
Interface
 
  const Dlina=100;
  Type
   Matx=array[1..Dlina,1..Dlina] of integer;
 
    implementation
   End.
Код:
{Модуль на создание матрицы, вывод матрицы и описания процедур. Вывод вектора матрицы.}
Unit Matrix;
interface
uses Opisanie;
Procedure SozdanieMatrici(var n:integer;var M:Matx;var i,j:integer);
Procedure VivodMatrici (var n:integer;var M:Matx;var i,j:integer);
Procedure VivodVektotaMatrici(var m:Matx;var Proba,n,p,i,j:integer);
 
implementation
var  Mas:array[1..Dlina] of integer;
{процедура на создание матрицы}
Procedure SozdanieMatrici(var n:integer;var M:Matx;var i,j:integer);
BEGIN
Writeln('Введите размерность матрицы');
write('n=');
read(n);
for i:=1 to n do
for j:=1 to n do
 begin
  Write('M[',i,',',j,']=');
  read(M[i,j]);
 end;
end;
 
Procedure VivodMatrici(var n:integer;var M:Matx;var i,j:integer);
{Процедура на вывод матрицы}
BEGIN
Writeln('Готовая матрица');
For i:=1 to n do
 begin
 {Дополнительный Begin для того чтобы цыкл не перешел с 1й строчки сразу на 2ю}
  for j:=1 to n do
 
  write(M[i,j]:5);
  writeln;
 end;
end;
Procedure VivodVektotaMatrici(var m:Matx; var Proba,n,p,i,j:integer);
begin
writeln('Выведеный вектор');
 writeln('VECTOR');
 
 
for i:=1 to n do
if (i mod 2=0) then
begin
for i:=1 to n do
begin
for j:=1 to n do
p:=1;
mas[p]:=m[i,j];
p:=p+1;
if M[i,j]=M[i,n] then
Mas[p]:=M[i,j];
writeln('mas[p]=',mas[p]);
 
end;
end;
end;
end
Код:
Program test;
uses crt,Matrix,Opisanie;
{Описание переменных}
var m:Matx;
 
    n,i,j,proba,p:integer;
    sumrjad,sumposl:real;
 
 
    {Основная програма}
begin
clrscr;
SozdanieMatrici(n,M,i,j);
VivodMatrici(n,M,i,j);
VivodVektotaMatrici(m,Proba,n,p,i,j);
end.

Последний раз редактировалось Markodius; 14.06.2013 в 21:59.
Markodius вне форума Ответить с цитированием
Старый 15.06.2013, 10:10   #4
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Код:
{Модуль на создание матрицы, вывод матрицы и описания процедур. Вывод вектора матрицы.}
Unit Matrix;
interface
uses Opisanie;
Procedure SozdanieMatrici(var n:integer;var M:Matx);
Procedure VivodMatrici (var n:integer;var M:Matx);
Function RowSearch(const M : Matx; n : integer): Integer;//функция возвращает номер первой непарной строки в которой есть одинаковые элементы. -1 - строк нет
Procedure VivodVektotaMatrici(const m:Matx; n : Integer);

implementation
var  Mas:array[1..Dlina] of integer;
{процедура на создание матрицы}
Procedure SozdanieMatrici(var n:integer;var M:Matx);
Var
  i, j : Integer;
BEGIN
for i:=1 to n do
for j:=1 to n do
 begin
  Write('M[',i,',',j,']=');
  read(M[i,j]);
 end;
end;

Procedure VivodMatrici(var n:integer;var M:Matx);
Var
  i, j : Integer;
{Процедура на вывод матрицы}
BEGIN
Writeln('Готовая матрица');
For i:=1 to n do
 begin
 {Дополнительный Begin для того чтобы цыкл не перешел с 1й строчки сразу на 2ю}
  for j:=1 to n do

  write(M[i,j]:5);
  writeln;
 end;
end;

Function RowSearch(const M : Matx; n : Integer) : Integer;
Var
  i, j, k, row_number : Integer;
Begin
  row_number := -1;
  i := 1;
  while i <= n do
  Begin
    for j := 1 to n - 1 do
    Begin
      for k := j + 1 to n do
        if (M[i, j] = M[i, k]) then
        Begin
          row_number := i;
          result := row_number;
          Exit
        End;
    End;
    inc(i, 2)
  End;
  result := row_number
End;

Procedure VivodVektotaMatrici(const m:Matx; n : Integer);
Var
  j, row_number, tmpn : Integer;
Begin
  row_number := RowSearch(M, n);
  if (row_number <> -1)  then   //нашли нужную строку. передвем её в массив
  Begin
    for j := 1 to n do
      Mas[j] := M[row_number, j]
  End
  else
  Begin
    if (odd(n)) then tmpn := n - 1
                   else tmpn := n;
    for j := 1 to tmpn do
      Mas[j] := M[j, tmpn];
  End;
  for j := 1 to n do
    Write(Mas[j] : 3)
End;

end.

Ptorgram test
uses
  SysUtils,
  Opisanie in 'Opisanie.pas',
  Matrix in 'Matrix.pas';
var m:Matx;
    n,i,j,proba,p:integer;
    sumrjad,sumposl:real;
Begin
  Writeln('Введите размерность матрицы');
  write('n=');
  read(n);
  SozdanieMatrici(n,M);
  VivodMatrici(n,M);
  VivodVektotaMatrici(m, n);
  Readln;
  Readln
End.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с матрицей С# Diman410 Помощь студентам 1 29.03.2011 16:47
Работа с матрицей admiral121 Помощь студентам 1 23.12.2010 16:08
работа с матрицей RanMa Помощь студентам 6 12.03.2010 17:05
Работа с матрицей Absent Помощь студентам 2 05.04.2009 15:46