Помощь - Поиск - Пользователи - Календарь
Полная версия: прога по записям
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
slava
Вот сама задача:
1. Описать запись с именем Price, содержащую следующие поля:
название товара;
название магазина, в котором продаётся товар;
стоимость товара в рублях;
2. Написать программу, выполняющую следующие действия:
ввод данных с клавиатуры в массив, состоящий из восьми элеметов типа Price; записи должны быть
размещены в алфавитном порядке по названию товаров;
вывод на экран информации о товаре, название которого введено с клавиатуры; если такого товара нет,
вывести соответствующее сообщение;
запись массива в файл под заданным с клавиатуры именем.
Ozzя
Цитата
воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!

Причем уже много-много раз. yes2.gif
slava
program priceRecord;
uses crt;

const
     N = 8;
type Price = record
       title:string;
       vendor:string;
       priceRU:real;
     end;
var
   priceFile :  file of Price;
   choise, sc, i, k:integer;
   exit, error, infoReady, searching, found:boolean;
   priceArray: array[1..N] of Price;
   searchTitle, filepath:string;
   aux: Price;

procedure new_info_input;
begin
   for i:=1 to N do begin
           with priceArray[i] do begin
             write('Enter the title of goods: ');
             readln(title);
             write('Specify the vendor: ');
             readln(vendor);
             write('Enter the price in RU: ');
             readln(priceRU);
           end;
         end;
         for i:=2 to N do begin
           for k:=i-1 downto 1 do begin
             if priceArray[k+1].title < priceArray[k].title then begin
               aux := priceArray[k];
               priceArray[k] := priceArray[k+1];
               priceArray[k+1] := aux;
             end
             else break;
           end;
         end;
end;

procedure save_to_file(filepath:string);
begin
   assign(priceFile, filepath);
   rewrite(priceFile);
   for i:=1 to N do
      write(priceFile, priceArray[i]);
   close(priceFile);
end;

procedure search_once;
begin
   found := false;
           write('Specify the title of goods you want to search for: ');
           readln(searchTitle);
           for i:=1 to N do begin
             if priceArray[i].title = searchTitle then begin
               writeln('Additional info found:');
               write('Title: ');
               writeln(searchTitle);
               write('Vendor: ');
               writeln(priceArray[i].vendor);
               write('Price in RU: ');
               writeln(priceArray[i].priceRU);
               found := true;
               break;
             end;
           end;
           if found = false then writeln('404 - Not Found');
           write('Would you like to search once again?  1 - Yes. 2 - Exit:  ');
           readln(sc);
           if sc = 2 then searching := false;
end;

begin
exit := false;
infoReady := false;
clrscr;
while not exit do begin
  writeln('1. Enter new information');
  writeln('2. Search for specific goods');
  writeln('3. Save info to file');
  writeln('4. Exit');
  write('Make your choise: ');
  readln(choise);
  case choise of
    1: begin
         new_info_input;
         infoReady := true;
       end;
    2: begin
         searching := true;

         if not infoReady then writeln('Please enter the information first.')
         else while searching do
            search_once;
       end;
    3: begin
         if not infoReady then writeln('Please enter the information first.')
         else begin
           write('Specify full filepath: ');
           readln(filepath);
           save_to_file(filepath);
           writeln('Save successful.');
         end;
       end;
    4: begin
         exit := true;
       end;
    5: for i:=1 to N do begin
         writeln(priceArray[i].title);
       end;
  end
end;
end.



Прога то есть, но вот что то она работает не очень...проблема с выводом цены и записью в файл. + Как я понимаю неправльно выполнены процедуры: например procedure new_info_input... вроде как в процедуре должна осуществляться передача пааметров по значению, адресу и т. д. а у меня такого нету, следовательно в программе присутствуют глобальные переменные.
Lapp
Напиши конкретно, что она должна делать ( по замыслу), но не делает, и что делает вместо этого. Попробуй упростить ситуацию, минимизировать ввод. Если ты чувствуешь, что ошибка в некоторм конкретном месте, попробуй сделать мини-вариант программы, в котором только это место (или почти только). Выложи это здесь, если все же не сможешь разобраться.
Успехов!
-slava-
Цитата
запись массива в файл под заданным с клавиатуры именем.


Файл создаёт, но если его открыть, то массивом в нём и не ппахнет
И ещё, когда вводишш цену товара, а потом вызываешь информацию о нем, то если цена была допустим 20 рублей, то он пишет: 2.000000+0.1Е
мисс_граффити
Цитата(-slava- @ 7.10.2007 16:49) *

Файл создаёт, но если его открыть, то массивом в нём и не ппахнет
И ещё, когда вводишш цену товара, а потом вызываешь информацию о нем, то если цена была допустим 20 рублей, то он пишет: 2.000000+0.1Е

1. Открываешь - чем? Блокнотом? Или из паскаля?
2. Все правильно smile.gif Просто надо сделать так: вместо write(a) написать, например, write(a:5:2)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.