Matlab 编程 Project Euler Problem 22 Names scores

本文介绍了一个MATLAB程序,用于从文本文件中读取一系列名字,并计算每个名字的字母表顺序值,然后乘以其出现顺序,得到名字分数。此过程涉及字符串处理、字符编码转换及数学运算。
%Names_scores_22.m
%读取names.txt中的名字,按照字母表中的次序值相加,再乘以该名字在txt中的次序值,即为名字的Names scores


clear all;
close all;


fid=fopen('names.txt','r');  %读取文本数据
contents=fscanf(fid,'%s');
sum_name=0;  % 初始化  名字中字母的序列值总和
k=0;  % 初始化  对“”,  这三个符号计数,计满3次,算一个名字
name_num=0;  % 初始化  名字的次序值
result_num=0;  % 初始化  对应名字的Names scores
%将contents中的字符单独输出
for i=1:length(contents)
    if((contents(i)>='A')&&(contents(i)<='Z'))
        sum_name=sum_name+contents(i)-'A'+1;  %求名字序列值总和
    else
        k=k+1;  % 得到不是字母的字符  +1
    end
    if(rem(k,3)==0)  %计数3次
        name_num=name_num+1;  %名字次序值+1
        result_num(name_num)=name_num*sum_name;  %求得Names scores
        sum_name=0;  %清除 名字中字母的序列值总和
    end
end
disp(result_num)  %输出显示
fclose all;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值