2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Поиск максимального элемента [Pascal]
Сообщение12.03.2015, 17:11 
Аватара пользователя


27/03/14
1091
Нужно вывести массив случайных целых чисел, вывести максимальный элемент max и количество максимальных элементов count.
Я выбрал такой алгоритм:
Используется синтаксис Pascal
  count:=0;
  max:=a[0,0];
    for i:=0 to m-1 do
       begin
        for j:=0 to n-1 do
                      begin
                        a[i,j]:=random(maxD-minD+1)+minD;
                        if a[i,j]>=max then
                                          begin
                                            max:=a[i,j];
                                            count:=count+1;
                                          end;

Я не могу понять, почему он работает не так, как я ожидал, голову сломал уже.

 Профиль  
                  
 
 Re: Поиск максимального элемента
Сообщение12.03.2015, 17:24 


14/01/11
3062
Во-первых, что вы можете сказать об a[0,0] перед инициализацией массива? И что происходит с count, когда a[i,j]>max?

 Профиль  
                  
 
 Re: Поиск максимального элемента
Сообщение12.03.2015, 17:29 
Аватара пользователя


27/03/14
1091
Sender в сообщении #989336 писал(а):
Во-первых, что вы можете сказать об a[0,0] перед инициализацией массива? И что происходит с count, когда a[i,j]>max?

Перед инициализацией $a[0,0]$ равно нулю? Ну либо тому мусору, который в оперативной памяти на этом месте хранится. А что с count может происходить? Там написано больше либо равно, т.е. если элемент больше либо равен max, то к count прибавляется единица. А что делать с $a[0,0]$?

 Профиль  
                  
 
 Re: Поиск максимального элемента
Сообщение12.03.2015, 17:36 


14/01/11
3062
В таком случае, чего вы рассчитываете добиться инструкцией
Используется синтаксис Pascal
max:=a[0,0];

?

 Профиль  
                  
 
 Re: Поиск максимального элемента
Сообщение12.03.2015, 17:47 
Аватара пользователя


27/03/14
1091
Вынес в отдельный цикл, все равно не работает.
Используется синтаксис Pascal
    max:=a[0,0];
    for i:=0 to m-1 do
      begin
        for j:=0 to n-1 do
                        begin
                        if a[i,j]>=max then
                                          begin
                                            max:=a[i,j];
                                            count:=count+1;
                                          end;
                        end;
      end;

 Профиль  
                  
 
 Re: Поиск максимального элемента
Сообщение12.03.2015, 17:50 


27/08/14
207
Интересно, учат ли сейчас пользоваться отладчиком? Я вот не помню чтобы нас учили - а ведь это весьма полезный навык :-)

 Профиль  
                  
 
 Re: Поиск максимального элемента
Сообщение12.03.2015, 17:53 
Аватара пользователя


27/03/14
1091
Нас не учили, я не знаю, как им пользоваться.

-- 12.03.2015, 16:54 --

Вообще я работаю в делфи в режиме application.

 Профиль  
                  
 
 Re: Поиск максимального элемента
Сообщение12.03.2015, 17:54 


27/08/14
207
Возьмите для простоты массив из трёх элементов [1, 2, 3] и смотрите что происходит с count

 Профиль  
                  
 
 Re: Поиск максимального элемента
Сообщение12.03.2015, 18:12 
Аватара пользователя


27/03/14
1091
Все, я понял, сделал отдельный массив для подсчета count, единица должна добавляться в этот счетчик лишь при условии того, что текущий элемент равен максимальному. Спасибо.

 Профиль  
                  
 
 Re: Поиск максимального элемента
Сообщение12.03.2015, 19:34 


24/05/09

2054
Довольно странно видеть такие вопросы :shock: от чела, который не столь давно спрашивал, как написать "Эмулятор сервера WoW".

 Профиль  
                  
 
 Re: Поиск максимального элемента
Сообщение13.03.2015, 12:00 
Заслуженный участник
Аватара пользователя


11/03/08
9970
Москва
В принципе, задача может быть решена и за один проход. В котором и находится значение максимального элемента, и считается его встречаемость. Просто если текущий элемент равен значению максимума, то счётчик инкрементируется, если текущий меньше - то ничего не делаем, но вот если больше - значит то, что мы доверчиво принимали за максимум, максимумом не было, максимумом является либо текущий, либо какой-то иной, больший текущего, и счётчик надо сбросить и установить равным единице (в надежде, что текущий и есть максимальный).
И, разумеется, до инициализации ячейки использовать её бессмысленно, даже если данный транслятор использует какую-то инициализацию по умолчанию (нулём, скажем). В этом, далеко не всегда встречающемся случае, врать будет, если значения в матрице все отрицательны, а если нет инициализации, то примерно в половине случаев будет врать, в половине получит что-то осмысленное (но не обязательно верное).

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group