Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод из Pascal в Delphi 
:(
    Опции темы
Sersgant
  Дата 14.6.2012, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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.

PM MAIL   Вверх
bagos
Дата 18.6.2012, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 275
Регистрация: 17.6.2006

Репутация: 1
Всего: 1



Если ты сам решил эти задачи на паскале smile , то 20 мин чтения любого учебника по delphi + 10 мин на реализацию, и готово
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0429 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.