Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Строки

280
01 марта 2008 года
ВуД™
326 / / 04.01.2006
Привет всем
Вот код программы. Который должен выполнятся по этому условию
[COLOR="SandyBrown"]Сформировать новую строку из слов, состоящих только из латинских букв, и длиной не более 7 литер. Все строчные буквы в новой строке заменить на заглавные.[/COLOR]

Код:
var
   st, s, sd, sv : string;
    m: array [1..100] of string;
     i, k, t, col: integer;
     ok: boolean;
     begin

       writeln('1 ');
         readln(st);
           k:=1;
         col:=0;


             for i:=1 to length(st) do
               begin
                 if st=' ' then
                   begin

                     k:=k+1;


                        end  else

                               m[k]:=m[k]+st;

                          end;
                          t:=k;

                           for k:=1 to t do


                           begin
                           s:=m[k]+' ';

                           for i:=1 to length(s) do begin

                           col:=col+1;

                            if (length(s)<=8) and (s in ['a' .. 'z','A'..'Z', ' ']) then
                            begin


                            sd:=sd+upcase(s);
                            end
                            else begin
                            col:=col+(length(s)-i);
                            delete(sd,col-i,i);



                             break;
                           end;
                           end;
                          {  if (s in ['1' .. '9']) then
                            sv:=sv+s; }





                            end;



                           write(sd);
                           readln;
                           end.

Когда водишь вот так: 454dff dfffd все работает, а вот так: dfd dfdf54 fddf45.

[COLOR="Red"]Помогите исправить и найти ошибку?[/COLOR]
22K
01 марта 2008 года
BSE
12 / / 25.12.2006
вот пример:
Код:
var
   St, SubSt, OutSt: String;
   SpPos: Word;
function Position(Ch: Char): Word;
begin
   if Pos(Ch, St)<> 0 then
      Position:= Pos(Ch, St)- 1
   else
      Position:= Length(St);
end;
function UpLatin(var St: string): Boolean;
var
   I: Word;
begin
   for I:= 1 to Length(St) do begin
      if St in ['A'..'Z', 'a'..'z'] then
         St:= UpCase(St)
      else begin
         UpLatin:= False;
         Exit;
      end;
   end;
   UpLatin:= True;
end;
begin
   Writeln('Input string');
   Readln(St);
   OutSt:= '';
   while Length(St)<> 0 do begin
      SpPos:= Position(' ');
      SubSt:= Copy(St, 1, SpPos);
      if (Length(SubSt)< 8) and (UpLatin(SubSt)) then
         OutSt:= OutSt+ SubSt+ ' ';
      Delete(St, 1, SpPos+ 1);
   end;
   Writeln(OutSt);
   Readln;
end.

правда его я не проверял
280
01 марта 2008 года
ВуД™
326 / / 04.01.2006
Спасибо. Но мне надо разобратся в моем коде, как его исправить
22K
01 марта 2008 года
BSE
12 / / 25.12.2006
Если ты уже вырезаешь слова в массив, то достаточно будет просто проверять эти слова на правильность и изменять их, а потом добавлять в выходную строку (например, как в UpLatin). А зачем ты добавляешь, а потом удаляешь строки, я не понял.
257
01 марта 2008 года
kosfiz
1.6K / / 18.09.2005
смотрим (вроде как работает):
[highlight=pascal]
uses crt;

var
st, s, sd, sv : string;
m: array [1..100] of string;
i, k, t, col: integer;
ok: boolean;
begin
clrscr;
readln(st);
k:=1;
col:=0;
for i:=1 to length(st) do
begin
if st=' ' then
begin
k:=k+1;
end
else
m[k]:=m[k]+st;
end;
t:=k;
col:=0;
for k:=1 to t do
begin
s:=m[k]+' ';
for i:=1 to length(s) do
begin
col:=col+1;
if (length(s)<=8) and (s in ['a' .. 'z','A'..'Z', ' ']) then
begin
sd:=sd+upcase(s);
end
else
begin
col:=col-i; {из неверного слова добавлено к строке i символов так надо столько же и удалять}
delete(sd,col+1,i); {col символов в правильной строке, значит можно удалить все начиная соследующего}

break;
end;
end;
end;
write(sd);
readln;
end. [/highlight]
280
02 марта 2008 года
ВуД™
326 / / 04.01.2006
Вот есть у меня числовое слово которое записано в строке '4512' как найти сумму этого слова?:confused:
257
02 марта 2008 года
kosfiz
1.6K / / 18.09.2005
я так понял сумму цифр числа надо найти, тогда приблизительно так:
[highlight=pascal]
var
s: string;
i, x, sum, e: integer;
begin
sum:=0;
readln(s);
for i:=1 to length(s) do
begin
val(s, x, e);
sum:=sum+x;
end;
writeln(sum);
readln;
end. [/highlight]
ну строку только еще проверь на то, из цифр она или нет и т.д. - навставляй там всяких проверок.
280
02 марта 2008 года
ВуД™
326 / / 04.01.2006
Цитата:
ну строку только еще проверь на то, из цифр она или нет и т.д. - навставляй там всяких проверок.



С этим мы разберемся

Большое спасибо :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог