質問は次のとおりです。
ファイル upcs.txt には、食料品店でスキャンされた UPC コードのリストが含まれています。各行には、理想的には、1 つの製品に対応する 12 桁が含まれている必要があります。ファイルの内容を読み取り、codes という名前の mx 12 サイズの数値配列にエントリを格納します。ここで、m はファイル内の有効な行の数です。12 桁未満または 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 桁以下または 12 桁以下のコードを削除する方法がわからないことです。