Using fprintf to printing non-vowels in command window

Trying to adjust a previous program to print in the command window all the non-vowels from a inputted text file how do i fprint the code i have to show in the command window all the individual letters that arent vowles.
If text is "I love golf" command window should display like: lv glf
clear all
clc
inputfile = fileread('SampleText.txt');
Number_of_nonvowels = vowellesscounts(inputfile) % original
function w = vowellesscounts(s)
w=0;
l=length(s);
for i=1:l
if s(i)=='b' || s(i)=='c' || s(i)=='d' || s(i)=='f' || s(i)=='g' || s(i)=='h' || s(i)=='j' || s(i)=='k' || s(i)=='l' || s(i)=='m' || s(i)=='n' || s(i)=='p' || s(i)=='q' || s(i)=='r' || s(i)=='s'|| s(i)=='t' || s(i)=='v' || s(i)=='w' || s(i)=='x' || s(i)=='y'|| s(i)=='z'
w=w+1;
else
continue
end
end
end

 採用された回答

Walter Roberson
Walter Roberson 2021 年 9 月 5 日

0 投票

function v = vowellesscounts(s)
v = '';
w=0;
l=length(s);
for i=1:l
if s(i)=='b' || s(i)=='c' || s(i)=='d' || s(i)=='f' || s(i)=='g' || s(i)=='h' || s(i)=='j' || s(i)=='k' || s(i)=='l' || s(i)=='m' || s(i)=='n' || s(i)=='p' || s(i)=='q' || s(i)=='r' || s(i)=='s'|| s(i)=='t' || s(i)=='v' || s(i)=='w' || s(i)=='x' || s(i)=='y'|| s(i)=='z'
w=w+1;
v(w) = s(i);
else
continue
end
end
end

8 件のコメント

Walter Roberson
Walter Roberson 2021 年 9 月 5 日
編集済み: Walter Roberson 2021 年 9 月 5 日
Note: your code does not achieve the documented purpose. Characters such as '$' are non-vowels, but they are not taken into account. Also, you are not taking into account upper-case characters.
Hint:
ismember('Now is the timing', 'Nni')
ans = 1×17 logical array
1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0
Joe Ainsworth
Joe Ainsworth 2021 年 9 月 5 日
Hi @Walter Roberson, thanks for the resposne but i'm relatively new to matlab so not reallly sure what you are hinting at besides the upper case letters.
i still dont understand how to use the fprintf function to display each individual non vowel in the command window
Hint: displaying only the event numbers in a certain range
A = [2 7 3 8 7 6]
A = 1×6
2 7 3 8 7 6
B = 2:2:10
B = 1×5
2 4 6 8 10
mask = ismember(A,B)
mask = 1×6 logical array
1 0 0 1 0 1
A(mask)
ans = 1×3
2 8 6
Joe Ainsworth
Joe Ainsworth 2021 年 9 月 5 日
thanks @Walter Roberson, sorry i get what you mean now, replace the matrix values with letters?
can you help me with fprintf at all?
Walter Roberson
Walter Roberson 2021 年 9 月 5 日
result = A(mask);
fprintf('Yadda yadda, you wanted to know: %s\n', result)
Joe Ainsworth
Joe Ainsworth 2021 年 9 月 5 日
@Walter Roberson i still cant get the fprintf working to display it how i explained in the question
Walter Roberson
Walter Roberson 2021 年 9 月 5 日
編集済み: Walter Roberson 2021 年 9 月 5 日
inputfile = 'I love golf';
Number_of_nonvowels = vowellesscounts(inputfile); % original
fprintf('Edit this to say whatever you want: %s\n', Number_of_nonvowels);
Edit this to say whatever you want: lvglf
function v = vowellesscounts(s)
v = '';
w=0;
l=length(s);
for i=1:l
if s(i)=='b' || s(i)=='c' || s(i)=='d' || s(i)=='f' || s(i)=='g' || s(i)=='h' || s(i)=='j' || s(i)=='k' || s(i)=='l' || s(i)=='m' || s(i)=='n' || s(i)=='p' || s(i)=='q' || s(i)=='r' || s(i)=='s'|| s(i)=='t' || s(i)=='v' || s(i)=='w' || s(i)=='x' || s(i)=='y'|| s(i)=='z'
w=w+1;
v(w) = s(i);
else
continue
end
end
end
Joe Ainsworth
Joe Ainsworth 2021 年 9 月 5 日
thanks alot, i was missing the 'number_of_nonvowel'
very much appreciated @Walter Roberson

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeCharacters and Strings についてさらに検索

製品

リリース

R2021a

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by