2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Проверь пожалуйста задачу на ошибки! [Pascal]
Сообщение24.12.2010, 19:42 


21/12/10
13
Использовать линейные списки для хранения последовательности строк. Опишите функции для решения следующей задачи:
а) подсчитать количество строк-элементов списка, которые начинаются и оканчиваются одним и тем же символом.
Вот мой вариант:

Program hdfhdfh;
Type stroka=string[20];
link=^elem;
elem=record
info:stroka;
next:link;
end;
Var p,q:link;
i,n,s,l:integer;
f1,f2:text;
Procedure schet(p:link; Var s:integer);
Var r:link;
Begin
r:=p;
s:=0;
for i:=1 to n do
begin
l:=length(r^.info);
if r^.info[1]=r^.info[l] then s:=s+1;
r:=r^.next;
end;
End;
Begin
assign(f1,'dan.dan');
assign(f2,'res.res');
reset(f1);
rewrite(f2);
p^.next:=nil;
readln(f1,p^.info);
n:=1;
while not eof(f1) do
begin
new(q);
readln(f1,q^.info);
q^.next:=p;
p:=q;
n:=n+1;
end;
schet(p,s);
writeln(f2,s);
close(f1);
close(f2);
end.

 Профиль  
                  
 
 Re: Проверь пожалуйста задачу на ошибки!
Сообщение24.12.2010, 22:28 


21/12/10
13
ну помогите уже кто-нибудь!!!!!

 Профиль  
                  
 
 Re: Проверь пожалуйста задачу на ошибки!
Сообщение24.12.2010, 22:42 
Админ форума
Аватара пользователя


19/03/10
8952
 !  Niaren, замечание за искусственное поднятие темы неинформативным сообщением.

Свою программу Вы вполне можете проверить сами: откомпилируйте и запустите с тестовыми данными.
Если возникнут конкретные проблемы, обращайтесь.

 Профиль  
                  
 
 Re: Проверь пожалуйста задачу на ошибки!
Сообщение24.12.2010, 22:44 


21/12/10
13
проблемы и так конкретные. Каждый раз ответ разный выдает.

 Профиль  
                  
 
 Re: Проверь пожалуйста задачу на ошибки!
Сообщение24.12.2010, 22:46 
Заслуженный участник
Аватара пользователя


03/02/10
1928
Niaren в сообщении #391140 писал(а):
Каждый раз ответ разный выдает.

попросите все промежуточные результаты writeln'ить

 Профиль  
                  
 
 Re: Проверь пожалуйста задачу на ошибки!
Сообщение24.12.2010, 22:57 
Аватара пользователя


01/04/10
910
Секрет: оформите нормально код, пишите без капса и восклицательных знаков.

По поводу написания программ без ошибок, почитайте сообщения Zealint, он как раз об этом писал.

 Профиль  
                  
 
 Re: Проверь пожалуйста задачу на ошибки!
Сообщение24.12.2010, 23:04 


21/12/10
13
код нормально оформлен и без восклицательных.

 Профиль  
                  
 
 Re: Проверь пожалуйста задачу на ошибки!
Сообщение24.12.2010, 23:10 
Админ форума
Аватара пользователя


19/03/10
8952
Вставьте в программу отладочную печать и приведите входные и выходные данные и промежуточный вывод.

Niaren в сообщении #391153 писал(а):
код нормально оформлен
Нормальное оформление кода предполагает использование тега syntax

Будете продолжать препирательства -- закрою тему.

 Профиль  
                  
 
 Re: Проверь пожалуйста задачу на ошибки!
Сообщение24.12.2010, 23:17 


21/12/10
13
Поняла.
код: [ скачать ] [ спрятать ]
Используется синтаксис Pascal
  1. Program hdfhdfh;
  2. Type stroka=string[20];
  3. link=^elem;
  4. elem=record
  5. info:stroka;
  6. next:link;
  7. end;
  8. Var p,q:link;
  9. i,n,s,l:integer;
  10. f1,f2:text;
  11. Procedure schet(p:link; Var s:integer);
  12. Var r:link;
  13. Begin
  14. r:=p;
  15. s:=0;
  16. for i:=1 to n do
  17. begin
  18. l:=length(r^.info);
  19. if r^.info[1]=r^.info[l] then s:=s+1;
  20. r:=r^.next;
  21. end;
  22. End;
  23. Begin
  24. assign(f1,'dan.dan');
  25. assign(f2,'res.res');
  26. reset(f1);
  27. rewrite(f2);
  28. p^.next:=nil;
  29. readln(f1,p^.info);
  30. n:=1;
  31. while not eof(f1) do
  32. begin
  33. new(q);
  34. readln(f1,q^.info);
  35. q^.next:=p;
  36. p:=q;
  37. n:=n+1;
  38. end;
  39. schet(p,s);
  40. writeln(f2,s);
  41. close(f1);
  42. close(f2);
  43. end.


Используется синтаксис Pascal
  1. dan.dan
  2. qwerty
  3. sas
  4. fffg
  5. girig
  6.  
  7.  
  8. res.res
  9. 2

 Профиль  
                  
 
 Re: Проверь пожалуйста задачу на ошибки!
Сообщение24.12.2010, 23:29 
Админ форума
Аватара пользователя


19/03/10
8952
 i  Тема перемещена в Карантин.

Чтобы оттуда выбраться
Toucan в сообщении #391156 писал(а):
Вставьте в программу отладочную печать и приведите входные и выходные данные и промежуточный вывод.
После того как исправите сообщение, сообщите об этом в теме Сообщение в карантине исправлено.


-- Пт дек 24, 2010 23:49:10 --

Ну и чем Вас не устраивает работа Вашей программы?

 Профиль  
                  
 
 Re: Проверь пожалуйста задачу на ошибки!
Сообщение25.12.2010, 00:01 
Заслуженный участник


26/07/09
1559
Алматы
2Niaren
Несколько советов.
После rewrite(f2) добавьте new(p) (в этом главная ошибка).

Выбросьте все, что связано с i и n. В том числе, замените ваш for на while r do (кстати, r, тоже можно выбросить, достаточно p). Также перенесите l в локальные переменные процедуры schet.

P.S.: И все-таки не понятно как вы увидели ошибку по правильным тестам? Интуиция что-ли... :)

 Профиль  
                  
 
 Re: Проверь пожалуйста задачу на ошибки!
Сообщение25.12.2010, 00:37 


21/12/10
13
Спасибо за исправления!
А как понимать замените ваш for на while r do? Разве программа не будет выдавать ошибку?

 Профиль  
                  
 
 Re: Проверь пожалуйста задачу на ошибки!
Сообщение25.12.2010, 04:48 
Заслуженный участник


26/07/09
1559
Алматы
Да с чего бы это. Просто вы же последовательно продвигаясь по связанному списку с помощью r:=r^.next в конце-концов упретесь в next=nil (вспомните, что опри инициализации у вас было p^.next:=nil) и выполнение цикла while будет остановлено. Не, я конечно мог что-то напутать с синтаксисом, может быть там надо написать что-то вроде while r<>nil do, но суть та же. Зато можно будет удалить лишние переменные (i и n).

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group