Новые сообщения · Правила  
Страница 1 из 11
Модератор форума: Berestovskiy 
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » Паскаль » Найти наибольший чётный положительный элемент (Найти наибольший чётный положительный элемент)
Найти наибольший чётный положительный элемент
Здравствуйте.Преподаватель сказал, что в программе есть какие-то мелкие недочёты. Сколько не искал не могу найти что неправильно. Помогите сделать программу.
Здание изначально было такое.
Дан двумерный массив. Найти наибольший чётный положительный элемент выше главной диагонали и наименьший отрицательный элемент ниже главной диагонали с указанием их индексов. Создать новый массив, в котором найденные элементы поменяются местами.

Требования преподавателя - числа задаются не рандомно , сделать так чтобы можно было вводить размерность массива( количество строк,столбцов))

Заранее спасибо за помощь!

program mass;
 
const m =16;
 
var n, i, j, ia, ja, ib, jb, t:integer;
    a:array[1..m,1..m] of integer;
    fa, fb:boolean;
 
begin
  repeat
    write('n = ');
    readln(n);
    if (n < 2) or (n > m) then writeln('n out of range 2..', m,', reenter.')
  until (n >=2)and(n <= m);
  writeln('Enter array:');
  for j :=1 to n do
    for i :=1 to n do
      begin
        write('a[', i,', ', j,']= ');
        readln(a[i, j])
      end;
  fa := false;
  fb := false;
  writeln('Source array:');
  for j :=1 to n do
    begin
      fori :=1 to n do
        begin
         write(a[i, j]:6);
         if (i > j)and not(odd(a[i, j]))and(a[i, j] >=0)
           then if fa
             then begin
               if (a[i, j] > a[ia, ja])
                 then begin
                   ia := i;
                   ja := j
                 end
             end
             else begin
               ia := i;
               ja := j;
               fa := true;
             end;
         if (i < j)and(a[i, j] < 0)
           then if fb
             then begin
               if (a[i, j] < a[ib, jb])
                 then begin
                   ib := i;
                   jb := j
                 end
             end
             else begin
               ib := i;
               jb := j;
               fb := true
             end
        end;
      writeln
    end;
  write('Max even positive elementabove principal diagonal: ');
  if fa thenwriteln('a[', ia,',', ja,'] = ', a[ia, ja])
        elsewriteln('not found.');
  write('Min negative element belowprincipal diagonal: ');
  if fb thenwriteln('a[', ib,',', jb,'] = ', a[ib, jb])
        elsewriteln('not found.');
  if fa and fb
    then begin
      t := a[ia, ja];
      a[ia, ja]:= a[ib, jb];
      a[ib, jb]:= t;
      writeln('Result:');
      forj :=1 to n do
        begin
        fori :=1 to n do write(a[i, j]:6);
        writeln
      end
    end
    else writeln('No change.');
end.
1 | Автор: Миша228 | 2014-03-19, 22:22   |  Репутация: [ + 0 ]
for j :=1 to n do 
    for i :=1 to n do 
      begin 
        write('a[', i,', ', j,']= '); 
        readln(a[i, j]) 
      end

замени на

randomize();
 for j :=1 to n do 
    for i :=1 to n do 
      begin 
        a[i, j] = random(100);
        write('a[', i,', ', j,']= ', a[i,j]); 
      end;


Нужна помощь? Сюда: vkontakte.ru/berestovskiy
2 | Автор: Berestovskiy | 2014-03-25, 21:06   |  Репутация: [ + 211 ]


Нужна помощь? Сюда: vkontakte.ru/berestovskiy
2 | Автор: Berestovskiy | 2014-03-25, 21:06   |  Репутация: [ + 211 ]
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » Паскаль » Найти наибольший чётный положительный элемент (Найти наибольший чётный положительный элемент)
Страница 1 из 11
Поиск: