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

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

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

> 2 типизированных файла, задача с файлами
сообщение
Сообщение #1


Гость






Помогите, пожалуйста, решить задачу, которую я решаю уже месяца 2..
Вот условие:
Даны 2 файла:
F1:шифр продукции; наименование
F2:№ склада; шифр продукции; количество

На одном складе может быть несколько видов продукции и продукция с одним шифром может встречаться в разных записях(т.е. в разных записях по файлу, на каждом складе в различных количествах?)

Нужно выдать ведомость для каждого склада:
[Шифр; наименование; количество(сумма)]

Значение номера склада печатать только в заголовке и подсчитать количество различных видов продукции на каждом складе.
Пример:
------№ склада 10 ----------
Шифр:56
Наименование: лампа паяльная
Количество:100
Шифр:99
Наименование: лампа керосиновая
Количество:100

------№ склада 19 ----------
Шифр:58
Наименование: лампа накаливания(220В, 150Вт)
Количество:107
Шифр:99
Наименование: лампа керосиновая
Количество:10

У меня проблемы с выводом ведомости(то наименование неправильно выводит, то суммирует не то?).

Код

uses crt;
type
table=record
     ct:word;{Cipher in Table}
     name:string[60];{naimenovanie}
     end;
storage=record
     number:byte;{nomer sklada}
     cs:word;{Cipher in Storage}
     amount:word;{kolichestvo}
     end;
const
end_menu:boolean=false;
var
f1:file of table;
f2:file of storage;
work1:table;
work2:storage;
{/////////////////}
procedure ioe;
begin
textcolor(4);
writeln;
writeln('Ћ??ЃЉЂ ‚‚Ћ„Ђ! ЏЋЏђЋЃ“‰’… ‘ЌЋ‚Ђ!');
writeln;
writeln('ЌЂ†Њ?’… ‹ћЃ“ћ Љ‹Ђ‚??“...');
textcolor(10);
readkey;
end;
{/////////////////}
procedure inputintable;
var
c:byte;
aonr,i:word;
begin
clrscr;
reset(f1);
writeln('1-‚‚…‘’? …„?Ќ?—Ќ“ћ ‡ЂЏ?‘њ');
writeln('2-‚‚…‘’? Ќ…‘ЉЋ‹њЉЋ ‡ЂЏ?‘…‰');
write('>');
readln(c);
case c of
    1:with work1 do
           begin
           seek(f1,filesize(f1));
           write('??”ђ ЏђЋ„“Љ–??:');
           readln(ct);
           write('ЌЂ?Њ…ЌЋ‚ЂЌ?…:');
           readln(name);
           write(f1,work1);
           end;
    2:begin
      seek(f1,filesize(f1));
      write('‚‚…„?’… ЉЋ‹?—…‘’‚Ћ ЌЋ‚›• ‡ЂЏ?‘…‰:');
      readln(aonr);
      for i:=1 to aonr  do
          begin
          clrscr;
          writeln('‡ЂЏ?‘њ ь (ЌЋ‚Ђџ) ',i);
          with work1 do
               begin
               write('??”ђ ЏђЋ„“Љ–??:');
               readln(ct);
               write('ЌЂ?Њ…ЌЋ‚ЂЌ?…:');
               readln(name);
               write(f1,work1);
               end;
          end;
      end;
  end;
close(f1);
end;
{////////////////////////////////////////////}
procedure inputinstorage;
var
c:byte;
aonr,i:word;
begin
clrscr;
reset(f2);
writeln('1-‚‚…‘’? …„?Ќ?—Ќ“ћ ‡ЂЏ?‘њ');
writeln('2-‚‚…‘’? Ќ…‘ЉЋ‹њЉЋ ‡ЂЏ?‘…‰');
write('>');
readln(c);
case c of
    1:with work2 do
           begin
           seek(f2,filesize(f2));
           write('ь ‘Љ‹Ђ„Ђ:');
           readln(number);
           write('??”ђ ЏђЋ„“Љ–??:');
           readln(cs);
           write('ЉЋ‹?—…‘’‚Ћ:');
           readln(amount);
           write(f2,work2);
           end;
    2:begin
      seek(f2,filesize(f2));
      write('‚‚…„?’… ЉЋ‹?—…‘’‚Ћ ЌЋ‚›• ‡ЂЏ?‘…‰:');
      readln(aonr);
      for i:=1 to aonr do
          begin
          clrscr;
          writeln('‡ЂЏ?‘њ ь (ЌЋ‚Ђџ)',i);
          with work2 do
               begin
               write('ь ‘Љ‹Ђ„Ђ:');
               readln(number);
               write('??”ђ ЏђЋ„“Љ–??:');
               readln(cs);
               write('ЉЋ‹?—…‘’‚Ћ:');
               readln(amount);
               write(f2,work2);
               end;
          end;
      end;
  end;
close(f2);
end;
{/////////////////}
procedure bordereau;
var
i,j,k,l,m,fnumber,lnumber,fct,lct:word;
sum:longint;
cstring:string[60];
cond:boolean;
begin{1}
clrscr;
writeln('---------------------------BEDOMOCTb---------------------------------');
reset(f1);
reset(f2);
{vychisljaem nomera zanesennyh v basu skladov}
fnumber:=65535;{first storage}
lnumber:=0;    {last storage}
for i:=1 to filesize(f2) do
   begin{2}
   read(f2,work2);
   if work2.number<fnumber then fnumber:=work2.number;
   if work2.number>lnumber then lnumber:=work2.number;
   end;{2}
{vychisljaem shifry zanesennyh v basu tovarov}
fct:=65535;{first ciphertable}
lct:=0;    {last  ciphertable}
for i:=1 to filesize(f1) do
   begin{3}
   read(f1,work1);
   if work1.ct<fct then fct:=work1.ct;
   if work1.ct>lct then lct:=work1.ct;
   end;{3}
{!}
{dalee nachalis' problemy :))}
seek(f1,0);
seek(f2,0);
sum:=0;
for i:=fnumber to lnumber do
   begin{4}
   for j:=fct to lct do
       begin{5}
       read(f2,work2);
       if ((work2.number=i) and (work2.cs=j)) then
          begin{6}
          seek(f2,0);
          for k:=1 to filesize(f2) do
              begin{7}
              read(f2,work2);
              if ((work2.number=i) and (work2.cs=j)) then sum:=sum+work2.amount;
              end;{7}
          for l:=1 to filesize(f1) do
              begin{8}
              read(f1,work1);
              if work1.ct=j then
                 begin{9}
                 cstring:=work1.name;{cstring-CipherString}
                 break;
                 end;{9}
              end;{8}
          end;{6}
       writeln('storage # ',i);
       writeln('cipher: ',j);
       writeln('name: ',cstring);
       writeln('amount: ',sum);
       writeln('--------------------------');
       seek(f1,0);
       seek(f2,0);
       sum:=0;
       end{5}
   end;{4}
readkey;
end;{1}
{/////////////////}
procedure menu;
var
code:char;
pstn,c:integer;
cnd:boolean;
begin{!}
cnd:=false;
while cnd<>true do
     begin{while}
     clrscr;
     writeln('і=============KOHTOPA==============і');
     writeln('і1-‚Ќ…‘…Ќ?… „ЂЌЌ›• ‚ ЃЂ‡“ "table"  і');
     writeln('і2-‚Ќ…‘…Ќ?… „ЂЌЌ›• ‚ ЃЂ‡“ "storage"і');
     writeln('і3-‚›„Ђ’њ ‚…„ЋЊЋ‘’њ                і');
     writeln('і4-‚›•Ћ„                           і');
     write  ('ЉЋ„ ЋЏ…ђЂ–??:');
     readln(code);
     val(code,c,pstn);
     if pstn=0 then
        begin
        case c of
             1:inputintable;
             2:inputinstorage;
             3:bordereau;
             4:end_menu:=true;
        end;
     cnd:=true;
     end
     else ioe;
     end;{while}
end;{!}
{///////////////////////}
{/////main_program//////}
begin
clrscr;
{\\\\\\\\\\\\\\\\\\\\}
assign(f1,'table.dat');
{$I-}
reset(f1);
{$I+}
if ioresult<>0 then
  begin
  textcolor(4);
  writeln('”Ђ‰‹ "table.dat" Ќ… ЌЂ‰„…Ќ. Ѓ“„…’ ‘Ћ‡„ЂЌ ЌЋ‚›‰ ”Ђ‰‹');
  readkey;
  rewrite(f1);
  end;
{\\\\\\\\\\\\\\\\\\\\}
assign(f2,'storage.dat');
{$I-}
reset(f2);
{$I+}
if ioresult<>0 then
  begin
  textcolor(4);
  writeln('”Ђ‰‹ "storage.dat" Ќ… ЌЂ‰„…Ќ. Ѓ“„…’ ‘Ћ‡„ЂЌ ЌЋ‚›‰ ”Ђ‰‹');
  readkey;
  rewrite(f2);
  end;
close(f1);
close(f2);
textcolor(10);
{/////////////////////}
repeat menu until end_menu;
end.



Сообщение отредактировано: choodo -


Прикрепленные файлы
Прикрепленный файл  trouble.pas ( 0 байт ) Кол-во скачиваний: 317
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 2)
сообщение
Сообщение #2


Гость






Ну и что это за файл? Может лучше приаттачить PAS?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Автооответчик
*****

Группа: Пользователи
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

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


очень советую посмотреть в Russian SWAG, там есть про это что-то....


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 12.09.2025 11:40
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name