Помощь - Поиск - Пользователи - Календарь
Полная версия: База данных
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
SunDevil
Вот такая задача:
Надо составить базу данных товаров с их ценами и чтобы прога подсчитала общую сумму товара.
Вот я прилагаю вариант, но как всделать так, чтобы прога сумму считала, у меня не выходит :fire:
Там посмотрите, плиз, кто-нибудь процедуру output_baza и в ней написана Общая цена товара (руб.) и переменная sum, так надо, чтобы в эту переменную записывалась сумма товара
СПАСИБО!
volvo
Цитата(SunDevil @ 25.03.05 22:41)
так надо, чтобы в эту переменную записывалась сумма товара

Если можно, поподробнее, что значит Сумма товара? Общая стоимость всех товаров в списке?
SunDevil
2 volvo
Да, именно, общая стоимость ВСЕХ товаров в списке. Но там есть переменная price и у нее тип string. Как сумму-то получить blink.gif
volvo
Цитата(SunDevil @ 25.03.05 23:08)
Но там есть переменная price и у нее тип string. Как сумму-то получить blink.gif

:D 2 варианта: или поменять тип Price на Integer (проблем при перекомпиляции не возникло, я проверил), или воспользоваться процедурой Val для преобразования строки в число.

В аттаче я добавил использование Val, но я бы все-таки рекомендовал поменять тип на Price: integer;
:yes:

P.S. Кстати, напрасно контроль ошибок ввода-вывода отключен постоянно. Желательно его отключать только перед критическими частями программы...
SunDevil
2 volvo
я менял на integer, так он вообще переставал в цикле price писать
klem4
держи...

Исходный код
program baza; {$i-}
{ђ §¤Ґ« ®ЇЁб ­Ё©}
uses crt;
const r=100;
q=10;
type buhalt=record
naim_tovar:string[12];
price:integer;
end;
dinam_massiv=array[1..r] of buhalt;
pro=^dinam_massiv;

var n:integer;
list:pro;
answer:char;
f:boolean;
price,sum:Integer;
{‚ў®¤ ¤ ­­л©}
procedure input_baza(var list:pro;var n:integer);
var i,z:integer;
w:char;
begin
clrscr;
write('‚ўҐ¤ЁвҐ зЁб«® § ЇЁбҐ© ¤«п ¤®Ў ў«Ґ­Ёп <= ',r-n ,' : ');
readln(z);
if ioresult<>0 then exit;
for i:=n+1 to n+z do
with list^[i] do
begin
clrscr;
write('‚ўҐ¤ЁвҐ ­ Ё¬Ґ­®ў ­ЁҐ в®ў а : '); readln(naim_tovar);
write('‚ўҐ¤ЁвҐ 業г в®ў а  (агЎ.): '); readln(price);
sum:=sum+price;
if i<>n+z then
begin
write('‚ў®¤Ёвм ҐйҐ y/n');
w:=readkey;
end;
if (w='n') or (i=z+n) then
begin
z:=i;
break;
end;
end;
if z<>0 then
n:=z;
writeln;
writeln('‡ ЇЁбм ¤®Ў ў«Ґ­  ў Ў §г. Ќ ¦¬ЁвҐ «оЎго Є« ўЁиг');
readkey;
end;
{‚лў®¤ ¤ ­­ле}
procedure output_baza(var list:pro;var n:integer);
var
i,k,pos:integer;
f:boolean ;
begin
clrscr;
if n=0 then
begin
writeln('Ѓ §  Їгбв ');
readkey;
exit;
end;
f:=false; pos:=1;
repeat
clrscr;
k:=0;
writeln(' ЙННННННННННННННННННННННСНННННННННННННННН
НННН»');
writeln(' є Ќ Ё¬Ґ­®ў ­ЁҐ в®ў а  і –Ґ­  в®ў а  (агЎ.) є');
writeln(' ИННННННННННННННННННННННПНННННННННННННННН
ННННј');
for i:=pos to n do
with list^[i] do
begin
writeln(' ',naim_tovar:12,' ',price:6);
k:=k+1;
if k=q then
begin
pos:=i+1;
break;
end;
writeln(' ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ДДД ');
end;
writeln(' ЋЎй п 業  в®ў а  (агЎ.)',' ',sum);
readkey;
if (k<q) or (pos>n) then
f:=true;
until f;
end;
{ѓ®«®ў­®© ¬®¤г«м}
begin
new(list);
f:=false;
repeat
clrscr;
writeln('0 - ‚л室');
writeln('1 - „®Ў ў«Ґ­ЁҐ ¤ ­­ле');
writeln('2 - ‚лў®¤ Ў §л');
answer:=readkey;
case answer of '0': f:=true;
'1': input_baza(list,n);
'2': output_baza(list,n);
else
begin
writeln('ЋиЁЎЄ ! „«п Їа®¤®«¦Ґ­Ёп ­ ¦¬ЁвҐ «оЎго Є« ўЁиг');
readkey
end;
end;
until f;
dispose(list);
end.
SunDevil
2 klem4
спасибо за помощь
volvo
SunDevil, в следующий раз ОЧЕНЬ внимательно читайте то, что Вам отвечают, хорошо? angry.gif
Цитата
поменять тип Price на Integer (проблем при перекомпиляции не возникло, я проверил)

Если я сказал, что проверил, то это не значил, что программа просто была откомпилирована. Это значит, что программа была запущена и нормально отработала... Или опять нужно было все переписать сюда до запятой?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.