Перевод с Pascal на С
Добавлено: 04 июн 2015, 22:02
Помогите перевести программу с Pascal на С
Вот код программы на языке 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;