Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Помогите перевести программу с Pascal на С (http://forum.oszone.net/showthread.php?t=300760)

aliska_s. 04-06-2015 21:52 2515075

Помогите перевести программу с Pascal на С
 
Вот код на языке Pascal:

program sample;
uses utils, System;
type
TDate = record
day : integer;
month: integer;
year : integer;
end;
TFIO = record
Name : string;
Family : string;
Additional : string;
end;
TATSInfo = record
ATStype: string;
ATSphoneNumber: integer;
ATSfio: TFIO;
ATSadress: string;
ATStarif: string;
ATScost: integer;
ATSlastPay: TDate;
end;

var
i, j, N : integer;
ATSList : array of TATSInfo;
Hist : array of integer;
ATSUniq : array of string;
Abonent1, Abonent2, tmpAbonent : TATSInfo;
typeAction : integer;
phoneNumber, currentNumber : integer;
ATSName, currentATS : string;
d : DateTime;
begin
writeln('Введите количество записей');
readln(N);

SetLength(ATSList, N);
for i := 0 to N - 1 do
begin
with ATSList[i] do
begin
writeln('Введите название АТС');
readln(ATStype);
writeln('Введите номер телефона абонента');
readln(ATSPhoneNumber);
writeln('Введите фамилию, имя и отчество абонента');
writeln;
with ATSfio do
begin
writeln('Введите имя');
readln(name);
writeln('Введите фамилию');
readln(Family);
writeln('Введите отчество');
readln(Additional);
end;
writeln('Введите адрес абонента');
readln(ATSadress);
writeln('Введите название тарифа');
readln(ATStarif);
writeln('Введите размер абонентской платы');
readln(ATScost);
writeln('Введите дату последнего платежа');
writeln;
with ATSlastPay do
begin
writeln('Введите число');
readln(day);
writeln('Введите месяц');
readln(month);
writeln('Введите год');
readln(year);
end;
end;
end;

writeln;
writeln('Выберите действие');
writeln('1 - Найти абонента по номеру телефона');
writeln('2 - Упорядочить информацию по ФИО абонента');
writeln('3 - Вывод абонентов определенной АТС');
writeln('4 - Вывод абонентов должников текущего месяца в формате dd:mm:yy');
writeln('5 - Вывод процентного соотношения абонентов различных АТС');
writeln('0 - Выход');
writeln;
readln(typeAction);

case typeAction of
1:
begin
writeln('Введите номер телефона абонента');
readln(phoneNumber);
writeln;
for i := 0 to N - 1 do
begin
with ATSList[i] do
begin
currentNumber := ATSPhoneNumber;
if (currentNumber = phoneNumber) then
begin

writeln(ATStype, ' ', ATSfio.Name, ' ', ATSfio.Family, ' ', ATSfio.Additional, ' ', ATSadress, ' ', ATStarif, ' ', ATScost, ' / ', ATSlastPay.day, ' ', ATSlastPay.month, ' ', ATSlastPay.year );
break;
end;
end;
end;
end;
2:
begin
for i := 0 to N - 2 do
begin
for j := 0 to N - i - 1 do
begin
Abonent1 := ATSList[i];
Abonent2 := ATSList[i + 1];
if (Abonent1.ATSfio.Family[1] > Abonent2.ATSfio.Family[1]) then
begin
tmpAbonent := Abonent1;
Abonent1 := Abonent2;
Abonent2 := tmpAbonent;
end;
ATSList[i] := Abonent1;
ATSList[i + 1] := Abonent2;
end;
end;

writeln('Выберите действие');
writeln('1 - Найти абонента по номеру телефона');
writeln('2 - Упорядочить информацию по ФИО абонента');
writeln('3 - Вывод абонентов определенной АТС');
writeln('4 - Вывод абонентов должников текущего месяца в формате dd:mm:yy');
writeln('5 - Вывод процентного соотношения абонентов различных АТС');
writeln('0 - Выход');
writeln;
for i:=0 to N - 1 do
begin
with ATSList[i] do
begin
writeln(ATStype, ' ', ATSPhoneNumber, ' ', ATSfio, ' ', ATSadress, ' ', ATStarif, ' ', ATScost, ' / ', ATSlastPay.day, ' ', ATSlastPay.month, ' ', ATSlastPay.year );
end;
end;
end;
3:
begin
writeln('Введите название АТС');
readln(ATSName);
writeln;
writeln('Выберите действие');
writeln('1 - Найти абонента по номеру телефона');
writeln('2 - Упорядочить информацию по ФИО абонента');
writeln('3 - Вывод абонентов определенной АТС');
writeln('4 - Вывод абонентов должников текущего месяца в формате dd:mm:yy');
writeln('5 - Вывод процентного соотношения абонентов различных АТС');
writeln('0 - Выход');
writeln;
for i := 0 to N - 1 do
begin
with ATSList[i] do
begin
currentATS := ATSName;
if (currentATS = ATSName) then
begin
writeln(ATSPhoneNumber, ' ', ATSfio.Name, ' ', ATSfio.Family, ' ', ATSfio.Additional, ' ', ATSadress, ' ', ATStarif, ' ', ATScost, ' / ', ATSlastPay.day, ' ', ATSlastPay.month, ' ', ATSlastPay.year );
break;
end;
end;
end;
end;
4:
begin
writeln('Введите название АТС');
readln(ATSName);
writeln;
writeln('Выберите действие');
writeln('1 - Найти абонента по номеру телефона');
writeln('2 - Упорядочить информацию по ФИО абонента');
writeln('3 - Вывод абонентов определенной АТС');
writeln('4 - Вывод абонентов должников текущего месяца в формате dd:mm:yy');
writeln('5 - Вывод процентного соотношения абонентов различных АТС');
writeln('0 - Выход');
writeln;
d := DateTime.Today;
for i := 0 to N - 1 do
begin
with ATSList[i] do
begin
with ATSlastPay do
begin
if d.Month >= Month then
begin
if d.Day > 25 then
begin
writeln(ATStype, ' ', ATSPhoneNumber, ' ', ATSfio.Name, ' ', ATSfio.Family, ' ', ATSfio.Additional, ' ', ATSadress, ' ', ATStarif, ' ', ATScost, ' / ', ATSlastPay.day, ' ', ATSlastPay.month, ' ', ATSlastPay.year );
end;
end;
end;
end;
end;
end;
5:
begin
SetLength(Hist, N);
SetLength(ATSUniq, N);
for i := 0 to N - 1 do
begin
with ATSList[i] do
begin
currentATS := ATStype;
for j := 0 to N - 1 do
begin

end;
end;
end;
end;
0:
begin
halt;
end;
else
begin
halt;
end;
end;

ATSList := nil;
end.

yurfed 04-06-2015 22:36 2515089

aliska_s., текст читается читается с трудом. оформите по человечески и вставьте в тег [code]текст[/code]
Ну и посмотрите http://www.garret.ru/pascal.html

mwz 05-06-2015 00:20 2515111

yurfed, таки вы думаете, что он(а) вернётся?

Iska 05-06-2015 07:47 2515136

«Они всегда возвращаются!» :). Правда, обычно под новым именем.

greg zakharov 05-06-2015 19:33 2515347

Iska, "толи девочки, а толь привидения..."

yurfed 05-06-2015 22:05 2515374

Цитата:

Цитата mwz
таки вы думаете, что он(а) вернётся? »

Я начинаю думать что это ОНО самое...

mwz 06-06-2015 09:17 2515444

Цитата:

Цитата yurfed
начинаю думать что это ОНО самое »

Это ковровое бомбометание по форумам: авось где сразу курсовую сделают, а не станут учить, как надо делать. ;)
И читать при этом всякую там литературу и проверять советы – только время терять.

Iska 06-06-2015 23:02 2515596

Он(а) таки вернулось :).

mwz 07-06-2015 01:29 2515619

Iska, похоже что с очередным бомбометанием... Пора курсовых? ;)


Время: 00:07.

Время: 00:07.
© OSzone.net 2001-