• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

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

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

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

  • Автор темы Автор темы MordaW
  • Дата начала Дата начала

MordaW

Ученик
Регистрация
14 Июл 2011
Сообщения
1
Реакции
0
Баллы
0
Типизованный файл

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


Мои наработки:
Код:
Program kanz_tovari;
type tovari = record
*********kod : integer;
*********name : string;
*********cost : real;
****end;
var
*********ntovar:tovari;
*********f : file of tovari;
*********i,n : integer;
*********b:string;
begin
assign (f,**'kanz_tovari.pas');
Rewrite ( f );
write ('Укажите сколько будет товаров');
readln (n);
for i:=1 to n do
*****begin
**********with ntovar do
**************begin
****************writeln ('Введите название ',i,'-го товара*');
****************readln (name);
****************writeln ( 'Введите код ',i,'-го товара ');
****************readln (kod);
****************writeln ('Введите стоимость ',i,'-го товара*');
****************readln (cost);
**************end;
**********write ();
*****end;
close ( f );
writeln('---| Поиск нужного товара |---');
reset ( f );
**********with ntovar do
**************begin
****************writeln ('Введите название нужного товара*');
****************readln (b);
****************if b=name then
**********write (ntovar.cost);
********end;
********close(f)
*****end.
Не могу никак "допетрить" как сделать так, чтобы выводилися данные о товаре которые нужны пользователю. Помогите пожалуйста. Если не сложно будет то напишите на почту саму доработку или просто ссылку на эту тему. заранее благодарен!


З.Ы. Пробелы заменять * - бред((
 
З.Ы. Пробелы заменять * - бред((
Абсолютный, и притом никому не нужный: если Вы пользуетесь тегом "код", то всё форматирование листинга сохраняется.
Два замечания по программе:
1. Ни в коем случае не следует присваивать рабочему файлу имя самой программы! К чему такое может привести - непредсказуемо.
2. А где, собственно, запись данных в файл? Не вижу.
Ну ладно - вот код, который решает задачу:
Код:
Program kanz_tovari;
type tovari = record
               kod : integer;
               name : string;
               cost : real;
              end;
var
 ntovar:tovari;
 f : file of tovari;
 i,n : integer;
 b:string;
 bul:boolean;
 finish:Char;
begin
 assign (f,'D:\kanz_tov.dat');
 Rewrite ( f );
 write ('Укажите сколько будет товаров ');
 readln (n);
 for i:=1 to n do
  with ntovar do
   begin
    writeln ('Введите название ',i,'-го товара ');
    readln (name);
    write ( 'Введите код ',i,'-го товара ');
    readln (kod);
    write ('Введите стоимость ',i,'-го товара ');
    readln (cost);
    Write(f,ntovar);
   end;
 writeln;
 close ( f );
 writeln('---| Поиск нужного товара |---');
 Repeat
  Write('Следующее наименование? (Y/N) ');
  Readln(finish);
  If (finish='Y') or (finish='y') then
   begin
    bul:=false;
    writeln ('Введите название нужного товара ');
    readln (b);
    reset ( f );
    i:=0;
    repeat
     Inc(i);
     Read(f,ntovar);
     if b=ntovar.name then bul:=true;
    until bul or (i=n);
    If bul=false then
     writeln('Такого товара нет!')
    else
     with ntovar do
       writeln('Код товара - ',kod,',    цена - ',cost:0:2);
    writeln;
   end;
 Until (finish='N') or (finish='n');
 close(f)
end.
Имя файла и путь поставьте, естественно, свои - но только (еще раз) не имя программы!
 
Назад
Сверху