Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [PASCAL] Двумерный массив .


Автор: Lutichka 10.5.2007, 11:51
Помогите пожалуйста осталась одна задача . дана произвольная матрица , каждый негативный элемент матрицы заменить максимальным элементом столбца в котором он находится . ( не применяя процедур и функции )

Автор: Lutichka 10.5.2007, 12:06
ДА негативный это отрицательный

Автор: ama_kid 10.5.2007, 12:36
Lutichka, 
Ну вот примерно так:
Код
program Project2;

uses Crt;
const
 N=10;
var
 A:Array [1..N,1..N] of integer;
 i,j:integer;
 k:integer;
 Max:integer;

begin
 randomize;
 for i:=1 to N do
  for j:=1 to N do A[i,j]:=Random(20)-10;
 writeln;
 for i:=1 to N do
  for j:=1 to N do
   if A[i,j]<0 then
    begin
     Max:=A[1,j];
     for k:=2 to N do if Max<A[k,j] then Max:=A[k,j];
     A[i,j]:=Max;
    end;
 readln;
end.



Автор: Lutichka 10.5.2007, 12:45
Спасибо , а как сделать так чтобы не использовать функцию random .  или как ее обьяснить 

Автор: Klin 10.5.2007, 12:49
Держи решение:

Код

uses CRT; { библиотека для очистки экрана }
const nx=4; ny=4; { размер матрицы}
var n: array[1..nx,1..ny] of integer;
    x, y, sy, max: integer;
begin
 clrscr; { очистка экрана }

 for y:=1 to ny do begin
  writeln;
  for x:=1 to nx do begin
    n[x,y]:=random(12)-5;
    write(n[x,y],chr(32));
  end;
 end;
 { заполнение массива случайным образом и вывод его на экран}

 for y:=1 to ny do
  for x:=1 to nx do
   if (n[x,y]<0) then begin 
    max:=n[x,y]; { запись временного максимума }
    for sy:=1 to ny do if (max<n[x,sy]) then max:=n[x,sy]; { нахождения максимума в столбце }
    n[x,y]:=max; { запись максимума }
   end;
 { операция проверки значений }

 writeln; writeln;
 for y:=1 to ny do begin
  writeln;
  for x:=1 to nx do write(n[x,y],chr(32));
 end;
 { вывод измененного массива }

end.

Автор: Rodman 10.5.2007, 12:50
Код

program Project2;
uses Crt;
const
 N=10;
var
 A:Array [1..N,1..N] of integer;
 i,j:integer;
 k:integer;
 Max:integer;
begin
 for i:=1 to N do
  for j:=1 to N do 
      readln(A[i,j]);
 writeln;
 for i:=1 to N do
  for j:=1 to N do
   if A[i,j]<0 then
    begin
     Max:=A[1,j];
     for k:=2 to N do if Max<A[k,j] then Max:=A[k,j];
     A[i,j]:=Max;
    end;
 readln;
end.

а если с Random, то он заполняет матрицу случайными цыфрами в диапазоне 0-20;

Автор: Klin 10.5.2007, 12:52
Блин, опередили. если перед циклом добавить randomize; , то случайность будет зависеть от времени. А random(x) - что тут объяснять  случайное число, где максимум x (или x-1) точно не помню

Автор: ama_kid 10.5.2007, 12:57
Цитата(Lutichka @  10.5.2007,  12:45 Найти цитируемый пост)
а как сделать так чтобы не использовать функцию random
Это просто заполнение матрицы (чтобы не с пустой работать), если тебе не надо - заполняй её как сама пожелаешь, хоть с клавиатуры вводи...

Автор: Lutichka 10.5.2007, 19:22
ребята извините но я чего то не пойму не одна из программ не работает

Автор: Lutichka 10.5.2007, 20:14
НАпример мах нельзя присвоить элемент массива пишет типы не совпадают . А когда подбираешь так чтоб программа работала она ничего не выводит

Автор: Rodman 10.5.2007, 20:23
Lutichka, компилятор тебе так и говорит ("У тебя типы не совпадают")? 

он пишет конкретные ошибки... вот их и перепиши сюда...

Автор: Lutichka 10.5.2007, 20:36
TYPE MYSTHMATCH , А на вводе элементов тоесть когда в скобках (i,j)
'')'' expression


Автор: Lutichka 10.5.2007, 21:07
ТАК я проверила все варианты ввода

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)