en funktion som returnerar antalet ord och tecken i en teckenfält
Skriv en funktion, [tecken,ord] = word_count(text).
text är en text (ett fält av tecken). Funktionen ska räkna (och returnera) antalet
tecken och avslutade ord i text.
Ord avslutas med de två tecknen \b eller då
strängen tar slut. En tom text består av 0 tecken och 0 ord.
Exempel:
Texten: Alla\bhundarna\bvar\bokopplade\b består av 32 tecken och 4 ord,
texten
Alla\bhundarna\bvar\bokopplade består av 30 tecken och 4 ord.
jag har skrivat denna kod, men vet inte hur jag ska formulera vilkoret för avslutade ord.
function [tecken, ord] = word_count(text)
tecken=[]; ord=[]
for i = 1:length(text)
if % här vil jag formulera satsen då ett ord avslutas med \b eller strängen tar slut.
else
tecken = tecken +1;
end
end
Ungefär if text(i) == '\b' | text(i) == '\n'
(tänk på det ovan som psuedokod, jag har inte programmerat i Matlab på måånga år)
hej, igen, nu har jag kört denna koden på matlab, men den returnerar bara tomma vektorer
function [tecken, ord] = word_count(text)
tecken=[]; ord=[]
for i = 1:length(text)
if text(i) == '\b' | text(i) == '\n'
tecken = tecken +1;
ord= ord+1;
end
end
end
Som sagt så är jag inte säker på att man skriver exakt så. Kommer programmet in i if-satsen? Börja prova med \b bara exempelvis.
Ser konstigt ut att skriva t.ex. tecken = tecken + 1 när tecken är en vektor.
hej, jag har gjort fel i början, vi ska satte båda antal tecken och ord lik noll. och jag har testet denna kod med den bara returnerar anttecken och antord lik 3, men den tar inte hänsyn till ord på sluten av sekvensen. tror du att vi kan ordna på den så att vi får okså med ord på sluten av sekvensen.
text=('Alla\bhundarna\bvar\bokopplade');
anttecken=0; antord=0;
for i = 1:length(text)
if text(i) == '\b'
anttecken = anttecken +1;
antord= antord+1;
end
end
disp(anttecken)
1. Din textsträng har ingen "ny rad".
2. Vad ger egentligen length(text), jag tror att i matlab ska du använda strlength? (https://se.mathworks.com/help/matlab/ref/strlength.html)
3. Det kan vara lurigt att kolla efter ny rad, olika operativsystem använder olika tecken.
hej, jag hade lagt till fel kod i den föregående bild, jag mente denna koden. alltså jag får riktig antal tecken, men inte antal ord, då jag kan inte formulera villkoret för att orden på sluten av sekvensen ska vara med i antal ord.
text=("Alla\bhundarna\bvar\bokopplade");
anttecken=0; antord=0;
for i = 1:strlength(text)
ind=strfind(text,'\b');
anttecken = anttecken +1;
antord= numel(ind);
end
disp(antord)
disp(anttecken)
Jag tror det är bättre som du hade det innan.
Du skulle t.ex. kunna räkna upp antal ord för varje '\b' och annars räkna upp antal tecken.