求matlab题目

硅谷员工某部门有50名员工,其工资计算方法如下:
(1)工作时数超过120h者,超过部分加发15%;
(2)工作时数低于60h者,扣发700元;
(3)其余按每小时84元计发。
试编程随机输入每位员工的工号和该号员工的工时数,工号从1~50;工时数为40~200h之间随机产生的整数。请计算每位员工的应发工资并用适当的图形加以描述。
A、分析:采用循环结构和向量结构分别实现,要用到分段函数以及随机数发生函数。

f = @(x) 84*x + (x>120).*((x-120)*84*1.15) - (x<60)*700; % 计算工资的公式
x = 1:50; % 工号
xh = floor(161*rand(1,50)) + 40; % 工时 40-200
xs = f(xh); % 工资
subplot(1,2,1);
bar(xs); % 工资柱状图
title('工资图');xlabel( '工号' );;ylabel( '工资' );
axis([ 0 51 0 max(xs)*1.1]);
subplot(1,2,2);
bar(xh); % 工资柱状图
title('工时图');xlabel( '工号' );ylabel( '工时' );
axis([ 0 51 0 max(xh)*1.1]);

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-08

gs=zeros(50,1);
gz=zeros(50,1);
for i=1:50
    gs(i)=randi([40 200]);
    if gs(i)>=120
        gz(i)=84*120+(gs(i)-120)*84*1.15;
    elseif gs(i)<60
        gz(i)=84*gs(i)-700;
    else
        gz(i)=84*gs(i);
    end
end
gz=diag(gz);
c=bar(gz,'stack');
title('工资图');
xlabel( '工号' );
ylabel( '工资' );
color=[0 0 0.75;0 1 0;1 0.5 0];
for i=1:50
    j=mod(i,3)+1;
set(c(i),'FaceColor',color(j,:));
end

相似回答