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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2013, 13:27   #1
zjenya14
 
Регистрация: 21.02.2013
Сообщений: 3
По умолчанию Задание на символы и строки

Дана строка, состоящая из СЛОВ. Выдать слова , содержащие цифры, и посчитать их количество.

Например, дана строка: abc123 abc jsa654
Нужно чтобы выводилась результирующая строка: abc123 jsa654
И количество цифр: 6

Помогите пожалуйсто!
zjenya14 вне форума Ответить с цитированием
Старый 21.02.2013, 20:18   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

1. Пусть есть строка - sIn
2. Результирующая строка - sOut
3. Подсчитываем кол-во цифр в переменной - m - так понимаю, что нужно выдать всего цифр в строке.
4. Просматриваем строку по символам и копируем слова в отдельную строку - sWord
Код:
i := 1;  // порядковый номер символа в строке
k := 1; // порядковый номер символа в слове
m := 0; // найдено цифр
flg := false; // найдена/не найдена цифра
while i <= length(sIn) do
begin
   sWord[k] := sIn[i];
k := k + 1;
5. Если символ - цифра - sIn[i] >= '0' AND sIn[i] <= '9'
то
Код:
m := m + 1;
flg := true;
6. Если sIn[i] = ' ' // пробел
и flg - истина (найдена цифра), то
Код:
sOut := sOut + sWord; //sWord уже содержит пробел 
   k := 1;
   flg := false;
7. Можно перейти в начало цикла while
8. Выводим результирующую строку и число цифр в ней.

Понятно, что не решение, но ...

Как-то так ...
Как-то так, ...

Последний раз редактировалось ViktorR; 21.02.2013 в 20:22.
ViktorR вне форума Ответить с цитированием
Старый 21.02.2013, 20:27   #3
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Если символ - цифра - sIn[i] >= '0' AND sIn[i] <= '9'
то
Чуть-чуть по проще, без Булевой алгебры
if sIn[i] in ['0'..'9'] then

Цитата:
6. Если sIn[i] = ' ' // пробел
и flg - истина (найдена цифра), то

Код:
sOut := sOut + sWord; //sWord уже содержит пробел 
   k := 1;
   flg := false;
Вы, наверное, не очень точно выразились
Что-то мне подсказывает что Вы подразумевали такой вариант :

Код:
if sIn[i] = ' ' then begin
     if flg then
         sOut := SOut + sWord; 
     k := 1;
     flg := FALSE
end;
Кстати, возможно стоит избавиться от SOut и сразу выводить на экран.
Возможно стоит так же выкинуть переменную k и поступать так :
Код:
sWord := '';
...
while .... do begin
      sWord := sWord + sIn[i]
...
end...
Poma][a вне форума Ответить с цитированием
Старый 21.02.2013, 21:50   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Большое счастье, когда тебя понимают ...
Конечно-же Ваши замечания верны на все ...

Писал не проверяя ...




И так бывает ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 21.02.2013, 21:53   #5
zjenya14
 
Регистрация: 21.02.2013
Сообщений: 3
По умолчанию

Спасибо огромное! Просто выручили
zjenya14 вне форума Ответить с цитированием
Старый 21.02.2013, 22:01   #6
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Большое счастье, когда тебя понимают ...

Цитата:
Конечно-же Ваши замечания верны на все ...
Ой! Да какие замечания, максимум уточнения!
Цитата:
Писал не проверяя ...
Все мы грешны

Цитата:
Спасибо огромное! Просто выручили
Пожалуйста Но в следующий раз лучше с конкретными вопросами и желательно с наработками
Poma][a вне форума Ответить с цитированием
Старый 21.02.2013, 22:44   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

И я свои 5 коп. Можно?
Код:
var s,c:string; b:boolean;
  i,count:integer;
begin
 s:='He2llo 4ward world';
 b:=false;
 for i:=1 to length(s) do begin
   if s[i]=' ' then begin    if b then Caption:=Caption+c+' '; c:='';b:=false; end;
   if (s[i] in ['0'..'9']) then b:=true;
   c:=c+s[i];
 end;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.02.2013, 13:31   #8
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Можно?
Баба Яга против!

Цитата:
Caption:=Caption+c+' '
А можно чуть-чуть по подробнее?
Poma][a вне форума Ответить с цитированием
Старый 22.02.2013, 22:48   #9
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Код:
var s,c:string; b:boolean;
  i,count:integer;
begin
 s:='He2llo 4ward world';
 b:=false;
 for i:=1 to length(s) do begin
   if s[i]=' ' then begin    if b then Caption:=Caption+c+' '; c:='';b:=false; end;
   if (s[i] in ['0'..'9']) then b:=true; // поскольку в предыдущей операции b
                                         // участвует, то вероятно будет правильным этот оператор сделать вторым.
   c:=c+s[i]; // это значит, что пробел попадает в с.
              // эту строку можно выполнит первой в цикле
              // тогда Caption:=Caption+c+' '; --> Caption:=Caption+c;
 end;
end;
Результат:
Код:
var s,c:string; b:boolean;
  i,count:integer;
begin
 s:='He2llo 4ward world';
 b:=false;
 for i:=1 to length(s) do begin
   c:=c+s[i];
   if (s[i] in ['0'..'9']) then b:=true;
   if s[i]=' ' then
   begin
      if b then
          Caption:=Caption+c;
          c:='';
          b:=false;
   end;
   end;
end;
Вроде так ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 22.02.2013, 23:18   #10
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Нет инициализации с.
И что такое Caption ?
Poma][a вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача 1-реализована.Задача 2-Найти и вывести символы 2-ой строки не совпавшие с символами 1-ой строки Leshkin Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 12.11.2013 08:57
строки и символы dj0nny Общие вопросы C/C++ 1 29.11.2011 16:24
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
Строки и символы 111111 Общие вопросы C/C++ 2 16.12.2008 18:18
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27