Есть следующая наработка:
Program;
uses crt;
var s: string; i, n, l: integer;
begin
clrscr;
write('Enter string:'); readln(s);
l:=length(s);
if l=0 then n:=0 else n:=1;
for i:=1 to l do
if (s[i]=' ') then n:=n+1;
writeln('Words in string =', n);
Readkey;
end.
http://forum.pascal.net.ru/index.php?showtopic=6972
как вариант сначала удалять все пробелы до слов, и после, а так же между словами если их более 2
Program;
uses crt;
var s: string; i, n, l: integer;
begin
clrscr;
write('Enter string:'); readln(s);
l:=length(s);
if l=0 then n:=0 else n:=1;
for i:=1 to l do
if (s[i]=' ')and(i<l) then n:=n+1;
writeln('Words in string =', n);
Readkey;
end.
М | ну я уже устал ставить тэги, неужели так трудно сделать правильно?? Lapp |
попробуй так
Program;
uses crt;
var s: string; i, n, l: integer;
begin
clrscr;
write('Enter string:'); readln(s);
while s[1]=' ' do delete(s,1,1);
while s[length(s)]=' ' do delete(s,length(s),1);
for i:=1 to length(s) do
if s[I]=' ' then
while s[I+1]=' ' do delete(s,I+1,1);
l:=length(s);
if l=0 then n:=0 else n:=1;
for i:=1 to l do
if (s[i]=' ') then n:=n+1;
writeln('Words in string =', n);
Readkey;
end.
нет, J.Bond_33, и так не пойдет тоже... ))
Посмотри на свой код внимательно, постарайся найти ошибку. Если не найдешь - подсказка под спойлером..
про это не подумал...
Program;
uses crt;
var s: string; i, n, l, a: integer;
begin
clrscr;
write('Enter string:'); readln(s);
a:=1;
while s[a]=' ' do inc(a);
if a=length(s)+1 then n:=0
else begin
while s[1]=' ' do delete(s,1,1);
while s[length(s)]=' ' do delete(s,length(s),1);
for i:=1 to length(s) do
if s[I]=' ' then
while s[I+1]=' ' do delete(s,I+1,1);
l:=length(s);
if l=0 then n:=0 else n:=1;
for i:=1 to l do
if (s[i]=' ') then n:=n+1;
end;
writeln('Words in string =', n);
Readkey;
end.
J.Bond_33
Эту программу можно в 2 раза короче сделать. Не надо добавлять куски кода, "чтоб работало". Надо сначала сесть и придумать алгоритм. Потом - продумать программу. И только потом включить компьютер и начать эту программу набирать.
Program;
uses crt;
var s: string; i, n, l: integer;
begin
clrscr;
write('Enter string:'); readln(s);
l:=length(s);
if l=0 then n:=0 else n:=1;
for i:=1 to l do
if (s[i]=' ')and(i<l) then n:=n+1;
writeln('Words in string =', n);
Readkey;
end.
Вот вся твоя задача.. Две строчки:
n:=0;
for i:=1 to Length(s) do if (s[i]<>' ')and((i=Length(s))or(s[i+1]=' ')) then Inc(n);
n:=0;
for i:=1 to Length(s) do if (s[i]<>' ')and((i=Length(s))or(s[i+1]=' ')) then Inc(n);
var n, i : integer;
s : string;
begin
Writeln ('Vvedite tekst:');
Readln (s);
n := 0;
for i := 1 to Length(s) do
if (s[i] <> ' ') and ((i = Length(s)) or (s[i + 1] = ' ')) then Inc(n);
Writeln ('Kol-vo slov v tekste -> ',n);
end.
var n, i : integer;
s : string;
begin
Writeln ('Vvedite tekst:');
Readln (s);
n := 0;
for i := 1 to Length(s) do
if (s[i] <> ' ') and ((i = Length(s)) or (s[i + 1] = ' ')) then Inc(n);
Writeln ('Kol-vo slov v tekste -> ',n);
end.