Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Ответ
 
Опции темы
Старый 22.03.2018, 15:20   #1
HiFull
Пользователь
 
Регистрация: 23.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, 16:10   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 4,966
По умолчанию

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

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

Цитата:
Сообщение от 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, 16:42   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 4,966
По умолчанию

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

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

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

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, 22:42   #7
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 419
По умолчанию

В копилку:
Код:
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 вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Олимпиадная задача: Подсчитать буквы в повторениях любимого слова Лёши. решить задания в 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