Укажите через запятую в порядке возрастания все десятичные числа, не превосходящие 30, запись которых в системе счисления с основанием 5 начинается на 3
Здесь нужно использовать вс типизированный файл и, соответственно, вторую файловую переменную (fr2). Сделать это можно так: while not eof(fr) and (kol=0) do begin read(fr, Marshrut); if (Marshrut.NK.N <> '11') then write(fr2,Marshrut) else begin inc(kol); y:=Marshrut; end; end; if not eof(fr) then begin read(fr, Marshrut); write(fr2,Marshrut); end; if (kol=1) then write(fr2,y); Дальше нужно просто переписать оставшиеся записи из первого файла во второй. Затем оба файла закрыть, первый файл удалить, а второй переименовать (т.е. назвать его так, как назывался первый файл).
Попробуйте ещё вот такой вариант: (здесь k1 и k2 - целые, а y - типа ) if (Marshrut.NK.N = '11') then begin writeln('... '); inc(kol); y:=Marshrut; k1:=FilePos(fr)-1; k2:=FilePos(fr); if not eof(fr) then begin read(fr, Marshrut); seek (fr, k1); write(fr, Marshrut); seek (fr, k2); write (fr, y); end;
end;
anytkaakk
22.03.2023
PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018 Внимание! Если программа не работает, обновите версию!
procedure FillStack(st:Stack<integer>; sq:sequence of integer); begin foreach var t in sq do st.Push(t); end;
procedure PrintStack(st:Stack<integer>; s:string); begin Write(s); st.Println end;
procedure ToStack(sta,stb:Stack<integer>; Even:boolean); begin if Even then while sta.Count>0 do begin var v:=sta.Pop; if v.IsEven then begin stb.Push(v); exit end end else while sta.Count>0 do begin var v:=sta.Pop; if v.IsOdd then begin stb.Push(v); exit end end end;
begin var st1:=new Stack<integer>; FillStack(st1,Seq(2,13,20,18,1)); PrintStack(st1,'Стек1: '); var st2:=new Stack<integer>; FillStack(st2,Seq(9,11,10,8,4)); PrintStack(st2,'Стек2: '); var st3:=new Stack<integer>; while st1.Count+st2.Count>0 do begin ToStack(st1,st3,True); ToStack(st2,st3,False); end; PrintStack(st3,'Стек3: ') end.
3₅ = 3₁₀
30₅ =15₁₀
31₅ = 16₁₀
32₅ = 17₁₀
33₅ = 18₁₀
34₅ = 19₁₀
ответ: 3, 15, 16,17, 18, 19