1)var i,a:Integer;begina:= 1;while a<>0 dobeginRead(a);i+=a;end;WriteLn(i=10);end.2) Можно через double. Но после 170! уже бесконечность.var n:Integer;var b:double;beginb:=1;Read(n);for var i:= 1 to n dob*=i;WriteLn('factorial '+n+' = '+b);end.3) Работает как и с числами так и со строками.var arr:array of char;var a:String;var first,last:Integer;beginRead(a);arr:= a.ToCharArray();for var i:= 0 to arr.Length-1 dobeginfirst:=Pos(arr[i], a);last:=Pos(arr[i], a,first+1);if (first>0) and (last > 0) and (first<>last) thenbeginfirst:=99;break;end;end;if first = 99 thenWriteLn('Содержит. Это число '+arr[last-1])elseWriteLn('Несодержит.');end.