igorshevkun
?>

В одномерном массиве произвольных чисел А(10) положительные элементы уменьшить в двое, а отрицательные элементы заменить на значения их индексов. ответ нужен в VBA а не pascal!

Информатика

Ответы

Бондарев-Исаханян
Задание №1

program z1;
const n = 3;
  m =3;
var a:array[1..n, 1..m] of integer;
i,j,min:integer;
begin
//Заполним матрицу и найдем минимальное
  min:=20;
  for i:=1 to n do begin
    for j:=1 to m do begin
      a[i,j]:=random(41)-20;
      if a[i,j] < min then min:=a[i,j];
      write(a[i,j]:4);
    end;
  writeln;
  end;
  writeln;
// меняем минимальное на 0 и выводим матрицу
  for i:=1 to n do begin
    for j:=1 to m do begin   
      if a[i,j] = min then a[i,j]:=0;
      write(a[i,j]:4);
    end;
  writeln;
  end;  
end.

Тестовое решение для 1 задачи:
  18  20 -10
  19 -14 -17
  -4 -17 -15

  18  20 -10
  19 -14   0
  -4   0 -15

Задание №2

program z2;
const n = 3;
  m =5;
var a:array[1..n, 1..m] of integer;
i,j,min:integer;
begin
//Заполним матрицу
  for i:=1 to n do begin
    for j:=1 to m do begin
      a[i,j]:=random(41)-20;
      write(a[i,j]:5);
    end;
  writeln;
  end;
  writeln;
// меняем все элементы на их квадраты и выводим матрицу
  for i:=1 to n do begin
    for j:=1 to m do begin  
      a[i,j]:=sqr(a[i,j]);
      write(a[i,j]:5);
    end;
  writeln;
  end; 
end.

Тестовое решение для задания №2
   15    8   18  -17   10
  -19   17    1   20  -15
  -20  -13  -11   -3   17

  225   64  324  289  100
  361  289    1  400  225
  400  169  121    9  289
bureiko
В начале мы создаем массив случайных элем.
Потом работаем с ним.
Нам нужны 2 переменные:
1 - переменная, для сохранения результата (номера).
2 - переменная флажок.
Мы обходим весь массив ПО СТОЛБЦАМ.
В начале обхода конкретного столбца переменной флажка присвоим 1.
Сравниваем текущий элемент столбца с последующим,
если они не равны то ставим флажок 0

Код:
//Размерность массива
const n = 3;
//Сам массив
var 
ar : array[1..n,1..n] of integer;
//Переменные для работы с массивом
var 
i,j : integer; 
//Переменные для поиска столбца
//f - переменная флажок, которая по окончанию обхода столбца будет
//показывать одинаковы ли элементы в нем
//numb - переменная, в которой сохраним номер столбца с
//одинаковыми значениями элементов.
var 
f,numb : integer;
begin
//Создание и вывод на экран массива
//Элементы генерируются случайным образом
//  
for i:=1 to n do 
begin   
for j:=1 to n do   
begin     
ar[i,j] := random(2);     
write(ar[i,j]:3);   
end;   
writeln;   
end;  
// 

//Вот сам алгоритм поиска
//
//Записываем в numb значение -1
//Если в процессе работы значение не изменится (-1)
//То означает, что в массиве нет одинаковых столбцов
  numb := -1; 

//Идем по массиву
//
for j:=1 to n do
//Момент начала конкретного j столбца  
  begin    
//записываем в f значение 1
  //Предполагаем, что столбец одинаков
  //Если в конце обхода конкретного столбца значение f=1
  //Значит, что данный столбец одинаков
  f := 1;    
 
//Идем по столбцу
// n-1
//(т.к сравниваем текущий со следующим)
for i:=1 to n-1 do   
begin  
//Сравниваем текущий элемент столбца, со следующим     
if (ar[i,j] <> ar[i+1,j]) then
    //Если они не равны, то изменяем значение флажка f на 0       
    f := 0;   
end; 
//Конец обхода конкретного столбца  
 
//Если столбец одинаков   
if (f = 1) then
    //то записываем его номер в numb     
    numb := j;  
end;  
//  

//Вывод результата 
if (numb <> -1) then   
writeln('Столбец №: ',numb) 
else   
writeln('Нет ни одного одинакового столбца');    
end.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

В одномерном массиве произвольных чисел А(10) положительные элементы уменьшить в двое, а отрицательные элементы заменить на значения их индексов. ответ нужен в VBA а не pascal!
Ваше имя (никнейм)*
Email*
Комментарий*