Определить сумму покупки

Задача

В один массив записаны наименования товаров, в другую - их цена. Написать программу, вычисляющую общую стоимость покупки при условии, что пользователь может указывать приобретаемый товар и его количество.

Решение

 

Описание переменных: 

  • goods - массив-константа названий товаров;
  • price - массив-константа цен товаров;
  • i - счетчик;
  • g - введенный пользователем номер товара;
  • q - введенное пользователем количество товара;
  • sum - сумма покупки.

Алгоритм решения задачи: 

Присвоить переменной sum значение 0, после чего в цикле выполнять действия:

  1. Запросить у пользователя номер очередного товара, который он хочет приобрести.
  2. Если был введен 0, то выйти из цикла.
  3. Запросить количество данного товара.
  4. Добавить к переменной sum произведение цены товара на его количество.

После завершения цикла вывести значение sum на экран.

Программа на языке Паскаль: 

 

const
    N = 10;
    goods: array[1..N] of string = ('Груши','Яблоки','Огурцы','Помидоры','Укроп','Петрушка','Курица','Сыр','Масло','Молоко');
    price: array[1..N] of real = (40.50,31.20,21.80,35.00,150.00,145.00,200.00,400.00,81.40,53.35);
var
    i, g: byte;
    sum, q: real;
begin
    for i:=1 to N do 
        writeln(i,') ', goods[i], ' - ',price[i]:5:2,' руб.');
 
    writeln('Что берём? (вводите № товара; если ничего, то 0)');
    sum := 0;
    while True do begin
        write('Товар: '); readln(g);
        if g = 0 then break;
        write('Количество: '); readln(q);
        sum := sum + price[g] * q;
    end;
    writeln('Сумма к оплате: ',sum:6:2);
end.

 

Проверка работы программы:

1) Груши - 40.50 руб.
2) Яблоки - 31.20 руб.
3) Огурцы - 21.80 руб.
4) Помидоры - 35.00 руб.
5) Укроп - 150.00 руб.
6) Петрушка - 145.00 руб.
7) Курица - 200.00 руб.
8) Сыр - 400.00 руб.
9) Масло - 81.40 руб.
10) Молоко - 53.35 руб.
Что берём? (вводите № товара; если ничего, то 0)
Товар: 2
Количество: 0.5
Товар: 5
Количество: 0.1
Товар: 7
Количество: 1.2
Товар: 8
Количество: 0.3
Товар: 10
Количество: 1
Товар: 0
Сумма к оплате: 443.95

 

Тема

Одномерные массивы

Уровень

Комбинированные задачи

Комментарии

Вы посетили магазин и купили 10 видов товара. В таблицу T[1:10] вы записали количество купленного товара каждого вида. В таблицу C[1:10] записали цены единиц каждого вида товара соответственно. Составьте на Паскале программу вычисления общей стоимости всех покупок.

А лучше так так можно к пример дописать функцию подсчета цены товара выборочно(по наименованию) и т. п.

const 
  n = 3;// константа определяющая количество видов купленного товара
 
type korzina = record
      name:   string[15];//вид товара
      numb:   integer;//количество шт. товара
      price:  real;//цена за единицу товара
     end;
 
type 
  massive = array[1..n] of korzina;
 
var 
  arr:massive;
  summa:real;
  i:integer;
 
// процедура наполнения корзины товаром
procedure zapolnenie_korzini(var arr:massive);
var
  i:integer;
begin
  for i:=1 to n do
    begin
      writeln('введите наименование продукта');
        readln(arr[i].name);
      writeln('введите количество продукта');
        readln(arr[i].numb);
      writeln('введите цену продукта');
        readln(arr[i].price);
    end;
end;
 
//функция нахождения суммарной цены
function summ_price(arr:massive):real;
var
  i:integer;
begin
  for i:=1 to n do
    Result:= Result + arr[i].numb * arr[i].price;
end;
 
// ----- основная программа -----\\
begin
  zapolnenie_korzini(arr);
  writeln(summ_price(arr)); 
end.

Думаю через двумерный массив будет более корректно

program Project1;
const
  n = 2;// константа, указывающая количество видов купленного товара
 
type
 mas = array [1..n,1..2] of integer;
 
var
  massive:mas;
  i:integer;
 
  // процедура задания кличества и цены товара
  // arr[i,1] -- количество; arr[i,2] -- цена, где и номер товара
  procedure zadanie(var arr:mas);
  var
    i:integer;
  begin
  for  i := 1 to n do
    begin
    writeln('Укажите количество товара',i);
      readln(arr[i,1]);
    writeln('Укажите цену товара',i);
      readln(arr[i,2]);
    end; 
  end;
 
 // функция нхождения сумарной стоимости товара
 Function summa_tovara(m:mas):integer;
 var i: integer;
 begin
  Result:=0;
  for i := 1 to n do
    Result:= Result + m[i,1] * m[i,2];
 end;
 
//----- основная программа -----\\
begin
  zadanie(massive);
  Writeln('сумма всего товара: ', summa_tovara(massive));
      readln;
end.