Помощь - Поиск - Пользователи - Календарь
Полная версия: Строки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Lyssa
Помогите мне решить задачу. Дан файл, который содержит 4 строки, определить сколько слов имеет количество букв некоторого числа N.

Для одной строки в меня получаеся, а от для 4 не могу...
uses crt;
const
A = ['A'..'Z'] + ['a'..'z'];
var
n,i: Integer;
s: String;
j: Integer;
Num: Integer;
begin
Write('Vedite radoc: ');
readln(s);
end;
Write('Dlina slova: ');
ReadLn(n);


j := 0;
Num := 0;
for i := 1 to Length(s) do
if s[i] in A then
Inc(j)
else begin
if j = n then Inc(Num);
j := 0;
end;
if j=n then Inc(Num);
WriteLn('V radky ', Num, ' clov c dlinoy ', n);
ReadLn;
end.


М
Просьба соблюдать правила.
Правила Форума, п.5, и правила раздела Задачи, п.2

Lapp
Не совсем понимаю, почему возникла проблема. Просто зацикли и сделай то же самое 4 раза. Я что-то упускаю?
Lyssa
Делала, но у меня получается 0.
Lapp
Цитата(Lyssa @ 19.12.2010 0:18) *
Делала, но у меня получается 0.
Так ты приведи ТОТ код, в котором ошибка! Зачем приводить тот, который работает?? похвастать что ли? smile.gif)
Давай код - исправим ошибку ))
Lyssa
const
A = ['A'..'Z'] + ['a'..'z'];
var
n,i: Integer;
s: String;
k,j: Integer;
Num: Integer;
begin
Write('Vedite radoc: ');
for i:=1 to 4 do begin
readln(s[i]);
end;

Write('Dlina slova: ');
ReadLn(n);

k:=0;
j := 0;
Num := 0;
i:=1;
while i<=4 do begin
for i:=1 to Length(s) do
if s[i] in A then
Inc(j)
else begin
if j = n then Inc(Num);
j := 0;
end;
if j=n then Inc(Num);
k:=k+num;
i:=i+1;
end;

WriteLn('V radky ', k,' clov c dlinoy ', n);
ReadLn;
end.


М
Ставь теги!!
Исправил в последний раз.

Lapp
Слушай - я обижусь, если ты не будешь выполнять правила (и мои просьбы).
Исправь, плз.
Lapp
Я исправил на этот раз - дальше сама ставь тэги, пожалуйста.

Ты пытаешься использовать строку как массив строк. Но для этого тебе надо было описать s не как строку, а как массив. Ты этого не сделала.
Но я вообще не возьму в толк - зачем ты вводишь строки с консоли, если по условию а тебя текст находится в файле? Короче, ввод надо переделать. Я сейчас набросаю, как..
И массив строк тоже не нужен, можно все подсчитывать прямо при чтении.
Lapp
Вот, смотри, я сделал, что говорил: взял твое первое решение и зациклил его. Ввод теперь из файла dat.txt, сделай его. Я тестировал на таком:
Цитата
Oh, jingle bells, jingle bells
Jingle all the way
Oh, what fun it is to ride
In a one horse open sleigh

А вот код:
const
A = ['A'..'Z'] + ['a'..'z'];
var
n,i,j,k,Num: Integer;
s: String;
f: text;

begin
Write('Dlina slova: ');
ReadLn(n);
Assign(f,'dat.txt');
Reset(f);
Num := 0;
while not EoF(f) do begin
ReadLn(f,s);
j := 0;
for i := 1 to Length(s) do
if s[i] in A then
Inc(j)
else begin
if j = n then Inc(Num);
j := 0;
end;
if j=n then Inc(Num)
end;
Close(f);
WriteLn('In the file, there are ',Num,' clov c dlinoy ',n);
ReadLn
end.


Совет: убери галку с опции "use Tab characters" - будет меньше мучений как тебе, так и тем, кто тебе помогает..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.