Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2013, 13:33   #1
Falcao
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 33
По умолчанию Поиск ошибки

Есть задача: нужно считать текст с файла и перевести все первые буквы слов в верхний регистр, у меня почти всё готово. Лишь выдает 1 строку ряда до конца файла, с первыми буквами большого регистра...
ДОПУСТИМ есть такой текст:

sflsf slfkslfk lsfk kasdk dlad
dfsfd ks sf,s sf adad addas
daxkvck zcvxzx
dsf sfs fzf xcvb dgs gsg

в результате выполнения программы выдаёт

Sflsf Slfkslfk Lsfk Kasdk Dlad
Sflsf Slfkslfk Lsfk Kasdk Dlad
Sflsf Slfkslfk Lsfk Kasdk Dlad
Sflsf Slfkslfk Lsfk Kasdk Dlad

Знаю что ошибка маленькая, где-то в цикле, но найти не могу...

Код:
uses crt;
var
  f,k:text;
  s:array[1..255] of string;
  s_new:array[1..255] of string;
  a:array[1..100] of string;
  i,n,max,b,l,count:integer;
begin
clrscr;
assign(f, '???');
reset(f);
assign(k, '???');
rewrite(k);

while not eof(f) do
 begin
   inc(b);
   readln(f,s[b]);
 end;

 max:=b;

 count:=1;
 i:=1;
 n:=1;
 b:=1;
 
 for b:=1 to max do
 begin
     begin
         while (i<=length(s[b])) do
          begin
            if s[b][i]=' ' then
              begin
                inc(count);
                inc(i);
                inc(n);
              end;

   a[count]:=a[count]+s[b][i];
   inc(i);
   l:=count;
 end;

s_new[b]:='';

 for count:=1 to l do
  begin
    if a[count][1] in ['a'..'z'] then a[count][1]:=UpCase(a[count][1]);
    s_new[b]:=s_new[b]+a[count]+' ';
  end;
     end;
writeln(k, s_new[b]);


end;

close(f);
close(k);
 end.
Falcao вне форума Ответить с цитированием
Старый 09.01.2013, 18:48   #2
Falcao
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 33
По умолчанию

Помогииите... Тут же мелочь)
вот, я понял в чём суть... Массив "а" со словами нужно очищать всё время... пробовал так, но всё равно...
Код:
uses crt;
var
  f,k:text;
  s:array[1..255] of string;
  s_new:array[1..255] of string;
  a:array[1..100] of string;
  i,n,max,b,l,count:integer;
begin
clrscr;
assign(f, '???');
reset(f);
assign(k, '???');
rewrite(k);

while not eof(f) do
 begin
     inc(b);
     readln(f,s[b]);
 end;

 max:=b;

 count:=1;
 i:=1;
 n:=1;
 b:=1;
 
 for b:=1 to max do
    begin
     begin
         while (i<=length(s[b])) do
          begin
            if s[b][i]=' ' then
              begin
                inc(count);
                inc(i);
                inc(n);
              end;

   a[count]:=a[count]+s[b][i];
   inc(i);
   l:=count;
 end;

s_new[b]:='';
end;

 for count:=1 to l do
  begin
    if a[count][1] in ['a'..'z'] then a[count][1]:=UpCase(a[count][1]);
    s_new[b]:=s_new[b]+a[count]+' ';
  end;
writeln(s_new[b]);

i:=1;                     {TYT ИСПРАВИТЬ НУЖНО...}
s_new[b]:='';



end;

close(f);
close(k);
 end.
Falcao вне форума Ответить с цитированием
Старый 09.01.2013, 18:56   #3
Falcao
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 33
По умолчанию

Уже сам нашел ошибку, спасибо за внимание) Кому интересно:
Код:
uses crt;
var
  f,k:text;
  s:array[1..255] of string;
  s_new:array[1..255] of string;
  a:array[1..100] of string;
  i,n,max,b,l,count:integer;
begin
clrscr;
assign(f, '???');
reset(f);
assign(k, '???');
rewrite(k);

while not eof(f) do
 begin
     inc(b);
     readln(f,s[b]);
 end;

 max:=b;

 count:=1;
 i:=1;
 n:=1;
 b:=1;
 
 for b:=1 to max do
    begin
     begin
         while (i<=length(s[b])) do
          begin
            if s[b][i]=' ' then
              begin
                inc(count);
                inc(i);
                inc(n);
              end;

   a[count]:=a[count]+s[b][i];
   inc(i);
   l:=count;
 end;

s_new[b]:='';
end;

 for count:=1 to l do
  begin
    if a[count][1] in ['a'..'z'] then a[count][1]:=UpCase(a[count][1]);
    s_new[b]:=s_new[b]+a[count]+' ';
  end;
writeln(s_new[b]);

i:=1;
s_new[b]:='';

for count:=1 to l do    {тут геммор был}
a[count]:='';
count:=1;


end;

close(f);
close(k);
 end.

Последний раз редактировалось Falcao; 09.01.2013 в 19:01.
Falcao вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск ошибки.... Ангел без крыльев Visual C++ 2 21.12.2011 11:00
C++ , поиск ошибки Sokolik1 Помощь студентам 11 09.06.2011 17:33
Массивы и указатели. Поиск ошибки. smartt Помощь студентам 1 17.01.2011 23:54
Поиск в коде ошибки. Повторяется бесконечно! Человек_Борща Общие вопросы Delphi 9 16.01.2011 01:27