Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
ecofreeon
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 146
#1

Распаковка строки, исправить код - Turbo Pascal

13.04.2014, 13:57. Просмотров 1525. Ответов 33
Метки нет (Все метки)

Здравствуйте, решал на **** задачу "распаковка строки", благополучно решил, на компьютере все работает, но на **** выдает "Runtime Error". Никак не могу разобраться в чем проблема, подскажите пожалуйста...
код
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
const
my : set of char=['0'..'9'];
var
n,i,k,l,j,p,e,u: integer;
s,o,r: string;
begin
assign(input,'input.txt');reset(input);
assign(output,'output.txt');rewrite(output);
read(s);
n:=length(s);
    for i:=1 to n do
      begin
      if s[i] in my then
         begin
          o:=o+s[i];
          val(o,l,j);
          end;
          if not(s[i] in my) and not(s[i-1] in my) then
          begin
            write(s[i]);
            r:=r+s[i];
            e:=length(r);
            if (e=40)  then
               begin
               r:='';
               writeln;
               end;
          end;
             if not(s[i] in my) and (s[i-1] in my) then
             for p:= 1 to l do
              begin
            write(s[i]);
            o:='';
            r:=r+s[i];
            e:=length(r);
              if (e=40)  then
               begin
               r:='';
               writeln;
               end;
              end;
 
      end;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2014, 13:57
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Распаковка строки, исправить код (Turbo Pascal):

Исправить код!
uses crt; var i,j,min,max :integer; A:array of integer; begin randomize;...

Исправить код
задание: В целочисленном векторе vectorn переместить в начало все нулевые...

Исправить код
program P4; type school = record nm:integer; name: string; surname:...

Исправить код
Помогите, пожалуйста, исправить программу, чтобы чтение было из файла ...

Как исправить код?
if w>0 then F:= exp((2w)*1)+((-2w)*1) else F:=exp((w)*2)+((w)*3); После...

Нужно исправить код
Нужно записать процедуру вывода массива, для исходного. Для конечного...

33
Svager
394 / 374 / 405
Регистрация: 14.09.2013
Сообщений: 1,202
13.04.2014, 14:17 #2
Цитата Сообщение от ecofreeon Посмотреть сообщение
assign(input,'input.txt');reset(input); assign(output,'output.txt');rewrite(output);
где у вас описан файл ?
0
ecofreeon
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 146
13.04.2014, 14:25  [ТС] #3
Я использую стандартные файлы, которые есть в паскале. В вашем фрагменте моего сообщения они и описываются...

Добавлено через 53 секунды
Цитата Сообщение от Svager Посмотреть сообщение
где у вас описан файл ?
Я использую стандартные файлы, которые есть в паскале. В вашем фрагменте моего сообщения они и описываются...
0
Alex Dark
Наблюдатель
456 / 191 / 33
Регистрация: 01.05.2012
Сообщений: 1,025
13.04.2014, 14:30 #4
Ну если это какой то сайт с тестами и онлайн проверкой, то самое простое это то что ты не закрываешь файлы.
ГДЕ Close(input) и Close(output)???
0
ecofreeon
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 146
13.04.2014, 14:32  [ТС] #5
Цитата Сообщение от Alex Dark Посмотреть сообщение
Ну если это какой то сайт с тестами и онлайн проверкой, то самое простое это то что ты не закрываешь файлы.
ГДЕ Close(input) и Close(output)???
Сначала так и подумал, но:
1. Во всех остальных задачах файл не закрываю и все работает.
2. Пробовал закрывать- все так же Runtime Error(
0
Alex Dark
Наблюдатель
456 / 191 / 33
Регистрация: 01.05.2012
Сообщений: 1,025
13.04.2014, 14:34 #6
и ещё, укажи явно, откуда читаешь и куда пишешь.
read(input,s) и write(output,s[i])
0
ecofreeon
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 146
13.04.2014, 14:37  [ТС] #7
Цитата Сообщение от Alex Dark Посмотреть сообщение
и ещё, укажи явно, откуда читаешь и куда пишешь.
read(input,s) и write(output,s[i])
Так же runtime error(
0
markiza-inc
478 / 193 / 88
Регистрация: 21.10.2012
Сообщений: 450
13.04.2014, 14:39 #8
А другие проги, какие-нибудь, у Вас работают?

Runtime Error обычно выдает если Turbo Pascal старый - непропатченный.

У меня Ваша прога работает, файлы создаются, правда что делает прогга - не понятно. Заменяет все цифровые символы каким-то количеством единиц.
Цитата Сообщение от Alex Dark Посмотреть сообщение
read(input,s) и write(output,s[i])
Это не обязательно. В проге используется подмена консоли файлами.
0
ecofreeon
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 146
13.04.2014, 14:41  [ТС] #9
Вот к примеру с того же сайта код, прошло с первого раза, с переменными все так же, как и в моей проблемной задачей...
Цитата Сообщение от код
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var
a : array[1..2,1..100] of real;
i,j,n,im: integer;
m: real;
begin
assign(input,'input.txt');reset(input);
assign(output,'output.txt');rewrite(output);
readln(n);
j:=0;
m:=-maxint;
 for i:=1 to n do
   read(a[1,i]);
readln;
 for i:=1 to n do
  read(a[2,i]);
  for i:= 1 to n do
      if (a[1,i]*(a[2,i]/100))>m then
         begin
         m:=(a[1,i]*(a[2,i]/100));
         im:=i;
         end;
write(im);
end.
Добавлено через 1 минуту
Цитата Сообщение от markiza-inc Посмотреть сообщение
правда что делает прогга - не понятно. Заменяет все цифровые символы каким-то количеством единиц.
вот, что она должна делать
задача
Будем рассматривать только строчки, состоящие из заглавных латинских букв. Например, рассмотрим строку AAAABCCCCCDDDD. Длина этой строки равна 14. Поскольку строка состоит только из латинских букв, повторяющиеся символы могут быть удалены и заменены числами, определяющими количество повторений. Таким образом, данная строка может быть представлена как 4AB5C4D. Длина такой строки 7. Описанный метод мы назовем упаковкой строки.

Напишите программу, которая берет упакованную строчку и восстанавливает по ней исходную строку.

Входные данные

Входной файл INPUT.TXT содержит одну упакованную строку. В строке могут встречаться только конструкции вида nA, где n — количество повторений символа (целое число от 2 до 99), а A — заглавная латинская буква, либо конструкции вида A, то есть символ без числа, определяющего количество повторений. Максимальная длина строки не превышает 80.

Выходные данные

В выходной файл OUTPUT.TXT выведите восстановленную строку. При этом строка должна быть разбита на строчки длиной ровно по 40 символов (за исключением последней, которая может содержать меньше 40 символов).

все остальные программы работают..
0
markiza-inc
478 / 193 / 88
Регистрация: 21.10.2012
Сообщений: 450
13.04.2014, 14:44 #10
Где-то на форуме эта задача уже была.
0
Alex Dark
Наблюдатель
456 / 191 / 33
Регистрация: 01.05.2012
Сообщений: 1,025
13.04.2014, 14:46 #11
30 строка. for p:= 1 to l do
Откуда берётся L? Где инициализация
0
ecofreeon
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 146
13.04.2014, 14:49  [ТС] #12
Цитата Сообщение от markiza-inc Посмотреть сообщение
Где-то на форуме эта задача уже была.
Знаю, но мне интересно что не так именно с моим решением этой задачи...

Добавлено через 1 минуту
Цитата Сообщение от Alex Dark Посмотреть сообщение
30 строка. for p:= 1 to l do
Откуда берётся L? Где инициализация
Pascal
1
2
o:=o+s[i];
* * * * * val(o,l,j);
15-16 строки
к выводу вопросов быть не должно, выводит как надо...
0
markiza-inc
478 / 193 / 88
Регистрация: 21.10.2012
Сообщений: 450
13.04.2014, 15:01 #13
Создал исходный файл как сказано в задании - все работает правильно.
0
ecofreeon
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 146
13.04.2014, 15:05  [ТС] #14
Цитата Сообщение от markiza-inc Посмотреть сообщение
Создал исходный файл как сказано в задании - все работает правильно.
у меня тоже, но на сайте на первом же тесте runtime error. Никак не могу разобраться в чем проблема.
0
Alex Dark
Наблюдатель
456 / 191 / 33
Регистрация: 01.05.2012
Сообщений: 1,025
13.04.2014, 15:10 #15
Цитата Сообщение от Alex Dark Посмотреть сообщение
Откуда берётся L? Где инициализация
Я о том, что инициализация должна быть ЯВНОЙ а не под условием спрятанной.
Это ошибка. В твоём случае она не сработала. В другом - сработает.

Цитата Сообщение от markiza-inc Посмотреть сообщение
Создал исходный файл как сказано в задании - все работает правильно
В связи с тем, что это тестовая задача онлайн, надо читать внимательно правила и условия работы с тестом.

PS там может только под эксплорером надо работать или под мозилой. Читайте в условиях

Добавлено через 2 минуты
или имена фалов задавать типа '.\input.txt'
0
ecofreeon
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 146
13.04.2014, 15:13  [ТС] #16
Цитата Сообщение от Alex Dark Посмотреть сообщение
Я о том, что инициализация должна быть ЯВНОЙ а не под условием спрятанной.
Это ошибка. В твоём случае она не сработала. В другом - сработает.
Что за инициализация? 26 задач с такой инициализацией прошло, если я правильно понял вложенный вами в слово "инициализация" смысл, а это не проходит...

Добавлено через 2 минуты
Цитата Сообщение от Alex Dark Посмотреть сообщение
Читайте в условиях
Цитата Сообщение от условия работы на сайте
Все задачи требуют работы с файлами INPUT.TXT и OUTPUT.TXT, предназначенными для чтения входных данных и вывода результата соответственно. Отправлять решения можно только зарегистрированным пользователям в виде исходного кода в файлах с расширениями *.pas, *.dpr, *.c, *.cpp, *.java, *.bas . Проверяющая система обрабатывает только программы, реализованные на языках Pascal, С++, Java и Basic, используя следующие компиляторы:

Borland Delphi 7.0
Microsoft Visual C++ 7.1
Java 2 SDK 1.6.0.24
Microsoft Visual Basic 6.0
вот, что на сайте.
0
markiza-inc
478 / 193 / 88
Регистрация: 21.10.2012
Сообщений: 450
13.04.2014, 15:16 #17
При работе с тестами онлайн часто бывают такие глюки. На форуме это обсуждалось не раз.

ecofreeon, бросьте Вы эту хрень - тесты онлайн.

Иначе все мозги сломаете, но так и не поймете почему это происходит. Просто, в инете не все функциональные возможности Паскаля учтены.
1
ecofreeon
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 146
13.04.2014, 15:18  [ТС] #18
Цитата Сообщение от причина runtime error
Ошибка исполнения. Программа завершила работу с ненулевым кодом возврата. В этом случае результат работы не проверяется
не могу понять, что это значит...

Добавлено через 1 минуту
Цитата Сообщение от markiza-inc Посмотреть сообщение
бросьте Вы эту хрень - тесты онлайн
Не могу, через неделю личная олимпиада по программированию в ВУЗ'е в который собираюсь поступать, там тоже будет использоваться программа, которая проверяет исходники, типа той, что на асмп...
0
Alex Dark
Наблюдатель
456 / 191 / 33
Регистрация: 01.05.2012
Сообщений: 1,025
13.04.2014, 15:23 #19
У тебя цикл
В цикле три условия.
При срабатывании первого условия, переменной L присваивается значение.
При срабатывании третьего условия значение L используется.

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

PS логику срабатывания условий я не разбирал.

Добавлено через 5 минут
Вау... слона то я и не заметил.

А что у тебя возвращает s[i-1] при значении i=1???
Это не ошибка времени исполнения?
1
ecofreeon
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 146
13.04.2014, 15:28  [ТС] #20
Цитата Сообщение от Alex Dark Посмотреть сообщение
У тебя цикл
В цикле три условия.
здесь есть второе условие
Pascal
1
2
3
4
5
6
7
8
9
10
 if not(s[i] in my) and not(s[i-1] in my) then
          begin
            write(s[i]);
            r:=r+s[i];
            e:=length(r);
            if (e=40)  then
               begin
               r:='';
               writeln;
               end;
оно учитывает возможные неприятности, ошибки не будет.

Добавлено через 2 минуты
Цитата Сообщение от Alex Dark Посмотреть сообщение
Вау... слона то я и не заметил.
А что у тебя возвращает s[i-1] при значении i=1???
Это не ошибка времени исполнения?
я тоже как-то подумал на это, но попробуйте тест "A39B1C"
несмотря на то, что s[i-1] не существует, выполнится второе условие и будет напечатана лишь одна буква "A"
0
13.04.2014, 15:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2014, 15:28
Привет! Вот еще темы с решениями:

Исправить программный код
Program pr1; uses crt; var x,y,z:array of integer; n,i,j,k,m:integer;...

Исправить код программы.
С помощью рекурсивной функции вычислить значение квадратного корня с заданой...

Исправить код сортировки
Помогите пожалуйста найти ошибку в теле программы! Вот задание - e) Створіть...

Прокомментировать и исправить код
program qwe; var s:string; str1,str2:array of string; b,c,k,n,i,a:integer;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru