Приветствую Вас Гость | RSS

Delphi заготовки

Пятница, 10.05.2024, 09:21
Главная » 2012 » Ноябрь » 26 » Решение задачь на Delphi
08:48
Решение задачь на Delphi
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils,windows;

{ С клавиатуры вводятся записи, содержащие наименование игрушки и цену.
Напеча-тать список игрушек, упорядоченный по возрастанию цен. Добавить в список новый элемент.
}
  type
    TAverCode=record
        name:string; // название
        Price:real; {цена игрушки}
    end;
    TArray = array of TAverCode;
 var
   a:TArray;


{для перекодировки симовлов
взято с сайта
http://netsoftware.ucoz.ru/news/wintodos_dostowin_perekodirovka_simovlov_cherez_mozhul_windows/2012-11-26-106
}
function WinToDos(St: string): string; // перекодировка из Win кодировки в Dos
var
  Ch: PChar;
begin
  Ch := StrAlloc(Length(St) + 1);
  AnsiToOem(PChar(St), Ch);
  Result := Ch;
  StrDispose(Ch)
end;

function DosToWin(St: string): string;  // перекодировка из Dos  кодировки в Win
var
  Ch: PChar;
begin
  Ch := StrAlloc(Length(St) + 1);
  OemToAnsi(PChar(St), Ch);
  Result := Ch;
  StrDispose(Ch)
end;

  Procedure sort(var a:TArray);        // сортировка динамического массива
  var b:TAverCode;
  nmax,j,x,y:integer;
  begin
  nmax:=Length(a)-1;
     for x:=0 to nmax do
     for y:=x+1 to nmax do
     if a[x].price>a[y].price then begin
      b:=a[x];
      a[x]:=a[y];
      a[y]:=b;
     end;
  end;
  Procedure AddF(Name:string;Price:real;var a:TArray);   // Добавление записи в динамический массив
  begin
      SetLength(a,length(a)+1);
      a[length(a)-1].name:=WinToDos(name);
      a[length(a)-1].Price:=Price;
  end;
 Procedure display(var a:TArray);                  // вывод на экран динамический массив
 var n,x:integer;
 begin
 n:=Length(a)-1;
   for x:=0 to n do begin
     Write(a[x].name,'   ',a[x].price:4:2);
     Writeln;
   end;
 end;

var x,n:integer;
    s:string;
    price:real;
begin
{AddF('Ишрушка 1 ',44.5,a);
AddF('Ишрушка 2 ',45.5,a);
AddF('Ишрушка 3 ',84.5,a);
AddF('Ишрушка 4 ',14.5,a);
AddF('Ишрушка 5 ',34.5,a);
AddF('Ишрушка 6 ',22.5,a);
AddF('Ишрушка 7 ',15.5,a);}

  Writeln(WinToDos('Введите кол-во игрушек '));
  Readln(N);
  for x:=0 to n-1 do begin
    Writeln(WinToDos('Введите название игрушки'));
    readln(s);
    Writeln(WinToDos('Введите цену'));
    readln(price);
    AddF(DosToWin(s),price,a);
  end;
Writeln(WinToDos('Исходная таблица '));
display(a);
readln;
Writeln(WinToDos('Сортировка '));
sort(a);
display(a);
readln;


  { TODO -oUser -cConsole Main : Insert code here }

end.

Просмотров: 870 | Добавил: NetSoftWare | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: