MATLAB квитанция печати выдает случайные значения - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть проект, в котором я должен сделать следующее;

У вас небольшой бизнес, и вы продаете 6 различных продуктов. Выберите ваши продукты и их цены в диапазоне от 20 до 25 фунтов стерлингов (они могут быть полностью вымышленными). Ваш В магазине работает 4 сотрудника, один из которых будет на кассе во время покупки. Ваша задача - написать код MATLAB, чтобы подготовить квитанцию ​​к фиктивной транзакции, как объяснено. ниже. На кассе есть покупатель. Они хотят приобрести 3 случайных продукта с конкретными количество для каждого. Например, клиент хочет 2 капучино, 1 круассан и 6 малины кексы. (1) Выберите случайным образом 3 продукта из списка. Для каждого продукта выберите случайное количество между 1 и 9. (2) Рассчитать общую стоимость. (3) Выберите случайным образом сотрудника для завершения транзакции. (4) Предположим, что цена включает 20% НДС. Рассчитайте сумму НДС, включенную в цену. (6) Подготовьте квитанцию ​​в виде текста в командном окне MATLAB. Используйте текущую дату и время (проверьте datestr (сейчас 0)). Ваш код должен выводить квитанцию ​​в формате, показанном на картинке. Там должен быть 60 символов в поперечнике. Выберите название нашего собственного магазина.

receipt example.

Пока мой код следующий:

clear all
clc
close all

items = {'apples   ','carrots  ','tomatoes','lemons   ','potatoes','kiwis   '};%    products
price = {3.10, 1.70, 4.00, 1.65, 9.32, 5.28};% item prices. I set spaces for each entry     in order to maintain the border format.
employee = {'James','Karina','George','Stacey'};%the employees array
disp(sprintf('+-----------------------------------------------+'));

disp(sprintf('|\t%s \t\t\tAlex''s Shop |\n|\t\t\t\t\t\t\t\t\t\t\t\t|',     datestr(now,0)));

totalPrice = 0;
for i = 1:3
    randItems = items {ceil(rand*6)};
    randprice = price {ceil(rand*6)};
    randQuantity = ceil(rand*9);% random quantity from 1 to 9 pieces
    randEmployee = employee{ceil(rand*4)};
    itemTotal = randprice * randQuantity;%total price of individual item
    totalPrice = totalPrice + itemTotal;

    disp(sprintf('|\t%s\t (%d) x %.2f = £ %.2f \t\t\t|', randItems, randQuantity, randprice, itemTotal))

end

disp(sprintf('|\t\t\t\t-----------------------------\t|'));

disp(sprintf('|\t\t\t\t\t\t\t\t\t\t\t\t|\n|\t Total to pay   \t £     %.2f\t\t\t\t|',totalPrice));

disp(sprintf('|\t VAT \t\t\t\t £ %.2f\t\t\t\t| \n|\t\t\t\t\t\t\t\t\t\t\t\t|',     totalPrice*0.2));

disp(sprintf('|\tThank you! You have been served by %s\t|\t', randEmployee));

disp(sprintf('+-----------------------------------------------+'));

Моя проблема, конечно, заключается в следующем. После выбора случайного предмета из списка предметов, я также выбираю случайную цену для назначения. Я не хочу этого все же. Я хотел бы найти способ назначить предустановленную цену для каждого элемента, который будет автоматически печататься при создании случайного элемента, который будет добавлен в корзину. Я надеюсь, что это объяснение будет достаточно для вас, если у вас есть какие-либо вопросы, не стесняйтесь задавать. Заранее спасибо.

1 Ответ

1 голос
/ 29 февраля 2012

Когда вы пишете

randItems = items {ceil(rand*6)};
randprice = price {ceil(rand*6)};

, вы вычисляете случайный индекс в массиве items, а затем вы вычисляете случайный индекс в массиве price.Если вместо этого вы назначаете индекс, который вы рассчитываете с помощью ceil(rand*6), в отдельную переменную, которая называется, например, index, вы можете использовать ее повторно, например, для выбора элемента № 3 как items, так и price.Таким образом, i-й товар всегда будет отображаться с i-й ценой.

...