Новичок
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 7.6.2012
Репутация: нет Всего: нет
|
Возникла проблема. Решил задачи на Pascal и теперь их же нужно написать на delphi Помогите их перевести в delphi используя лишь button, edit-ы, label-ы. Проще говоря с FORM 1. Дана матрица размера M x N (M и N - четные числа). Поменять местами левую верхнюю и правую нижнюю четверти матрицы. | Код | const nmax=100; var a: array[1..nmax,1..nmax] of integer; i,j,n,m,k,tmp: integer; begin repeat write('Введите размеры массива n,m: '); readln(n,m); until (n mod 2=0)and(m mod 2=0); writeln('Исходная матрица:'); k:=0; for i:=1 to n do begin for j:=1 to m do begin inc(k); a[i,j]:=k; write(a[i,j]:4); end; writeln; end; writeln;
for i:=1 to n div 2 do for j:=1 to m div 2 do begin tmp:=a[i,j]; a[i,j]:=a[n+1-i,m+1-j]; a[n+1-i,m+1-j]:=tmp; end;
writeln('Полученная матрица:'); for i:=1 to n do begin for j:=1 to m do write(a[i,j]:4); writeln; end; readln; end.
|
2. Дана квадратная матрица A порядка M. Повернуть её на угол 90 градусов в отрицательном направлении, то есть по часовой стрелке (при этом элемент А1,1 перейдет в A1,M, элемент A1,M - AM,M и т.д). Вспомогательную матрицу использовать нельзя. | Код | Program Matrix100;
var n,i,j,p,k,x:integer; a:array[1..50,1..50] of integer; begin write('n=');readln(n); writeln('Ischodnaia matritsha:'); randomize; for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(15)-4; write(a[i,j]:4); end; writeln; end; p := n div 2; {разбиваем матрицу на 4 части} for i:=1 to p do for k:=i to n-i do{меняем элементы по кругу из одной четверти в другую} begin x:=a[i,k]; a[i,k]:=a[n-k+1,i]; a[n-k+1,i]:=a[n-i+1,n-k+1]; a[n-i+1,n-k+1]:=a[k,n-i+1]; a[k,n-i+1]:=x; end; Writeln('Povorot na 90 grad:'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4); writeln; end; readln end.
|
3. Дан файл целых чисел. найти количество содержащихся в нем серий ( то есть наборов последовательно расположенных одинаковых элементов). Например, для файла с элементами 1, 5, 5, 5, 4, 4, 5 результат равен 4. | Код | Var f:file of Byte; i,a1,a2,Num_of_Ser:Byte; Begin Randomize; Num_of_Ser:=0; Assign(f,'D:\fff'); Rewrite(f); For i:=1 to 20 do begin a1:=Random(8); write(f,a1); write(a1,' '); end; Close(f); Writeln; Writeln; a1:=9; Reset(f); Repeat read(f,a2); if a2<>a1 then Inc(Num_of_Ser); a1:=a2; Until EoF(f); Close(f); Writeln('Number of series is ',Num_of_Ser); Readln End.
|
4. Даны два файла вещественных чисел с именами S1 и S2, элементы которых упорядочены по возрастанию. Объединить эти файлы в новый файл с именем S3 так, чтобы его элементы также оказались упорядоченными по возрастанию. | Код | Procedure qSort( Var ar : Array Of Real; Low, High : Integer); Var i, j : Integer; m, wsp : Real; Begin i := Low; j := High; m := ar[Trunc((i + j)/2)]; Repeat While(ar[i] < m) Do i := i + 1; While(ar[j] > m) Do j := j - 1; If(i <= j) Then Begin wsp := ar[i]; ar[i] := ar[j]; ar[j] := wsp; i := i + 1; j := j - 1; End; Until (i > j); If(Low < j) Then qSort(ar, Low, j); If(i < High) Then qSort(ar, i, High); End;
{ Основная программа }
Var
S1, S2, S3 : TextFile; Res : Array Of Real; fileName : String; it, Capacity : Integer; i : Integer;
Begin Write('File name S1 -> '); ReadLn(fileName);
Assign(S1, fileName); Reset(S1);
Write('File name S2 -> '); ReadLn(fileName);
Assign(S2, fileName); Reset(S2);
Write('File name S3 -> '); ReadLn(fileName);
Assign(S3, fileName); ReWrite(S3);
Capacity := 1; it := 0;
SetLength(Res, it);
While Not Eof(S1) Do { Копируем первый файл в массив } Begin If it = Length(Res) Then SetLength(Res, it + Capacity); { Если требуется, увеличиваем длину массива на Capacity. } Read(S1, Res[it]); {Считываем очередной элемент из файла в массив.} Inc(it);{ Индекс следующего элемента массива = Количество элементов, записанных в массив } End; Close(S1); If it < Length(Res) Then SetLength(Res, it);{ Корректируем длину массива, в соответствие с количеством записанных в него элементов } { Теперь массив Res содержит все числа, прочитанные из файла S1. }
While Not Eof(S2) Do { Аналогично копируем второй файл в массив } Begin If it = Length(Res) Then SetLength(Res, it + Capacity); Read(S2, Res[it]); Inc(it); End; Close(S2); If it < Length(Res) Then SetLength(Res, it); { Теперь массив Res содержит все числа, прочитанные из файла S1 и S2. } qSort(Res, 0, it - 1); { Сортируем полученный массив }
For i := 0 To it - 1 Do { и записываем в файл } WriteLn(S3, Res[i]:6:3); Close(S3); End.
|
|