Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2015, 22:43   #21
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Тада можно так :
Сделаем массив слов, отсортируем, пройдемся.. А там уже за один (вроде) проход определим минимальный.. Но проще прочитать про record
Poma][a вне форума Ответить с цитированием
Старый 10.03.2015, 14:07   #22
VladKB1
Форумчанин
 
Регистрация: 21.05.2014
Сообщений: 121
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Тада можно так :
Сделаем массив слов, отсортируем, пройдемся.. А там уже за один (вроде) проход определим минимальный.. Но проще прочитать про record
Я это всё могу сделать кроме сортировки, напишите пожалуйста код. Вот
мы ищем слова и добавляем их в массив. Так же ?

Код:
readln(s);
 s:=' '+s+' ';

 for i:=2 to length(s)-1 do
 if s[i] <> ' ' then
 begin
  if s[i-1] = ' ' then l:=i;
  if s[i+1] = ' ' then
  begin
   inc(t);
   c[t]:=copy(s,l,i-l+1);
  end;
 end;
VladKB1 вне форума Ответить с цитированием
Старый 10.03.2015, 15:26   #23
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Хочешь честно? Лови : вариант с сортировкой - идиотский! Мой тебе совет : оставь эту задачу.. Выучи процедуры, записи (можно и списки).. Эта задача не должна решаться так.. Это очень-очень тупой вариант..
Poma][a вне форума Ответить с цитированием
Старый 10.03.2015, 15:34   #24
VladKB1
Форумчанин
 
Регистрация: 21.05.2014
Сообщений: 121
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Хочешь честно? Лови : вариант с сортировкой - идиотский! Мой тебе совет : оставь эту задачу.. Выучи процедуры, записи (можно и списки).. Эта задача не должна решаться так.. Это очень-очень тупой вариант..
Спасибо за совет, но если я не решу эту задачу то я не смогу перейти на новую тему ( в электронном учебнике по которому я занимаюсь)! Ладно спасибо за помощь...
VladKB1 вне форума Ответить с цитированием
Старый 10.03.2015, 15:53   #25
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

тыц

Я не проверял
Poma][a вне форума Ответить с цитированием
Старый 11.03.2015, 22:37   #26
VladKB1
Форумчанин
 
Регистрация: 21.05.2014
Сообщений: 121
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
тыц

Я не проверял
Огромное спасибо! Всё работает ! К сожалению проверить по тестам я смогу только в пятницу, если что напишу . Ещё раз ОГРОМНОЕ спасибо!
VladKB1 вне форума Ответить с цитированием
Старый 11.03.2015, 22:41   #27
VladKB1
Форумчанин
 
Регистрация: 21.05.2014
Сообщений: 121
По умолчанию

Цитата:
Сообщение от VladKB1 Посмотреть сообщение
Всем привет!

Мне нужно решить задачу, у меня есть частичное решение. Прошу помочь мне решить задачу (условие и решение ниже).

Меньшее из частейших


Прочитайте строку, состоящую из слов, разделённых пробелами. Максимальная длина строки равна 253 символам.

Выведите в файл слово, которое встречается в тексте наибольшее количество раз. Если таких слов несколько, выведите меньшее по алфавиту.

input.txt
aba ac aba de a de

output.txt
aba


сначала я напишу идею решения:

1.В начале задачи мы читаем строку s и все найденные слова поместим в массив c.

2.Далее мы сортируем подсчётом, и считаем сколь раз повторялось слово (если такое есть).
Если смотреть по примеру, то у нас будет массив (например a) состоящий из 4 символов 2,2,1,1.


3.И вместе с этим мы будем добавлять все разные слова в string-овый массив (например массив st). И у нас должно будет
быть 2 массива: 1 массив a:=2,2,1,1 и 2 массив st:=aba,de,ac,a .

4.Потом мы сделаем цикл от 1 до количества цифр в массиве а , и в нём будем подсчитывать сколько одинаковых цифр
есть в начале( если таких нет, переменная подсчёта равна в самом начале 1). Как только следующая цифра не ровна предыдущей,
то прекращаем работу цикла и идём дальше по коду...

5.И в конце делаем цикл от 1 до переменной подсчёта (допустим k) и сравниваем переменную (допустим minS) которая равна
пустой строке с st[i]. И если minS > st[i] то minS:=''; minS:=minS+st[i]; и всё.


6.Потом выводим minS.

Вроде бы идея правильная и воплотить можно, если нет, напишите. И сейчас я напишу код для каждого пункта (там где нету, значит я не знаю ):

1.
Код:
readln(s);
 s:=' '+s+' ';

 for i:=2 to length(s)-1 do
 if s[i] <> ' ' then
 begin
  if s[i-1] = ' ' then l:=i;
  if s[i+1] = ' ' then
  begin
   inc(t);
   c[t]:=copy(s,l,i-l+1);
  end;
 end;
4.
Я не знаю как узнать количество цифр в массиве а
Код:
for i:=1 to {количество цифр} do
 if a[i] = a[i] then inc(k) else break;
5.
Код:
for i:=1 to k do
 if minS <= st[i] then
 begin
  minS:='';
  minS:=minS+st[i];
 end;
6.
Код:
writeln(minS);
end.

Всем заранее спасибо!
Задачу Решил! Огромное спасибо Poma][ - е!

Код:
var
 s,minS,st: string;
 sm: array [1..127] of string;
 i,j,k,l,a,m,ss: integer;
begin
 assign(input,'input.txt');
 reset(input);
 assign(output,'output.txt');
 rewrite(output);

 readln(s);
 s:=' '+s+' ';

 for i:=2 to length(s)-1 do
 if s[i] <> ' ' then
 begin
  if s[i-1] = ' ' then l:=i;
  if s[i+1] = ' ' then
  begin
   inc(a);
   sm[a]:=copy(s,l,i-l+1);
  end;
 end;

 for i:=1 to a do
 for j:=i to a do
 if sm[i] > sm[j] then
 begin
  st:='';
  st:=st+sm[j];
  sm[j]:='';
  sm[j]:=sm[j]+sm[i];
  sm[i]:='';
  sm[i]:=sm[i]+st;
 end;

 st:=sm[1];
 for i:=1 to a do
 begin
  if sm[i] = st then inc(ss)
  else
  begin
   if m < ss then
   begin
    minS:='';
    minS:=minS+st;
    m:=ss;
   end;
   ss:=1;
   st:='';
   st:=st+sm[i];
  end;
 end;
 writeln(minS);
end.
VladKB1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Большее из частейших (TurboPascal) VladKB1 Помощь студентам 8 13.06.2014 23:16
Даны два числа вывести большее, а затем меньшее. (Delphi) nadyaH Помощь студентам 13 28.10.2013 09:19
Определить, сколько членов последовательности с номерами 1,2,4,8,16,.. имеют значение меньшее, чем 0,25 Kat9 Паскаль, Turbo Pascal, PascalABC.NET 0 23.05.2013 11:09
,Даны целые числа K и L. Если числа не равны, то заменить меньшее из них остатком от деления большего на меньшее, а если рав Proskurina Помощь студентам 3 25.03.2013 20:51
Работа со строками.даны три слова.Одно из них имеет меньшее количество символов,чем другое.Определить и в Ashley Помощь студентам 6 01.06.2010 22:08