Вот сама задача: 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 : fileof 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;
beginfor i:=1to N dobeginwith priceArray[i] dobegin
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:=2to N dobeginfor k:=i-1downto1dobeginif priceArray[k+1].title < priceArray[k].title thenbegin
aux := priceArray[k];
priceArray[k] := priceArray[k+1];
priceArray[k+1] := aux;
endelse break;
end;
end;
end;
procedure save_to_file(filepath:string);
begin
assign(priceFile, filepath);
rewrite(priceFile);
for i:=1to 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:=1to N dobeginif priceArray[i].title = searchTitle thenbegin
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 = 2then searching := false;
end;
begin
exit := false;
infoReady := false;
clrscr;
whilenot exit dobegin
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 of1: begin
new_info_input;
infoReady := true;
end;
2: begin
searching := true;
ifnot infoReady then writeln('Please enter the information first.')
elsewhile searching do
search_once;
end;
3: beginifnot infoReady then writeln('Please enter the information first.')
elsebegin
write('Specify full filepath: ');
readln(filepath);
save_to_file(filepath);
writeln('Save successful.');
end;
end;
4: begin
exit := true;
end;
5: for i:=1to N dobegin
writeln(priceArray[i].title);
end;
endend;
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)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.