Вот сама задача: 1. Описать запись с именем Price, содержащую следующие поля: название товара; название магазина, в котором продаётся товар; стоимость товара в рублях; 2. Написать программу, выполняющую следующие действия: ввод данных с клавиатуры в массив, состоящий из восьми элеметов типа Price; записи должны быть размещены в алфавитном порядке по названию товаров; вывод на экран информации о товаре, название которого введено с клавиатуры; если такого товара нет, вывести соответствующее сообщение; запись массива в файл под заданным с клавиатуры именем.
Ozzя
3.10.2007 15:50
Цитата
воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
Причем уже много-много раз.
slava
3.10.2007 20:55
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
5.10.2007 16:19
Напиши конкретно, что она должна делать ( по замыслу), но не делает, и что делает вместо этого. Попробуй упростить ситуацию, минимизировать ввод. Если ты чувствуешь, что ошибка в некоторм конкретном месте, попробуй сделать мини-вариант программы, в котором только это место (или почти только). Выложи это здесь, если все же не сможешь разобраться. Успехов!
-slava-
7.10.2007 19:49
Цитата
запись массива в файл под заданным с клавиатуры именем.
Файл создаёт, но если его открыть, то массивом в нём и не ппахнет И ещё, когда вводишш цену товара, а потом вызываешь информацию о нем, то если цена была допустим 20 рублей, то он пишет: 2.000000+0.1Е
мисс_граффити
7.10.2007 21:40
Цитата(-slava- @ 7.10.2007 16:49)
Файл создаёт, но если его открыть, то массивом в нём и не ппахнет И ещё, когда вводишш цену товара, а потом вызываешь информацию о нем, то если цена была допустим 20 рублей, то он пишет: 2.000000+0.1Е
1. Открываешь - чем? Блокнотом? Или из паскаля? 2. Все правильно Просто надо сделать так: вместо write(a) написать, например, write(a:5:2)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.