这是问题:
文件 upcs.txt 包含在杂货店扫描的 UPC 代码列表。理想情况下,每行应包含对应于单个产品的 12 位数字。读取文件的内容并将条目存储到一个名为代码的 mx 12 大小的数字数组中,其中 m 是文件中的有效行数。应丢弃少于或多于 12 位的行。某些 12 位数字的行可能包含未正确扫描的数字,这些数字被替换为字母X'. These missing digits should be
represented in the array codes by the integer
-1'。处理文件后,打印读取的总行数、丢弃的行数以及正确处理和存储在代码中的行数。
upcs.txt:
X9096X082489
921642004330
810905023006
733554287763
413527622XX1
287X35871528
100093334850
764491079X90
1537X8886614
086755751640
860053705316
980098819206
038356338621
577577248178
82825685985
684580785580
736657539753
71113617151
935014271064
702345843488
58316491755
110118383664
333841856254
996003013296
495258095746
4457870230
684104168936
522784039910
6504512835
699553963094
853110488363
554147120089
到目前为止,这是我的代码:
fid = fopen('upcs.txt');
mat = [];
if fid == -1
disp('File open was not successful')
else codes = {};
while feof(fid) == 0
aline = fgetl(fid);
num = strtok(aline);
codes = [codes; num]
end;
[m n] = size(codes)
discard = 0
for i = 1:m
len = length (codes(i))
if len ~= 12
codes = [];
discard = discard + 1
else
char(codes(i))
codes = strrep(codes, 'X', '-1')
end
end
codes
end
我遇到的麻烦是我不知道如何删除代码中少于或多于 12 位的代码。