PDA

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



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


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


Или хотя бы одну из них!!!!

Kolinus
08.06.2005, 11:49
на каком языке надо ?

VirusXP
08.06.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[i] := 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[i] * 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
08.06.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
08.06.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;