pascal!дедовский метод

baranker
Сообщения: 13
Зарегистрирован: 14 дек 2008, 22:54

Господа,я тут задачу сделал да отладку не могу выполнить !помогите пожалуйста ,найти ошибки и их исправить !
насчет алгоритма прошу вас оставить его без изменений(именно нахождение слов) ибо не хочу рисковать !а после нахождения слов и записи в переменую начинаются трудности !
заранее благодарен.
код:

Код: Выделить всё

program prim2;
label 1,2,3,4,5,6,7,8,9,10,11,12,13,kon;
var s:string[20];
    b:string[1];
sl1,sl2,sl3,sl4:string[6];
i,j,P1,P2,P3,P4:integer;
BEGIN
writeln('Введите четыре слова через   и в конце тоже поставьте пробел!!! ');
read(s);
{P1:=0;P2:=0;P3:=0;P4:=0;}
writeln('ОТВЕТ');
i:=0;
1:i:=i+1;
  b:=copy(s,i,1);
if b=' ' then goto 2 else goto 1;
2:sl1:=copy (s,1,i-1);
  writeln(sl1);
  j:=i+1;
3:i:=i+1;
  b:=copy(s,i,1);
if b=' ' then goto 4 else goto 3;
4:sl2:=copy(s,j,i-j);
  writeln(sl2);
  j:=i+1;
5:i:=i+1;
  b:=copy(s,i,1);
if b=' ' then goto 6 else goto 5;
6:sl3:=copy(s,j,i-j);
  writeln(sl3);
  j:=i+1;
7:i:=i+1;
  b:=copy(s,i,1);
if b=' ' then goto 8 else goto 7;
8:sl4:=copy(s,j,i-j);
  writeln(sl4);
  writeln;
if (sl1=sl2) or  (sl1=sl3)or (sl1=sl4) then begin P1:=1;
write(sl1);
end
     else begin
if (sl2=sl1) or (sl2=sl3) or (sl2=sl4) then begin P2:=1;
write(sl2);end;
end;
if (sl3=sl1) or (sl3=sl2) or (sl3=sl4) then begin P3:=1;
write(sl3);
end
else begin
if (sl4=sl1) or (sl4=sl2) or (sl4=sl3) then begin P3:=1;
writeln(sl3);end;
end;

if P1=1 then goto 9;

if P2=1 then goto 10;
if P3=1 then goto 11;
if P4=1 then goto 12;

9:begin writeln('Одинаковые слова есть -');
  writeln(sl1);end;
goto kon;

10:begin writeln('Одинаковые слова есть-');
  writeln(sl2);end;
goto kon;
11:begin writeln('Одинаковые слова есть -');
  writeln(sl3);end;
goto kon;
12:begin writeln('Одинаковые слова есть -');
  writeln(sl4);end;
goto kon;
begin writeln('Одинаковых слов нет-');end;
goto kon;
kon:

END.
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

&quot писал(а):Господа,я тут задачу сделал да отладку не могу выполнить !помогите пожалуйста ,найти ошибки и их исправить !
насчет алгоритма прошу вас оставить его без изменений(именно нахождение слов) ибо не хочу рисковать !а после нахождения слов и записи в переменую начинаются трудности !
заранее благодарен.
Опиши саму задачу.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
BHy4ok
Сообщения: 237
Зарегистрирован: 01 май 2007, 09:03
Откуда: г.Находка
Контактная информация:

atavin-ta писал(а):Опиши саму задачу.

Представь ситуацию. Сидит ваш студент или ученик и вы ему же решаете задачу которую он будет сдавать вам завтра.

По теме. Сильно нагромаждено, подразумаваю, что есть более рациональный метод.
Описание задачи не помешало бы.
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)
baranker
Сообщения: 13
Зарегистрирован: 14 дек 2008, 22:54

господа,извиняюсь я было поздно а уже сегодня надо рано вставать и пришлось делать все по-быстрому! :o
задача:
!!!Даны четыре слова одинаковой длины. Напечатать сообщение о наличии или отсутствии одинаковых слов и это слово.!!!
BHy4ok
Сообщения: 237
Зарегистрирован: 01 май 2007, 09:03
Откуда: г.Находка
Контактная информация:

baranker писал(а): !!!Даны четыре слова одинаковой длины. Напечатать сообщение о наличии или отсутствии одинаковых слов и это слово.!!!


4 слова пишутся в одну строку или же каждое само по себе не зависимо? (с новой строки)
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)
baranker
Сообщения: 13
Зарегистрирован: 14 дек 2008, 22:54

а вот это без разницы ! я тоже думал каждую стоку как массив сделать и сравнивать элементы!
BHy4ok
Сообщения: 237
Зарегистрирован: 01 май 2007, 09:03
Откуда: г.Находка
Контактная информация:

Боюсь, что препод заставит переделывать тебя твое творение.
Если все правильно понял, то вот попробуй(длина слов и количество не имеет значение, сначало разбивает строку на слова добавляя их в массив затем ищет повторения и указывает сколько их, в конце так-же пробел):
[syntax=Pascal]
uses
crt;
var
S,k,p:string;
a:array[0..20] of string;
i,j,n,m:integer;
c:boolean;
begin
ClrScr;
c:=false;
write('vvedite slova 4erez probel: ');
readln(S);
j:=1;
n:=0;
for i:=1 to length(S) do
if S=' ' then
begin
a[n]:=copy(S,j,i-j);
j:=i+1;
inc(n);
end;
p:=S;
for i:=0 to n do
begin
m:=0;
while pos(a,p)>0 do
begin
inc(m);
delete(p,pos(a,p),length(a));
end;
if m>1 then
begin
writeln('povtoraetsa slovo: ',a,' - [',m,'] raz(a)');
c:=true;
end;
end;
writeln;
if c=false then writeln(' - net povtorov!');
readln;
end.
[/syntax]
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)
BHy4ok
Сообщения: 237
Зарегистрирован: 01 май 2007, 09:03
Откуда: г.Находка
Контактная информация:

baranker писал(а):а вот это без разницы ! я тоже думал каждую стоку как массив сделать и сравнивать элементы!

Тогда не придется разбивать строку на слова, что значетильно упрощает задачу.
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)
baranker
Сообщения: 13
Зарегистрирован: 14 дек 2008, 22:54

Господин,внучек не мользя обойтись без uses и всяких примочек интересных?
BHy4ok
Сообщения: 237
Зарегистрирован: 01 май 2007, 09:03
Откуда: г.Находка
Контактная информация:

baranker писал(а):Господин,внучек не мользя обойтись без uses и всяких примочек интересных?

А вы спрашивайте, что не понятно. У меня уже поздно, утром отвечу на ваши вопросы.
Uses [подгружает модули которые вам нужны] в данном случае необходимо - это основа изучения паскаля. crt - подгружаемый модуль. Без него дальнейшая команда "ClrScr" работать не будет которая отвечает за очистку экрана при новом запуске.
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)
Ответить