Помощь - Поиск - Пользователи - Календарь
Полная версия: Странная работа компиляторов с задачей
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Vinchkovsky
Вот сама задача:
Цитата
Задача 1.
Даны два слова А и В. Проверьте, можно ли из букв слова А составаить В. Каждый символ из А использовать не более 1 раза.

И решение:
program Zadacha1;
uses Crt;
var c:boolean;
a,b:string;
function Sovmestimost(a,b:string):boolean;
var len1,len2,i,ii,res:integer;
aM,bM:array [1..20] of string;
d3:boolean;
begin
len1:=length(a);
len2:=length(b);
for i:=1 to len1 do aM[i]:=copy(a,i,1);
for i:=1 to len2 do bM[i]:=copy(b,i,1);
for i:=1 to len2 do
for ii:=1 to len1 do
if bM[i]=aM[ii] then begin res:=res+1; aM[ii]:=''; bM[i]:='*' end;
if res=len2 then d3:=true else d3:=false;
Sovmestimost:=d3
end;
begin
clrscr;
readln(a);
readln(b);
if length(a)>length(b) then c:=Sovmestimost(a,b) else c:=Sovmestimost(b,a);
if c=true then writeln('YES') else writeln('NO');
readln
end.

На этот раз точно верное.
Так вот, в чем проблема: при первом запуске проги все делается ОК (напр., вводим poker и kop), тоесть пишется YES. Но при повторном при тех же словах пишется NO. Помогает только повторный запуск Турбо Паскаля. Пробовал на двух версиях. Так в чем дело - настройках компилятора, "особенностями машинной арифметики", моем решении? Странно, до этого было все нормально. wink.gif
volvo
Res := 0;
нигде не забыл? При перезапуске комилятора, естественно, все чистится, и при первом прогоне ЛОКАЛЬНАЯ переменная инициализируется нулем... А вот при втором - мусором...
Vinchkovsky
Спасибо, не знал.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.