В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История

Паскаль можете объяснить как найти столбец в котором все элементы одинаковы? (речь о двумерном массиве) с учетом того, что i - число строк, j-число столбцов т.е элементы a[j] должны быть равны как это сделать? объясните, я новичок.

Показать ответ
Ответ:
art1610
art1610
29.09.2020 01:44
В начале мы создаем массив случайных элем.
Потом работаем с ним.
Нам нужны 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.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота