// PascalABC.NET 3.0, сборка 1088 begin var n:=ReadLnString('Введите число: '); n:=n.Where(x->x in ['0'..'9']).JoinIntoString(''); Writeln('Принятое число: ',n); var a:=ReadLnChar('Введите искомую цифру: '); Writeln('Количество цифр в числе равно ',n.Length); if n[1]=n[n.Length] then Writeln('Первая цифра равна последней') else Writeln('Первая цифра не равна последней'); if Pos(a,n)>0 then Writeln('Цифра ',a,' входит в число') else Writeln('Цифра ',a,' не входит в число') end.
Тестовое решение: Введите число: тут спрятано 456. по частям 764 наше 03число Принятое число: 45676403 Введите искомую цифру: 0 Количество цифр в числе равно 8 Первая цифра не равна последней Цифра 0 входит в число
"Школьный вариант" // PascalABC.NET 3.0, сборка 1088 var n:longint; i,k:integer; sn:string; a:char; begin Write('Введите число: '); Readln(n); Str(n,sn); Write('Введите искомую цифру: '); Readln(a); k:=Length(sn); Writeln('Количество цифр в числе равно ',k); if sn[1]=sn[k] then Writeln('Первая цифра равна последней') else Writeln('Первая цифра не равна последней'); if Pos(a,sn)>0 then Writeln('Цифра ',a,' входит в число') else Writeln('Цифра ',a,' не входит в число') end.
Тестовое решение: Введите число: 3476573 Введите искомую цифру: 7 Количество цифр в числе равно 7 Первая цифра равна последней Цифра 7 входит в число
// PascalABC.NET 3.1, сборка 1204 от 24.03.2016 begin var F,G:file of integer; Assign(F,'FFile.dat'); Rewrite(F); for var i:=1 to 30 do Write(F,Random(-20,20)); // Файл F создан и заполнен Assign(G,'GFile.dat'); Rewrite(G); F.Seek(0); var e:integer; Print('F:'); while not F.Eof do begin Read(F,e); Print(e); if e>0 then Write(G,e) end; F.Seek(0); while not F.Eof do begin Read(F,e); if e<0 then Write(G,e) end; F.Seek(0); while not F.Eof do begin Read(F,e); if e=0 then Write(G,e) end; F.Close; Writeln; Print('G:'); G.Seek(0); while not G.Eof do begin Read(G,e); Print(e) end; G.Close end.
Данное решение неоптимально по времени, поскольку файл читается трижды. Можно сделать иной вариант, читая данные за один проход и помещая в две вс структуры памяти отрицательные и нулевые элементы.
// PascalABC.NET 3.1, сборка 1204 от 24.03.2016 begin var F,G:file of integer; Assign(F,'FFile.dat'); Rewrite(F); for var i:=1 to 30 do Write(F,Random(-20,20)); // Файл F создан и заполнен Assign(G,'GFile.dat'); Rewrite(G); var n:=F.FileSize; var neg,zer:array of integer; SetLength(neg,n); SetLength(zer,n); F.Seek(0); var e:integer; var ineg:=0; var izer:=0; Print('F:'); while not F.Eof do begin Read(F,e); Print(e); if e>0 then Write(G,e) else if e<0 then begin neg[ineg]:=e; Inc(ineg) end else begin zer[izer]:=e; Inc(izer) end end; F.Close; Writeln; SetLength(neg,ineg); foreach e in neg do Write(G,e); SetLength(zer,izer); foreach e in zer do Write(G,e); Print('G:'); G.Seek(0); while not G.Eof do begin Read(G,e); Print(e) end; G.Close end.