IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Улучшить функцию улучшил я, но не знаю правильно или нет
maksimla
сообщение 9.10.2009 18:27
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

Репутация: -  1  +


Первичные данные целых чисел массив, элементы в массиве упорядочены возрастающем порядке. Функция Daug читает элементы и определяет число который больше всех в этом массиве находится. Если есть числа которые одинаковое число раз повторяются то в ответе любое должно быть.
Задание простое и логичное.
Код
const m = ...;
      n = ...;
type masyvas = array [m..n] of integer;
function Daug (a : masyvas) : integer;
var i, r,        
    k,          
    sk : integer;
begin
  r := a[m];
  sk := 1; k := 1;
  for i := m + 1 to n do
    begin
      if a[i] = a[i – 1]
        then begin
               k := k + 1;
               if k > sk
                 then begin
                        r := a[i];
                        sk := k
                      end
             end
        else k := 1
    end;
  daug := r
end;

Henry Ledgard писал что этот алгоритм пробовали улучшить сто людей но некто лучше нечего не придумал.
Но вы сто первый.
Попробуйте написать решение одной переменной, и одной управляемой структурой меньше.
Что это за структура управляемой?
Я вот изменил не много не знаю правильно или нет.
Код
const m = ...;
      n = ...;
type masyvas = array [m..n] of integer;
function Daug (a : masyvas) : integer;
var i,        
    k,          
    sk : integer;
begin
  Daug := a[m];
  sk := 1; k := 1;
  for i := m + 1 to n do
      if a[i] = a[i – 1]
        then begin
               k := k + 1;
               if k > sk
                 then begin
                        Daug := a[i];
                        sk := k
                      end
             end
        else k := 1
end;


Сообщение отредактировано: maksimla - 10.10.2009 18:54


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 7.11.2009 8:40
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


А функция твоя выглядит примерно вот так:
function Daug(a: tArr): integer;
var
i,l: Integer;
begin
l:=0;
for i:= m to n do if a[i-l]=a[i] then begin
Inc(l);
Daug:=a[i]
end;
end;


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
maksimla   Улучшить функцию улучшил я   9.10.2009 18:27
maksimla   а я даже тут в данной мне функции нашел ошибку вве...   18.10.2009 11:44
volvo   Ты задание внимательно читал? У тебя - НЕ возраст...   18.10.2009 11:46
maksimla   ой совсем забыл про возрастающий порядок   18.10.2009 11:52
maksimla   А может можно сделать так чтобы сама функция к себ...   18.10.2009 12:13
volvo   Рекурсия? Я не думаю, что ты этим улучшишь функцию...   18.10.2009 12:17
maksimla   а мне надо избавится от одной управляемой структур...   18.10.2009 12:19
volvo   А ты не делай поспешных выводов :) Вот в этой функ...   18.10.2009 16:19
maksimla   спасибо все понятно. Я даже так и не думал что та...   18.10.2009 17:07
volvo   Да какие пару часов? Тут все прозрачно: сначала пе...   18.10.2009 17:35
maksimla   спасибо за объяснения   19.10.2009 11:32
maksimla   мне сказали что так нельзя использоватьпеременную ...   3.11.2009 16:20
volvo   Это проблема того, кто тебе это сказал. Не надо пр...   3.11.2009 17:04
maksimla   Написал что эта программа неелегантная . const...   6.11.2009 16:32
Lapp   Написал что эта программа неелегантная . [code=...   7.11.2009 7:22
Lapp   А функция твоя выглядит примерно вот так: function...   7.11.2009 8:40
maksimla   Написал что эта программа неелегантная . cons...   7.11.2009 9:38
Lapp   обсурд ему 8 а мне 4 баллаДа уж, за неправильную п...   7.11.2009 11:01


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 2:16
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"