Помощь в программировании.
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.

Помощь в программировании. PHP, HTTP, Java, Cleo, AMX.
 
ФорумПоследние изображенияПоискРегистрацияВход

 

 помогите. есть исходники написанные в Pascal, нужно реализовать их в PHP и Javascript. вот мой "ВКонтакте" - http://vk.com/frank74rus1

Перейти вниз 
АвторСообщение
Родион Кузибаев
Новенький
Новенький



Сообщения : 1
Ваши Заработанные Очки : 3
Репутация : 0
Дата регистрации : 2013-01-09

помогите. есть исходники написанные в Pascal, нужно реализовать их в PHP и Javascript. вот мой "ВКонтакте" - http://vk.com/frank74rus1 Empty
СообщениеТема: помогите. есть исходники написанные в Pascal, нужно реализовать их в PHP и Javascript. вот мой "ВКонтакте" - http://vk.com/frank74rus1   помогите. есть исходники написанные в Pascal, нужно реализовать их в PHP и Javascript. вот мой "ВКонтакте" - http://vk.com/frank74rus1 Icon_minitimeСр Янв 09, 2013 9:10 am

ЗАДАЧА №1. ПРОСТЫЕ ЧИСЛА.
Вывести все простые числа от M до N включительно.
Ограничения: 2≤M≤N≤300000, время 6 с.
Ввод из файла primes.in. В первой строке находятся разделенные пробелом M и N.
Вывод в текстовое поле. Вывести числа в порядке возрастания, по одному в строке. Если между M и N включительно нет простых - вывести "Absent".
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;

type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
Memo1: TMemo;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
var
all : TStringList; //Весь входной файл будет содержаться здесь
a,b : LongInt; //Здесь будут содержаться 2 входных числа
i,k : LongInt; //Счетчики циклов
_SN : Boolean; //Содержит информацию о типе числа
begin
all := TStringList.Create;
if FileExists('primes.in') then
all.LoadFromFile('primes.in')
else begin
ShowMessage('Входной файл не найден!');
Close;
end;
all.Delimiter := ' ';
all.DelimitedText := all.Strings[0];
a := StrToInt(all.Strings[0]);
b := StrToInt(all.Strings[1]);
all.Free;
if a < 2 then begin
ShowMessage('Первое число меньше 2!');
Close;
end;
if b > 300000 then begin
ShowMessage('Второе число больше 300.000!');
Close;
end;

for i := a to b do begin
_SN := true;
for k := 2 to trunc(sqrt(i)) do begin
if (i mod k) = 0 then begin
_SN := false;
break;
end;
end;
if _SN then Memo1.Lines.Add(IntToStr(i));
end;
if Memo1.Lines[0] = '' then Memo1.Lines.Add('Absent');
end;

end.
ЗАДАЧА №2. ВОЗРАСТАЮЩАЯ ПОДПОСЛЕДОВАТЕЛЬНОСТЬ.
Даны N целых чисел X1, X2, ..., XN. Требуется вычеркнуть из них минимальное количество чисел так, чтобы оставшиеся шли в порядке возрастания.
Ограничения: 1≤N≤10000, 1≤Xi≤60000, время 4 с.
Ввод из файла incseq.in В первой строке находится число N. В следующей строке - N чисел через пробел.
Вывод в текстовое поле. В первой строке выводится количество невычеркнутых чисел, во второй - сами невычеркнутые числа через пробел в исходном порядке. Если вариантов несколько, вывести любой.
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;

type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
Memo1: TMemo;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
var
all : TStringList; //Входной файл
s : String; //Временная строка для хранения готовой последовательности
N : Word; //Количество исходных чисел
max : Word; //Максимальная длина подпоследовательности
max_i : Word; //Максимальный индекс элемента наибольшей подпоследовательности
i,j : Word; //Счетчики для циклов
A,B,C : array of Word; //Массивы для последовательностей, память еще не выделена
begin
all := TStringList.Create;
if FileExists('incseq.in') then
all.LoadFromFile('incseq.in')
else begin
ShowMessage('Входной файл не найден!');
Close;
end;
N := StrToInt(all.Strings[0]);
if (N < 1) or (N > 10000) then begin
ShowMessage('Количество чисел N не удовлетворяет условию 1 <= N <= 10000!');
Close;
end;
all.Delimiter := ' ';
all.DelimitedText := all.Strings[1];

SetLength(A, N);
for i := 0 to N-1 do
A[i] := StrToInt(all.Strings[i]);

all.Free;

SetLength(B, N);
for i := 0 to N-1 do
B[i] := 1;

SetLength(C,N);
for i := 0 to N-1 do
C[i] := 0;

max := 1; max_i := 1;

for i := 0 to N-1 do begin
for j := 0 to N-1 do begin
if i = j then break;
if (A[j]<a[i]) and="" (b[i]<b[j]+1)="" then="" begin="" b[i]="" :="B[j]" +="" 1;="" c[i]="" if="">max then begin
max := B[i];
max_i := i;
end;
end;
end;
end;

Memo1.Lines.Add(IntToStr(B[max_i]));

s := ''; i := 0;
while max_i <> 0 do begin
i := i + 1;
s := IntToStr(A[max_i]) + ' ' + s;
max_i := C[max_i];
end;

if i < max then
Memo1.Lines.Add(IntToStr(A[0]) + ' ' + s)
else
Memo1.Lines.Add(s);

end;

end.</a[i])>
ЗАДАЧА №3. ТРЕУГОЛЬНИК И ТОЧКА.
В декартовой системе координат на плоскости заданы координаты вершин треугольника и еще одной точки. Определить, принадлежит ли эта точка треугольнику.
Ограничения: координаты вершин - целые числа, для любой точки выполняются следующие условия: -10000≤x,y≤10000, время 1 с.
Ввод из файла tria-pt.in. В четырех строках находятся пары чисел - координаты вершин треугольника, в четвертой строке - координаты тестируемой точки.
Вывод в текстовое поле. Вывести слово In, если точка находится внутри треугольника, или Out - если снаружи.
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;

type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
Memo1: TMemo;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{Функция нахождения расстояния между вершинами треугольника}
function _distance(x1,y1,x2,y2:Real):Real;
begin
result := sqrt(sqr(x1-x2)+sqr(y1-y2));
end;
{----------------------------------------------------------}

{Функция вычисления площади треугольника по Формуле Герона}
function _square(x1,y1,x2,y2,x3,y3:Real):Real;
var
p,a,b,c : Real; //Длины сторон и полупериметр
begin
a := _distance(x3,y3,x2,y2);
b := _distance(x1,y1,x3,y3);
c := _distance(x1,y1,x2,y2);
p := (a+b+c)/2;
result := sqrt(p*(p-a)*(p-b)*(p-c));
end;
{----------------------------------------------------------}

{Функция определения принадлежности точки треугольнику}
function _pointIn(x1,y1,x2,y2,x3,y3,x,y:Real):Boolean;
{x,y - координаты точки
x1-x3, y1-y3 - координаты вершин заданного треугольника}
const
corr = 0.000001;
var
s,s1,s2,s3 : Real; //Площади всех 4 треугольников
begin
_pointIn := true;
s := _square(x1,y1,x2,y2,x3,y3);
s1 := _square(x1,y1,x2,y2,x,y);
s2 := _square(x2,y2,x3,y3,x,y);
s3 := _square(x3,y3,x1,y1,x,y);
if ((s+corr) > (s1 + s2 + s3)) then
_pointIn := true
else
_pointIn := false;
end;
{----------------------------------------------------------}

procedure TForm1.FormShow(Sender: TObject);
var
Ax,Bx,Cx : Real; //Абсциссы вершин заданного треугольника ABC
Ay,By,Cy : Real; //Ординаты вершин заданного треугольника ABC
Dx,Dy : Real; //Координаты точки D
all : TStringList; //Входной файл
temp : TStringList; //Временная переменная - строка с координатами одной из точек
begin
all := TStringList.Create;
if FileExists('tria-pt.in') then
all.LoadFromFile('tria-pt.in')
else begin
ShowMessage('Входной файл не найден!');
Close;
end;
temp := TstringList.Create;
with temp do begin
Delimiter := ' ';
Add(all.Strings[0]);
DelimitedText := Strings[0];
Ax := StrToFloat(Strings[0]);
Ay := StrToFloat(Strings[1]);
Clear;
Add(all.Strings[1]);
DelimitedText := Strings[0];
Bx := StrToFloat(Strings[0]);
By := StrToFloat(Strings[1]);
Clear;
Add(all.Strings[2]);
DelimitedText := Strings[0];
Cx := StrToFloat(Strings[0]);
Cy := StrToFloat(Strings[1]);
Clear;
Add(all.Strings[3]);
DelimitedText := Strings[0];
Dx := StrToFloat(Strings[0]);
Dy := StrToFloat(Strings[1]);
end;
temp.Free;
all.Free;
if _pointIn(Ax,Ay,Bx,By,Cx,Cy,Dx,Dy) then
Memo1.Lines.Add('In')
else
Memo1.Lines.Add('Out');
end;

end.
ЗАДАЧА №4. СТЕПЕНЬ.
Для натуральных чисел a и n вычислить an.
Ограничения: 1≤a≤9, 1≤n≤7000, время 5 с.
Ввод из файла power.in. В первой строке находятся разделенные пробелом a и n.
Вывод в текстовое поле. Выводится одно число - результат без стоящих впереди нулей, стоящих впереди и позади пробелов.
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;

type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
Memo1: TMemo;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
var
all : TStringList; //Входной файл
a : Byte; //Число, которое будет возводиться в степень (основание)
n : Word; //Степень, в которую возводится число (показатель)
i,j : Word; //Счетчики для циклов
carry : Byte; //Переход в старший разряд
len : Word; //Текущая длина промежуточного числа
digit : array of Byte; //Массив с цифрами будущего числа, память еще не выделена
s : String; {Строка для хранения получившегося числа. Если
сразу выводить в Memo, то это вызывает большую задержку по времени и если
возводить в большую степень(~500..7000) - некорректное отображение конечного числа}
begin
all := TStringList.Create;
if FileExists('power.in') then
all.LoadFromFile('power.in')
else begin
ShowMessage('Входной файл не найден!');
Close;
end;
all.Delimiter := ' ';
all.DelimitedText := all.Strings[0];
try
a := StrToInt(all.Strings[0]);
n := StrToInt(all.Strings[1]);
except
ShowMessage('Неверный формат входного файла!');
Close;
end;
all.Free;

if (a<1) or (a>9) then begin
ShowMessage('Основание не удовлетворяет условию 1<=a<=9!');
Close;
end;

if (n<1) or (n>7000) then begin
ShowMessage('Показатель степени не удовлетворяет условию 1<=n<=7000 !');
Close;
end;

SetLength(digit,1);
digit[0] := 1;
len := 0;
for i := 1 to n do begin
carry := 0;
for j := 0 to len do begin
carry := carry + digit[j]*a;
digit[j] := carry mod 10;
carry := carry div 10;
end;
if carry <> 0 then begin
len := len + 1;
SetLength(digit,len+1);
digit[len] := carry;
end;
end;

for i := length(digit) downto 1 do
s := s + IntToStr(digit[i-1]);

Memo1.Lines.Add(s);

end;

end.
ЗАДАЧА №5. ПОКЕР.
Даны пять целых чисел. Среди них:
- если одинаковы 5, то вывести "Impossible", иначе;
- если одинаковы 4, то вывести "Four of a Kind", иначе;
- если одинаковы 3 и 2, то вывести "Full House", иначе;
- если есть 5 последовательных, то вывести "Straight", иначе;
- если одинаковы 3, то вывести "Free of a Kind", иначе;
- если одинаковы 2 и 2, то вывести "Two Pairs", иначе;
- если одинаковы 2, то вывести "One Pair", иначе;
- вывести "Nothing".
Ограничения: все числа от 1 до 13 включительно, время 1 с.
Ввод из файла poker.in. В первой строке находятся пять чисел через пробел.
Вывод в текстовое поле. Выводится одна строка - результат анализа.
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;

type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
Memo1: TMemo;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
var
all : TStringList; //Входной файл
i,j : Byte; //Счетчики
_s : Byte; //Начальная позиция комбинации "Straight"
A : array [1..5] of Byte; //Массив с исходными числами
B : array [1..13] of Byte; //Сколько раз значение j содержится в массиве A
C : array [0..2] of Byte; //Сколько и каких совпадений есть в массиве B
{
Уточнение для массива C:
C[0] - пара
C[1] - сет, трипс, три одинаковые карты
C[2] - каре, четыре одинаковых карты
----------------------------------------
C[0]=1 - Pair, C[0]=2 - Two Pair
C[1] - Free Of A Kind, может принимать только значение 0 или 1
C[2] - Four Of A Kind, может принимать только значение 0 или 1
}
begin
all := TStringList.Create;
if FileExists('poker.in') then
all.LoadFromFile('poker.in')
else begin
ShowMessage('Входной файл не найден!');
Close;
end;
all.Delimiter := ' ';
all.DelimitedText := all.Strings[0];

for i := 0 to 4 do begin
try
A[i+1] := StrToInt(all.Strings[i]);
except
ShowMessage('Неверный формат входного файла!');
Close;
end;
if A[i+1]>13 then begin
ShowMessage('Неверный формат входного файла!');
Close;
end;
if A[i+1]<1 then begin
ShowMessage('Неверный формат входного файла!');
Close;
end;
end;
all.Free;

if (A[1]=A[2]) and
(A[1]=A[3]) and
(A[1]=A[4]) and
(A[1]=A[5]) then
Memo1.Lines.Add('Impossible');

for j := 1 to 13 do
B[j] := 0;

for i := 1 to 5 do
for j := 1 to 13 do
if A[i] = j then
B[j] := B[j] + 1;

for i := 1 to 13 do
if B[i] = 1 then begin
_s := i; break;
end;

if (B[_s]=1) and
(B[_s+1]=1) and
(B[_s+2]=1) and
(B[_s+3]=1) and
(B[_s+4]=1) then
Memo1.Lines.Add('Straight');

for j := 0 to 2 do
C[j] := 0;

for i := 1 to 13 do begin
case B[i] of
2: C[0] := C[0] + 1; //пары
3: C[1] := C[1] + 1; //сет
4: C[2] := C[2] + 1; //каре
end;
end;

with Memo1.Lines do begin
if (C[0]=1) and (C[1]=0) then Add('Pair');
if (C[0]=2) then Add('Two Pair');
if (C[0]=0) and (C[1]=1) then Add('Free Of A Kind');
if (C[0]=1) and (C[1]=1) then Add('Full House');
if (C[2]=1) then Add('Four Of A Kind');
end;

if Memo1.Lines[0] = '' then
Memo1.Lines.Add('Nothing');
end;

end.
ЗАДАЧА №6. ИГРА "ДАТЫ".
Играют двое. Задается какая-то дата 2004 года. Каждый игрок на своем ходе называет более позднюю дату, увеличивая на 1 или 2 либо день в месяце, либо месяц, но не то и другое сразу. При этом сочетание дня и месяца должно оставаться датой. Игрок, назвавший 31 декабря, проигрывает. Оба играют наилучшим образом. Исходя из заданной даты, вывести, кто выиграет.
Ограничения: месяц от 1 до 12, день от 1 числа до числа дней в месяце, даты "31 декабря" во входных данных нет, время 1 с.
Ввод из файла dategame.in. В первой строке находятся разделенные пробелом числа, обозначающие день и месяц.
Вывод в текстовое поле. Вывести 1, если выиграет первый (начинающий) игрок, или 2 - в противном случае.
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;

type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
Memo1: TMemo;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function _winPos(day, month : Byte): ShortInt;
var
year : array [1..31, 1..12] of ShortInt;
{1 - если позиция выигрышная, 0 - проигрышная, -1 - такого дня не существует}
i,j : Byte; //Счетчики для циклов
predDAY : ShortInt; //Зачение вчерашнего числа
ppredDAY : ShortInt; //Значение позавчерашнего числа
predMONTH : ShortInt; //Значение того же числа в предыдущем месяце
ppredMONTH : ShortInt; //Значение того же числа 2 месяца назад
begin
year[31,12] := -1; //31 декабря не задается начальной датой
year[31,11] := -1; //31 ноября не существует
year[31, 9] := -1; //31 сентября не существует
year[31, 6] := -1; //31 июня не существует
year[31, 4] := -1; //31 апреля не существует
year[31, 2] := -1; //31 февраля не существует
year[30, 2] := -1; //30 февраля не существует
predDAY := 1;
ppredDAY := 1;
for i := 12 downto 1 do begin
for j := 31 downto 1 do begin
if year[j,i] = -1 then
continue
else begin
case i of
12 : begin
if (ppredDAY=0) and (predDAY=1) then year[j,i] := 1;
if (ppredDAY=1) and (predDAY=1) then year[j,i] := 0;
if (ppredDAY=1) and (predDAY=0) then year[j,i] := 1;
end;
11 : begin
predMONTH := year[j,12];
if predMONTH=0 then year[j,i] := 1
else begin
if (ppredDAY=0) and (predDAY=1) then year[j,i] := 1;
if (ppredDAY=1) and (predDAY=1) then year[j,i] := 0;
if (ppredDAY=1) and (predDAY=0) then year[j,i] := 1;
end;
end;
1..10 : begin
predMONTH := year[j,i+1];
ppredMONTH := year[j,i+2];
if (ppredMONTH=0) or (predMONTH=0) then year[j,i] := 1
else begin
if (ppredDAY=0) and (predDAY=1) then year[j,i] := 1;
if (ppredDAY=1) and (predDAY=1) then year[j,i] := 0;
if (ppredDAY=1) and (predDAY=0) then year[j,i] := 1;
end;
end;
end;
ppredDAY := predDAY;
predDAY := year[j,i];
end;
end;
end;

_winPos := year[day,month];

end;

procedure TForm1.FormShow(Sender: TObject);
var
all : TStringList; //Входной файл
day, month : Byte; //Заданные, начальные месяц и день
begin
all := TStringList.Create;
if FileExists('dategame.in') then
all.LoadFromFile('dategame.in')
else begin
ShowMessage('Входной файл не найден!');
Close;
end;
all.Delimiter := ' ';
all.DelimitedText := all.Strings[0];
day := StrToInt(all.Strings[0]);
month := StrToInt(all.Strings[1]);
all.Free;

{//Для тестирования работоспособности функции _winPos:
//ввести переменные j : Byte; s : string;
for j := 31 downto 1 do
s := s + (IntToStr(j) + '.2 = ' + IntToStr(_winPos(j,2)) + '******');
Memo1.Lines.Add(s); }

if _winPos(day,month) = -1 then begin
ShowMessage('Дата задана некорректно!');
Close;
end;
if _winPos(day,month) = 0 then
Memo1.Lines.Add('Выиграет второй игрок');
if _winPos(day,month) = 1 then
Memo1.Lines.Add('Выиграет первый игрок');

end;

end.
ЗАДАЧА №7. СЛОВАРЬ.
У Васи на клавиатуре не работает клавиша пробел. Поэтому все тексты он теперь набирает слитно. Напишите программу, которая будет разделять набранный Васей текст на слова из данного словаря.
Ввод программы поступает текст, введенный Васей - одна строка из не более чем 100 латинских строчных букв. В следующей строке входных данных задается значение N - количество слов в словаре (N - натуральное число, не превосходящее 2000). В следующих N строках записаны слова из словаря - по одному слову в строке, каждое слово содержит не более 20 латинских строчных букв. Слова записаны в алфавитном порядке.
Вывод Васин текст с пробелами между словами (пробел после последнего слова допустим). Если возможно несколько вариантов разбиения строки на слова, выведите любой их них. Гарантируется, что хотя бы один способ разбиения строки на словарные слова существует.
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, XPMan;

type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
Memo1: TMemo;
XPManifest1: TXPManifest;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
var
all : TStringList; //весь текст, который мы читаем из файла
vasya : String; //текст без пробелов, который набрал Василий, это первая строка
temp : String; //временная строка для сравнения во время перебора
N : Word; //число слов в словаре, вторая строка файла
i,j,k : Word; //счетчики
words : array of String; //массив со всеми словами словаря; пока его размер неизвестен; память для него не выделена
begin
all := TStringList.Create;
if FileExists('in.in') then
all.LoadFromFile('in.in')
else begin
ShowMessage('Входной файл не найден!');
Close;
end;
vasya := all.Strings[0];
N := StrToInt(all.Strings[1]);
SetLength(words, all.Count - 2);

{--------------------------Обработка ошибок во входящем файле-------------------------}
if length(vasya) > 100 then begin
ShowMessage('Длина Васиной строки превышает 100 символов');
Close;
end;

if (N > 2000) and (length(words) > 2000) then begin
ShowMessage('Превышено допустимое количество слов в словаре, ограничение: 2000');
Close;
end;

if N <> length(words) then begin
ShowMessage('Число слов в словаре отличается от указанного во второй строке входящего файла!');
Close;
end;
{-------------------------------------------------------------------------------------}

for i := 2 to (all.Count - 1) do begin
words[i-2] := all.Strings[i];
end;
all.Free;

j := 1; k := 1;
while k < length(vasya) do begin
temp := copy(vasya, j, k);
for i := 0 to (length(words) - 1) do begin
if temp = words[i] then begin
Memo1.Lines[0] := Memo1.Lines[0] + words[i] + ' ';
j := j + k; k := 0;
break;
end;
end;
k := k + 1;
if (j < length(vasya)) and (k = length(vasya)) then begin
j := j + 1; k := 1;
end;
end;
end;
end.
Вернуться к началу Перейти вниз
 
помогите. есть исходники написанные в Pascal, нужно реализовать их в PHP и Javascript. вот мой "ВКонтакте" - http://vk.com/frank74rus1
Вернуться к началу 
Страница 1 из 1
 Похожие темы
-
» [PHP] Исходники PassGen

Права доступа к этому форуму:Вы не можете отвечать на сообщения
Помощь в программировании. :: Интернет программирование :: PHP программирование-
Перейти: