Пожайлуста, помогите решить 2 задачки для экзамена!!!!

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, dr.Jekill, MOTOCoder, Medved

Ответить
Wudro
Сообщения: 8
Зарегистрирован: 08 май 2005, 00:37

08 июн 2005, 00:22

На файлы
Написать программу, которая считывает текстовый файл, выравнивает содержащийся в нем текст по правой границе и выводит результат в другой текстовый файл.


На процедуры и функции
Напишите функцию, которая для любого целого аргумента возвращает целое значение, полученное изменением порядка следования цифр на обратный.


Или хотя бы одну из них!!!!
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

08 июн 2005, 11:49

на каком языке надо ?
В SAD - все в SAD.
VirusXP
Сообщения: 12
Зарегистрирован: 07 июн 2005, 20:00
Откуда: Москва
Контактная информация:

08 июн 2005, 12:29

лОви). за 15 минут налабал... осталось впаять проверки на переменные...
--------------------------
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;

var
Form1: TForm1;

implementation

type TArr = array of Extended;

{$R *.dfm}

function GetFinishDigit(AExtended: extended): extended;
begin
result := AExtended - 10 * Int(AExtended / 10);
end;

function GetDigit(AExtended: extended; i: integer): extended;
begin
if i = 0 then
result := GetFinishDigit(AExtended)
else
result := GetFinishDigit(Int(AExtended / Power(10, i)));
end;

procedure InitArray(AExtended: extended; var Arr: TArr);
var i: integer;
begin
if Assigned(Arr) then
for i := 0 to length(Arr) - 1 do
Arr := GetDigit(AExtended, i);
end;

function InvertExtended(Arr: TArr): extended;
var i:integer;
begin
result := 0;
if Assigned(Arr) then
for i := 0 to length(Arr) - 1 do
result := result + Arr * Power(10, length(Arr) - i - 1);
end;

procedure TForm1.Button1Click(Sender: TObject);
var lExtended, lResult: extended;
lArr: TArr;
st: string;
begin
lExtended := StrToInt(Edit1.Text);
Str(strtoint(Edit1.Text), st);
SetLength(lArr, length(st));
InitArray(lExtended, lArr);
lResult := InvertExtended(lArr);
Str(lResult, st);
Edit2.Text := st;
end;

end.
VirusXP
Сообщения: 12
Зарегистрирован: 07 июн 2005, 20:00
Откуда: Москва
Контактная информация:

08 июн 2005, 13:33

а чтоб не извращаться нужно просто перевернуть строку:
----------
function InvertString(AString: string): string;
var
lStringLength, i: integer;
begin
lStringLength := length(AString);
for i := 1 to lStringLength do
result := result + AString[lStringLength-i+1];
end;
VirusXP
Сообщения: 12
Зарегистрирован: 07 июн 2005, 20:00
Откуда: Москва
Контактная информация:

08 июн 2005, 14:18

а насчет выравнивания - примерно так...
----
function GetNullString(ALength: integer): string;
var i: integer;
begin
result:='';
for i := 1 to ALength do result := result + ' ';
end;

procedure TForm1.Button1Click(Sender: TObject);
const RightLine = 100;
var fRead, fWrite: TextFile;
st: string;
begin
AssignFile(fRead, 'c:\1.txt');
Reset(fRead);

AssignFile(fWrite, 'c:\2.txt');
ReWrite(fWrite);

while not EOF(fRead) do
begin
Readln(fRead, st);
if length(st) < RightLine then st := GetNullString(RightLine - length(st)) + st;
WriteLn(fWrite, st);
end;

CloseFile(fWrite);
CloseFile(fRead);
end;
Ответить