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, Супермодераторы



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

Сейчас этот форум просматривают: mihaild


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

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