2012-02-29 26 views
0

私は次のことを行う必要があるプロジェクトを持っています。MATLABレシート印刷の乱数値の問題

あなたは中小企業で、6種類の製品を販売しています。あなたの製品 とその価格を20pから£25.00の範囲で選択してください(これらは完全に架空かもしれません)。 ショップには4人の従業員がいて、そのうちの1人は購入時までです。 下記の のように架空のトランザクションの領収書を準備するMATLABコードを記述します。 までのところに顧客がいます。彼らはそれぞれ特定の 量の3つのランダムな商品を購入したいと考えています。たとえば、2つのカプチーノ、1つのクロワッサン、6つのラズベリーの マフィンが必要です。 (1)あなたのリストからランダムに3つの製品を選択してください。各製品について、1から9の間のランダム数量 を選択してください。 (2)合計コストを計算します。 (3)取引を完了するためにスタッフメンバーをランダムに選択します。 (4)価格に20%のVATが含まれているとします。価格に含まれるVATの金額を計算します。 (6)レシートをテキストとしてMATLABコマンドウィンドウで準備します。現在の日付と時刻の を使用します(datestr(now、0)を確認してください)。 あなたのコードは、領収書を画像のような形式で出力する必要があります。その上に の60の記号があるはずです。自社のショップ名を選択してください。当然の

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('+-----------------------------------------------+')); 

私の問題は次の通りである:

receipt example.

これまでの私のコードは次のようです。アイテムリストからランダムなアイテムを選択すると、割り当てられるランダムな価格も選択されます。私はこれを望んでいない。私はバスケットに追加するランダムなアイテムを生成するときに、自動的に印刷される各アイテムに事前設定された価格を割り当てる方法を探したいと思います。ご質問がありましたら、この説明があなたにとって十分であることを願っております。前もって感謝します。あなたは

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

を書くとき

答えて

1

あなたは、配列itemsにランダム指数を計算した後、あなたは、配列priceにランダム指数を計算します。代わりにceil(rand*6)で計算したインデックスを別の変数に割り当てると、たとえば、 indexの場合は、それを再利用してitemspriceの両方からアイテム#3を選択することができます。したがって、i番目のアイテムは常にi番目の価格で表示されます。

+0

だから私は のような何かをします。index = ceil(rand * 6); これをrandItemsとrandPriceの中括弧に入れますか? –

+1

@AlexEncoreTr:それはまさにそれです。 – Jonas

+0

ありがとうございます。それはもっと明白ではありませんでした!なぜ私がこれほど長い間このことに執着していたのか分かりません。 –