![]() |
Помогите перевести программу с 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. |
aliska_s., текст читается читается с трудом. оформите по человечески и вставьте в тег [code]текст[/code]
Ну и посмотрите http://www.garret.ru/pascal.html |
yurfed, таки вы думаете, что он(а) вернётся?
|
«Они всегда возвращаются!» :). Правда, обычно под новым именем.
|
Iska, "толи девочки, а толь привидения..."
|
Цитата:
|
Цитата:
И читать при этом всякую там литературу и проверять советы – только время терять. |
Он(а) таки вернулось :).
|
Iska, похоже что с очередным бомбометанием... Пора курсовых? ;)
|
Время: 00:07. |
Время: 00:07.
© OSzone.net 2001-