0
{ Составить процедуру (или функцию), которая переставляет первые k элементов массива A в конец (число k задается пользователем): A[k+1], A[k+2], …, A[n], A[1], A[2], …, A[k]. Следующие действия должны выполняться отдельными процедурами (и/или функциями): 1) заполнение массива случайными числами из заданного интервала; 2) вывод массива на экран; 3) заполнение массива нулями (инициализация);
4) сохранение массива в текстовый файл; 5) чтение массива из текстового файла;
6) удаление нескольких элементов из указанного места (со сдвигом); 7) добавление нескольких элементов в указанное место (со сдвигом). Процедуры (и/или функции) должны работать с массивами как с параметрами, но не как с глобальными переменными. } uses crt; const MaxNcount=1000; // размер массива type TarrayInt=array [1..MaxNcount] of integer;
var b:TArrayInt; // массив элементов Bcount:integer;
//1) заполнение массива случайными числами из заданного интервала; procedure CreateArray(var a:TArrayInt;Ncount:integer); var i:integer; begin randomize;// инициализация for i:=1 to ncount do a[i]:=1+random(20); end; //2) вывод массива на экран; Function ShowArray(const a:TArrayInt;Ncount:integer):string; var s:string; i:integer; begin s:=''; for i:=1 to ncount do if s='' then s:=s+inttostr(a[i]) else s:=s+','+inttostr(a[i]); result:=s; end; //3) заполнение массива нулями (инициализация); procedure CreateArrayInit(var a:TArrayInt;Ncount:integer); var i:integer; begin randomize;// инициализация for i:=1 to ncount do a[i]:=0; end; // 4) сохранение массива в текстовый файл; Procedure SaveArrayToFile(const a:TArrayInt;Ncount:integer;FileName:string); var F:file of integer; x:integer; begin assign(f,FileName); rewrite(f); for x:=1 to ncount do write(f,a[x]); close(F); end; //5) чтение массива из текстового файла; Procedure LoadArrayFromFile(var a:TArrayInt;var Ncount:integer;FileName:string); var F:file of integer; y:integer; s:integer; begin Y:=1; assign(f,filename); reset(f); repeat read(f,s); a[y]:=s; y:=y+1; until eof(f); close(F); Ncount:=y; end;
//6) удаление нескольких элементов из указанного места (со сдвигом); procedure move_left(var a:TArrayInt;Ncount:integer; index:integer); var i:integer; begin for i:=index to ncount do a[i]:=a[i+1]; end; //7) добавление нескольких элементов в указанное место (со сдвигом). procedure move_right(var a:TArrayInt;Ncount:integer;index:integer); var i:integer; begin for i:=ncount downto index do a[i+1]:=a[i]; a[index]:=0; end; // двигаем первые к элементов в конец списка и сдигаем списк procedure MovCountElementToEnd(var a:TArrayInt;var Ncount:integer; k:integer); var t,X:integer; begin for x:=1 to k do begin t:=a[1]; move_left(a,ncount,1); a[Ncount]:=t; end; end; var k:integer; begin clrscr; writeln('Введите размер массива '); readln(Bcount); if (Bcount>MaxNcount) and (Bcount>0) then begin Writeln('кол-во элементов должно быть меньще ',MaxNcount,' и больше 0'); exit; end; CreateArray(b,Bcount); write('Исходный массив '); Writeln(ShowArray(b,Bcount)); // SaveArrayToFile(b,bcount,'c:\1input.txt'); // LoadArrayFromFile(b,bcount,'c:\1input.txt'); // Writeln('всего элементов массива из файла ',bcount-1); // Writeln(ShowArray(b,Bcount));
writeln('Введите кол-во элементв который необходимо сдвинуть в конец списка (k) '); readln(k); if (k>bcount) and (K>0) then begin Writeln('номер элементов должно быть меньще ',bcount+1,' и больше 0'); exit; end; MovCountElementToEnd(b,bcount,k); write('Полуеный массив '); Writeln(ShowArray(b,Bcount)); end.
|