IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Задание на файлы в Турбопаскале 7.0. (http://www.imho.ws/showthread.php?t=117296)

Wild Orchid 28.03.2007 16:25

Задание на файлы в Турбопаскале 7.0.
 
Вложений: 1
Кому не сложно, помогите, пожалуйста с заданием на файлы в Турбопаскале. :молись: Для меня это, к сожалению, тёмный лес...:confused: Задачка сложная, но если кто возьмётся, буду очень благодарна! Вот она...

Вложение 55137

CPUser 29.03.2007 07:08

Вложений: 1
Цитата:

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

Вложение 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. В приложении откомпиллированная программка ;)

Wild Orchid 29.03.2007 12:55

Большое-большое тебе спасибо! Я почти счастлива! :jump: Только не очень понятно, где в программе ограничение на ввод данных? Я так поняла, я сама должна его написать или я чего-то не вижу?
З.Ы.: Ещё раз спасибо:молись:

CPUser 29.03.2007 17:12

Цитата:

Сообщение от Wild Orchid (Сообщение 1383583)
Только не очень понятно, где в программе ограничение на ввод данных? Я так поняла, я сама должна его написать или я чего-то не вижу?


Цитата:

Сообщение от CPUser (Сообщение 1383425)
никаких доп. проверок на корректность данных нет - только выполнение задания - дорисуйте на свой вкус ):

Добавить ограничение на ввод данных, я полагаю, не будет слишком сложно. Насколько способен понять, проблема у Вас заключалась в написании модуля работы с файлами, который в вышеприведенном листинге присутствует.
По поводу интерфейса, вроде, уже говорил... ;)

"Спасибы" просьба в репутацию! ;)

Яночка 15.04.2007 21:27

Люди, помогите пожалуйста! Нам скоро курсовую по программированию сдавать, а я не успеваю сделать все задания. Кто может, пожалуйста решите такую задачку:

Один из играющих задумывает число от 1 до 1000, другой пытается угадать его за десять вопросов вида: верно ли, что задуманое число больще такого-то числа? Написать программу, работающую за отгадчика.


Заранее благодарю!

CPUser 16.04.2007 00:20

2 Яночка:
Программку составил; код Вам будет виден, как только общее Ваше количество публикаций ("постов") на форуме будет равным или больше пяти.

Сделано мной это было умышленно, по причине вероятности того, что Ваш аккаунт является зеркалом аккаунта Wild Orchid, что означало бы нежелание соответствующего "мультиаккаунтовода" участвовать в форуме иным образом, как получая с него информацию, не предоставляя ничего взамен, да еще и "напрягая" своими запросами форумчан, что мной трактуется как негативное поведение в виртуальной среде и ни в коем случае не одобряется...

Простите, если мои умозаключения оказались ошибочными, но и в этом случае, я полагаю, Вам было бы полезно почитать публикации остальных "имховцев", оставив на форуме свой след в виде четырех "постов"-комментариев - это не трудно. ;)


Plague 16.04.2007 01:13

Цитата:

Сообщение от CPUser (Сообщение 1393429)
Программку составил; код Вам будет виден, как только общее Ваше количество публикаций ("постов") на форуме будет равным или больше пяти.

головой думай!!!! :mad:

если есть подозрения на мультиакк, - сообщи об этом администрации, а не устраивай саморасследований, и не провоцируй пользователей на флуд


Часовой пояс GMT +4, время: 10:51.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.