0 / 0 / 3
Регистрация: 14.07.2015
Сообщений: 104
1

Типизированные файлы

07.12.2016, 18:23. Показов 871. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужна помощь с задачей: В файле f записей хранится следующая информация о товарах, имеющихся на складе: наименование товара, цена единицы товара, общая стоимость и количество. В файле записей g хранится информация о заказах: наименование товара и его количество. Обновить файл f с учетом отпущенных товаров в соответствии с заказами из файла g. Если товар отпущен полностью, запись о нем из файла f удаляется.
Делаю так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Uses Crt;
type
    base = record
     nameid: string[3];
     k:integer;
    end;
 
    base2 = record
    nameid: string[3];
    k:integer;
 
    end;
 
 var
   f:file of base;
   s:base;
   i,j,n,m,h:integer;
   f2:file of base2;
   d:base2;          
 begin clrscr;
   Assign(f,'f.txt');  Assign(f2,'f2.txt'); Rewrite(f);Rewrite(f2); FileMode:=2;
 Writeln('write zakaz '); Readln(n);  Writeln('write sklad');Readln(m);
 
     for i:=1 to n do
     begin
     with s do begin
     Write('Write name ');
     Readln(nameid);
     Write('write k '); Readln(k);
     end;
     Write(f,s); end; Close(f);
 
     for i:=1 to m do
     begin
     with d do begin
     Write('Write name ');
     Readln(nameid);
     Write('write k '); Readln(k);
     end;
     Write(f2,d); end; Close(F2);
 
     Reset(f); Reset(f2);
     for i:=1 to n do begin
        Read(f,s);
        for h:=1 to m do begin
        Read(f2,d); j:=j+1;
 
      if s.nameid = d.nameid then begin
      if s.k = d.k then begin
      //тут
      end else begin  d.k:=d.k-s.k; //тут
    end;    end; end; end;  close(f2);Close(f);
         Reset(f2);
 
        for i:=1 to m do begin
        Read(f2,d);
        Writeln(d.nameid); Writeln(d.k);
        end;
 
    Close(f2);
 end.
Здесь f- файл с заказом. f2- файл с информацие о товарах на складе. Создал две записи т.к. позже они будут отличатся.
n- кол- во записей в файле с заказом. m - кол-во зап. склада.nameid - имя товара. k - его кол-во.
Собственно проблема в том что я не знаю как мне изменить строку, тоесть заменить старое значение d.k на новое. Или же удалить всю строку если d.k и s.k будут равны.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2016, 18:23
Ответы с готовыми решениями:

Типизированные файлы
Создать файл F1, компонентами которого являются целочисленные массивы a1,.., a10, закрыть его....

Не типизированные файлы.
Доброго времени суток. Прошу проверить логику программы. Задание следующие: Создать не...

Типизированные файлы
Дан файл,содержащий данные о выдаче книг в библиотеке. Он содержит дату выдачи,фамилию автора и...

типизированные файлы
даны два символьных файла одинакового размера.проверить,совпадают ли их компоненты.если нет,то...

1
0 / 0 / 3
Регистрация: 14.07.2015
Сообщений: 104
08.12.2016, 18:57  [ТС] 2
В общем решил создать 3 файл. Получилось. Работает, правдо только если у меня по 1 записи там и там. Если пробую добавить в файл со складом(f2) чутть больше записей чем 1 то выходит ошибка с №100. Как я понял это попытка считать больше записей чем есть. Наверное я не совсем верно записываю в файлы данные или еще что...
В общем вот код. Надеюсь в этот раз ответ будет.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Uses Crt;
type
    base = record
     nameid: string[3];
     k:integer;
    end;
 
    base2 = record
     nameid: string[3];
     k:integer;
    end;
 
 var
   f:file of base;
   s:base;
   i,j,l:integer;
   f2:file of base2; f3:file of base2;
   d:base2;   n,m,k,h:integer;
 begin clrscr;
   Assign(f,'f.txt');  Assign(f2,'f2.txt'); Rewrite(f);Rewrite(f2);  FileMode:=2;
 Writeln('write zakaz '); Readln(n);  Writeln('write sklad');Readln(m);  Assign(f3,'f3.txt');  Rewrite(f3);Close(f3);
   j:=0;  l:=0;
     for i:=1 to n do
     begin
     with s do begin
     Write('Write name ');
     Readln(nameid);
     Write('write k '); Readln(k);
     end; seek(f,l);l:=l+1;
     Write(f,s); end; Close(f);
 
     for i:=1 to m do
     begin
     with d do begin
     Write('Write name ');
     Readln(nameid);
     Write('write k '); Readln(k);
     end;  seek(f2,j); j:=j+1;
     Write(f2,d); end; Close(F2);
 
     Reset(f); Reset(f2);  j:=0; l:=0;
      while not eof(f) do
  begin
        Read(f,s);l:=l+1;
        while not eof(f2) do
    begin
          Read(f2,d); j:=j+1;
          if s.nameid = d.nameid then
       begin
         if s.k <> d.k then
          begin
            Reset(f3);
            d.k:=d.k-s.k;
            Write(f3,d);
            Close(f3); seek(f2,j);
          end else seek(f2,j);
       end
        else
        begin reset(f3);Write(f3,d);Close(f3);seek(f2,j); end;seek(f,l);
    end;
   end;
        close(f2);Close(f);
 
         Reset(f3);
        for i:=1 to m do 
      begin
        Read(f3,d);
        Writeln(d.nameid); 
        Writeln(d.k);
       end;
 
         Close(f3);
 end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2016, 18:57
Помогаю со студенческими работами здесь

типизированные файлы
Добрый ВЕЧЕР!Запарился с задачкой, помогите мне пожалуйста! Задан файл содержащий...

Типизированные файлы
Ввести файл F1 . Записать в файл F2 компоненты файла F1 в обратном порядке. В каждом из файлов...

Типизированные файлы
Помогите с составлением кода по теме типизированные файлы. Тоже условие задачи по теме...

Типизированные файлы
Описать процедуру append(f,g,h) от трех типа char, которая записывает в файл f сначала все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru