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

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

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2018, 14:20   #1
HiFull
Пользователь
 
Регистрация: 22.08.2017
Сообщений: 11
По умолчанию Олимпиадная задача. Pascal. 9-11. Межгалактический кризис

Добрый день, программисты! Недавно решал одну задачу на базе дист.олимпиады одного из местных ВУЗов. Редко бывает такое, что спустя кучу попыток нужный тест все не находится или ты сам не можешь понять, где недосчитался. Видимо, наступил тот самый момент. Помогите, пожалуйста, хотя бы понять, какой случай не прочел и где оплошался, задача с кодом будут прикреплены. Заранее спасибо!
Изображения
Тип файла: jpg 2018-03-22_14-20-29.jpg (100.9 Кб, 131 просмотров)
Вложения
Тип файла: txt mejgalcris.txt (1.6 Кб, 172 просмотров)
HiFull вне форума Ответить с цитированием
Старый 22.03.2018, 15:10   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Код:
//Создаю имя пользователя до :
   while (s1[j] <> ':') or (s1[j+1] <> ' ') do
jak silver:hello!
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 27.03.2018, 15:04   #3
HiFull
Пользователь
 
Регистрация: 22.08.2017
Сообщений: 11
По умолчанию

Да нет, все равно меня дропает система, теперь уж точно понять не могу :с
Изображения
Тип файла: jpg 2018-03-27_14-48-35.jpg (73.6 Кб, 154 просмотров)
Тип файла: jpg 2018-03-27_14-48-49.jpg (14.9 Кб, 118 просмотров)
Вложения
Тип файла: txt asd.txt (1.4 Кб, 133 просмотров)
HiFull вне форума Ответить с цитированием
Старый 27.03.2018, 15:41   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от HiFull Посмотреть сообщение
Да нет, все равно меня дропает система, теперь уж точно понять не могу
попробуйте запустить ваш код на таком примере:
Код:
4
Jonh: Hello,
Jonh: friends!
Boss: It's great! My message is very long message!
Boss: i'm really great.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.03.2018, 15:42   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

jak: hello.
jak: привет.
и выведите ВЕСЬ список данных ПОСЛЕ разбора (все имена и все длины).

offtopоткройте для себя record (надеюсь они есть в вашем Pascal)
mas: array[....] of record imya: string; len: integer; end;чтобы не делать постоянно val <--> str и не только
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 27.03.2018 в 15:49.
evg_m вне форума Ответить с цитированием
Старый 27.03.2018, 16:29   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

TC, Вы не обидитесь, если я здесь свой вариант приведу?

Код:
type
  RecClient1 = record
    name : string;
    count : integer;
  end;
var
 clients : array [1..100] of RecClient1;
 s, curname : string;
 i, n, j,IndexMax : integer;
begin

 Assign(input, 'infile1.txt');
 Reset(input);

 readln(n);

 for i:=1 to n do begin
   clients[i].name := '';
   clients[i].count := 0;
 end;

 IndexMax := 1;
 for i:=1 to n do begin
  ReadLn(s);
  j := Pos(': ', s);
  if j>1 then begin
     curname := copy(s,1,j-1);
     j:=1;
     while (j<=n) and (clients[j].name<>curname) and (clients[j].name<>'') do Inc(j);
     if (clients[j].name='') then clients[j].name := curname;
     clients[j].count := clients[j].count + Length(s)-2-Length(curname);
     if clients[j].count>clients[IndexMax].count then IndexMax := j
  end;
 end;

 WriteLn(clients[IndexMax].name,' ',clients[IndexMax].count)

end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.03.2018, 21:42   #7
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

В копилку:
Код:
begin
  var d := new Dictionary<string, integer>;
  loop ReadlnInteger do
  begin
    var s := ReadString;
    var n := s[:Pos(':', s)];
    d[n] := d.Get(n) + s.Count - n.Count - 2
  end;
  var c := d.MaxBy(i -> i.Value);
  Print(c.Key, c.Value)
end.
.NET
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Олимпиадная задача: Подсчитать буквы в повторениях любимого слова Лёши. решить задания в pascal abc пожалуйста kedrov2 Паскаль, Turbo Pascal, PascalABC.NET 2 21.12.2013 18:53
Олимпиадная задача Pascal - файлы. badname47 Паскаль, Turbo Pascal, PascalABC.NET 1 21.01.2013 09:11
Олимпиадная задача Pascal - 2. Файлы. badname47 Паскаль, Turbo Pascal, PascalABC.NET 0 21.01.2013 08:19
Олимпиадная задача "Золото племени АББА" на Pascal (№7 с acmp.ru) Ghost3 Помощь студентам 19 17.01.2013 21:04
Олимпиадная задача "Карточки" (Pascal) rustkill Помощь студентам 1 01.05.2012 17:40