IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задача на файл, некоторые проблемы
what is
сообщение 4.04.2007 20:50
Сообщение #1


только вперед...
*

Группа: Пользователи
Сообщений: 20
Пол: Женский

Репутация: -  1  +


Помогите разобраться,плиз...

Задача состоит в следущем:
создать многоуровневую диалоговую программу, с помощью которой создается основной файл и 2 файла справочника. Для основного файла надо предусмотреть создание нового, открытие существующего, печать, также его редактирование(добавление, удаление записей) и сортировку входных данных по первому компоненту.

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

вот основная прога, которая выводит основное меню и запускает модуль

Program menu1;
Uses modmenu111;

var
     choice,count,code:integer;
     flag:boolean;
     answer:char;
     choice1:string;

 begin
     writeln('           Laboratornaya rabota 2 ');
     writeln('                  Variant 4 ');
    
     writeln;
     flag:=true;
     while flag=true do
     begin
          writeln('..................MENU...................');
          writeln('..1. Vedenie osnovnogo faila           ..');
          writeln('..2. Vedenie spravo4nikov              ..');
          writeln('..3. Formirovanie vedomostei          ..');
          writeln('..4. Vihod                                 ..');
          writeln('..........................................');
          writeln;
          writeln('vash vibor:');

          count:=0;
          repeat
                readln(choice1);
                val(choice1,choice,code);
                if (code<>0)then
                    writeln ('vvedeno ne 4islo');
                    count:=count+1;
                    if count>3 then
                    begin
                         writeln ('4islo popitok is4erpano');
                         halt;
                    end
          until code=0;
          Case choice of
               1:begin
                       podmenu1;;
                 end;
               2:begin
                       podmenu2;
                 end;
               3:begin
                       podmenu3;
                 end;
               4:begin
                      writeln('Vi deistvitelno hotite viyti iz programmi? <y\n>');
                      readln(answer);
                      if answer='y' then
                      flag:=false;
                 end
          else writeln('Oshibka!!!Vibran nevirnyi punkt menu:',choice);
          end;
     end;
end.


.

вот сам модуль(выкладываю только процедуры на основной файл)

unit modmenu1;
{модуль всех процедур для пунктов главного меню и всех подменю}
interface
type tosnfile=record     {основной файл}
        cod_stock:integer;
        cod_ceh:integer;
        nom_num:integer;
        data:string;
        kol_vo:integer
          end;
 procedure podmenu1;
 procedure vvodfile;
 procedure printfile;
 procedure drawtabfile;
 procedure drawlegs;
 procedure sort(var f:atosnfile;n:byte);
implementation
 --------------------------------{подменю для первого пункта меню}-----------------------------------------------
     procedure podmenu1;
     var
         choice,count,code:integer;
         flag:boolean;
         answer:char;
         choice1:string;
     begin
           flag:=true;
           while(flag=true) do
           begin
                writeln('.1.Vedenie osnovnogo faila............');
                writeln('......................................');
                writeln('.1.1 Sozdanie novogo faila           .');
                writeln('.1.2 Korrektirovka osnovnogo faila   .');
                writeln('.1.3 Prosmotr osnovnogo faila        .');
                writeln('.1.4 Pe4at osnovnogo faila           .');
                writeln('.1.5 Vozvrat v glavnoe menu          .');
                writeln('......................................');
                writeln;
                writeln('vash vibor:');
                count:=0;
                repeat
                      readln(choice1);
                      val(choice1,choice,code);
                      if (code<>0)then
                           writeln ('vvedeno ne 4islo');
                           count:=count+1;
                      if count>3 then
                      begin
                           writeln ('4islo popitok is4erpano');
                           halt;
                      end
                until code=0;
                case choice of
                1:begin
                       vvodfile;
                  end;
                2:begin
                  end;
                3:begin
                       printfile;
                  end;
                4:begin
                       printfile;
                  end;
                5:begin
                       flag:=false;
                  end
                else writeln('Oshibka!!!Vibran neverniy punkt menu:',choice);
                end;
          end;
     end;

    ------------------- {процедура создания нового основного файла}-------------------------------
     procedure vvodfile;
     var
         osnfile:file of atosnfile;
         zap:atosnfile;
         namefile:string;
         flajok:boolean;
         answer:char;
         i,n:byte;
     begin
          writeln('vvedite imya osnovhogo faila(s rasshireniem .txt):');
          readln(namefile);
          assign(osnfile,namefile);
          rewrite(osnfile);
          flajok:=true;
          writeln('Vvedite kol-vo zapisey, kotorie sobiraetes vvodit:');
          readln(n);
          for i:=1 to n do
          with zap[i]  do
             begin
                  writeln('ZaPiS N ',i);
                  writeln('>Vvedite kod sklada:');
                  readln(cod_stock);
                  writeln('>vvedite kod ceha-izgotovitelya:');
                  readln(cod_ceh);
                  writeln('>vvedite nomen. nomer izdeliya:');
                  readln(nom_num);
                  writeln('>data postupleniya /ddmmyy/ :');
                  readln(data);
                  writeln('>vvedite kol-vo izdelii:');
                  readln(kol_vo);
                  write(osnfile,zap);
                  writeln('vvod dannih zavershen? <y/n>: ');
                  readln(answer);
                  if answer='y' then
                  Break;
            end;
         close(osnfile);
         assign(osnfile,namefile);
         reset(osnfile);
         sort(zap,n);
         write(osnfile,zap);
         close(osnfile);
     end;
---------------------------{процедура распечатки(вывода на экран) основного файла}---------------------------------
     procedure printfile;
     var
        namefile:string;
        osnfile:file of tosnfile;
        zap:tosnfile;
     begin
          writeln ('Vvedite imiya faila dlya pe4ati');
          readln (namefile);
          assign(osnfile,namefile);

          reset(osnfile);
          writeln('Pe4at faila: ',namefile);
          drawtabfile;
          repeat
                read(osnfile,zap);
                writeln('*',zap.cod_stock:12,'*',zap.cod_ceh:10,'*', zap.nom_num:10,'*',zap.data:8,'*',zap.kol_vo:8,'*');
                drawlegs;
          until (EOF(osnfile));
          close(osnfile);
          writeln;
     end;
--------------------------{процедура рисует подобие таблицы}------------------------------------------------
procedure drawtabfile;
     begin
           writeln('******************************************************');
           writeln('*    KOD     * KOD CEHA *  NOMEN.  *  DATA  * KOL-VO *');
           writeln('*  SKLADA    * IZGOTOV. *  NOMER   *        * IZDELIY*');
           writeln('******************************************************');
     end;
-------------------------------{процедура рисует линии-ограничители}-----------------------------------------------
     procedure drawlegs;
     begin
           writeln('******************************************************');
     end;
-------------------------------{процедура сортировки по коду склада}----------------------------------------------

вот в ней то и проблема
     procedure sort(var f:atosnfile;n:byte);
     var
        i:byte;
        zap:tosnfile;
        flag:boolean;
     begin
        repeat
          flag:=true;
          for i:=1 to n-1 do
             if not (f[i].cod_stock >= f[i+1].cod_stock) then
             begin
                 zap:=f[i];
                 f[i]:=f[i+1];
                 f[i+1]:=zap;
                 flag:=false;
             end;
         until flag;
     end;
end.

.

все на что меня хватило.Дальше - мозговой затык.... wacko.gif
Отредактировать файл уже нет мыслей никаких....
Подскажите, пожалуйста....уже замучалась....



Сообщение отредактировано: what is - 4.04.2007 21:22


--------------------
Завтра будет. Лучше???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 29.07.2025 9:30
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"