Помощь - Поиск - Пользователи - Календарь
Полная версия: Странная работа компиляторов с задачей
Форум «Всё о Паскале» > 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
Спасибо, не знал.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.