Показать сообщение отдельно
Старый 29.03.2007, 07:08     # 2
CPUser
Junior Member
 
Аватар для CPUser
 
Регистрация: 26.09.2004
Адрес: в Интернете
Сообщения: 138

CPUser Известность не заставит себя ждать
Цитата:
Сообщение от Wild Orchid Посмотреть сообщение
Кому не сложно, помогите, пожалуйста с заданием на файлы в Турбопаскале. Для меня это, к сожалению, тёмный лес... Задачка сложная, но если кто возьмётся, буду очень благодарна! Вот она...

Вложение 55137
Цитата:
В овощном магазине имеется информация об ассортименте овощей, включающая: название (капуста, картофель, лук, чеснок, морковь, свёкла), а также цену, дату поступления и количество. Вам необходимо сделать следующее:
1. Обеспечить приём данных с клавиатуры в режиме диалога и запись их в файл.
2. После приёма данных программа должна рассортировать введённые данные по названию и записать их в различные файлы в порядке убывания стоимости, а при равенстве - в порядке возрастания количества.
3. После этого необходимо проверить наличие файлов на диске и распечатать список имеющихся файлов с краткими пояснениями о том, что находится в каждом файле. Кроме того, должна быть обеспечена возможность перехода в начало программы для добавления новых данных, а также возможность окончания работы с программой.
4. Затем должна быть обеспечена возможность выбора интересующего файла и распечатка его содержимого в окне белого цвета красными буквами (весь остальной экран должен быть голубого цвета).
5. После просмотра интересующего файла необходимо вернуться к пункту 3.
Очевидное решение (выглядит не супер, никаких доп. проверок на корректность данных нет - только выполнение задания - дорисуйте на свой вкус ):

Код:
program veg_shop; {Made by Paul Safre aka CPUser}

uses Crt;

type
    vgtbl=record
                tname:string[10];
                pric,amou:integer;
                dat:string[10];
    end;

var
   vti:array[1..6] of vgtbl;

   curr,c2:byte;
   sa,sb:integer; {sorting purposes}
   sc:vgtbl; {same p. - 4 swap}
   sf:string[14]; {a string for filenames}

   f1:file of vgtbl;



label
   inp,einp,chk,rk1,rk2;



begin



{Stage 1 ;)}

     curr:=0;

     TextColor(white);
     TextBackground(black);
     ClrScr;
     writeln('Vegetable shop. v.1.0b');
     writeln('______________________');
     writeln('');


inp: inc(curr,1);
     writeln('');
     write('Veg.type (0 for none):');
     readln(vti[curr].tname);
     if vti[curr].tname='0' then
        begin
             curr:=curr-1;
             goto einp;
        end;

             write('Its price:');
             readln(vti[curr].pric);

             write('Its delivery date:');
             readln(vti[curr].dat);

             write('Its amount:');
             readln(vti[curr].amou);


             writeln('');

             goto inp;

einp:        assign(f1,'vgtbl_db');
             rewrite(f1);
             for c2:=1 to curr do
                 write(f1,vti[c2]);
             close(f1);

{Stage 2}

       {Name sorting}
for sa:=1 to curr-1 do
    for sb:=sa+1 to curr do
        begin
             if vti[sa].tname>vti[sb].tname then
                begin
                     sc:=vti[sa];
                     vti[sa]:=vti[sb];
                     vti[sb]:=sc
                end; {of IF}
        end;

        {Further sorting}

for sa:=1 to curr-1 do
    for sb:=sa to curr do
        begin
             if vti[sa].pric<vti[sb].pric then
                begin
                     sc:=vti[sa];
                     vti[sa]:=vti[sb];
                     vti[sb]:=sc
                end; {of IF}
             if (vti[sa].pric=vti[sb].pric) and (vti[sa].amou>vti[sb].amou) then
                begin
                     sc:=vti[sa];
                     vti[sa]:=vti[sb];
                     vti[sb]:=sc
                end; {of IF}
        end;


    for sa:=1 to curr do
        begin
             assign(f1,vti[sa].tname+'.dat');
             rewrite(f1);
             write(f1,vti[sa]);
             close(f1);
        end;


{Stage3}


chk:  for sa:=1 to curr do
        begin
             writeln('');
             sf:=vti[sa].tname+'.dat';
             assign(f1,sf);
             reset(f1);
             read(f1,sc);
             close(f1);
             write(sf+' was');
             TextColor(green);
             write(' successfully found ');
             TextColor(white);
             writeln('with the information about '+sc.tname+' in it!');
        end;


rk1: writeln('');
writeln('__________________');
writeln('');
writeln('What would you like to do now?');
writeln('[q] - quit the program');
writeln('[i] - add some products');
writeln('[p] - print a file (in the console)');
sf:=readkey;

if sf='q' then halt(0);
if sf='i' then goto inp;
if sf='p' then
            begin

              for sa:=1 to curr do
              begin
               write(sa);
               writeln(' - '+vti[sa].tname+'.dat');
              end; {of FOR}

rk2:          sf:=readkey;
              val(sf,sa,sb);
              if (sa<1) or (sa>curr) then goto rk2;



              TextBackground(blue);
              ClrScr;
              TextColor(red);

              window(20,7,50,21);
              GotoXY(1,1);
              TextBackground(white);
              ClrScr;

              writeln('');
              writeln('Product name:');
              writeln(vti[sa].tname);
              writeln('');
              writeln('Price:');
              writeln(vti[sa].pric:2);
              writeln('');
              writeln('Delivery date:');
              writeln(vti[sa].dat);
              writeln('');
              writeln('Amount:');
              writeln(vti[sa].amou:2);
              writeln('');
              write('[Strike any key to continue]');

              readkey;

              window(1,1,80,25);
              TextBackground(black);
              ClrScr;
              TextColor(white);

            end;

goto rk1;


end.
P.S. В приложении откомпиллированная программка
Вложения
Тип файла: zip VEGSHOP2.zip (5.3 Кбайт, 3 просмотров - Кто скачивал? )
CPUser вне форума