MATLAB入门简单小实验 1

实验要求:

使用Matlab编写程序实现以下功能:

 

1. 给定一组商品,每一商品包含名称、价格,把商品排序。

要求:

  (1) 从文本文件input.txt读入。第一行包含一个数 N,表示商品个数。之后跟着 N 行,每行包含一个字符串(商品名称)和一个数(商品价格)。

  (2) 删除价格是3的倍数的商品;

  (3) 显示剩余商品的个数 K;

  (4) 当数 K 为奇数时,从小到大排列并输出显示;

  (5) 当数 K 为偶数时,从大到小排列并输出显示;

  (6) 把结果保存到文件 result.txt 。

  (7) 自己实现排序功能,不能调用库里的排序函数。

 

input.txt:

4
苹果 20
香蕉 10
水果 30
铅笔 60

matlab代码:

file_address = 'E:\input.txt';
[name,price] = textread(file_address, '%s %n', 'headerlines', 1);
% 获取三的倍数的下标
delete_index = find(rem(price, 3) == 0);
% 删除这些行
name(delete_index) = [];
price(delete_index) = [];
% 获取剩余的商品数
k = size(name, 1);
% 当剩余为奇数时
if rem(k, 2) ~= 0
    for i = k-1 : -1 : 1
        for j = 1 : i
%             冒泡排序
            if price(j, 1) > price(j + 1, 1)
                m = price(j, 1);
                price(j,1) = price(j+1, 1);
                price(j + 1, 1) = m;
%                 名字也替换
                m = name(j, 1);
                name(j, 1) = name(j + 1, 1);
                name(j + 1, 1) = m;
            end
        end
    end
    for mm = 1 : k
        disp(sprintf('name:%s  price:%d',char(name(mm)),price(mm)))
    end
else
    for i = k-1 : -1 : 1
        for j = 1 : i
%             冒泡排序
            if price(j, 1) < price(j + 1, 1)
                m = price(j, 1);
                price(j,1) = price(j+1, 1);
                price(j + 1, 1) = m;
%                 名字也替换
                m = name(j, 1);
                name(j, 1) = name(j + 1, 1);
                name(j + 1, 1) = m;
            end
        end
    end
%     输出
    for mm = 1 : k
        disp(sprintf('name:%s  price:%d',char(name(mm)),price(mm)))
    end
end


fileName = 'E:\result.txt';
fid = fopen(fileName, 'wt');
for i = 1:k
    fprintf(fid, '%s\t', char(name(i)));
    fprintf(fid, '%d\n', prize(i));
end
fclose(fid);

输出:

result.txt:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_我走路带风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值