IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Найти выражение в строке и подсчитать.
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Подскажите пожалуйста, второй день не могу решить wacko.gif

Цитата
Вычислить результат выражения, заданного символьным набором abc22+4cd+32.5ef, выделив из набора символов 22 + 4 + 32.5.


На данный момент есть вот это:
Код
uses crt;
const number=['1','2','3','4','5','6','7','8','9','0'];
      plus=['+'];

var
s,a: string;
i,k,rezult,c1,code:integer;

begin
clrscr();
writeln('Введите строку=');
readln(s);

i:=1;
k:=1;
c1:=0;
rezult:=0;

while k<=length(s) do
  begin
  
    a:='';
    c1:=0;

    while not(s[i] in number) do
       i:=i+1;
  
    while s[i] in number do
      begin
        a:=a+s[i];
        i:=i+1;
      end;
    val(a,c1,code);
  
   if s[i] in plus then rezult:=rezult+c1;

   k:=k+1;
end;

writeln('Результат=',rezult);
end.


Но работать корректно оно не хочет mad.gif

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


А зачем? Есть у тебя строка, содержащая буквы, цифры и знаки, ты хочешь из нее буквы убрать, и вычислить значение полученного выражения. По какому праву убрал буквы, спрашивается?

Не, оно, конечно, решаемое... (Показать/Скрыть)
, но смысла я в этом по-прежнему не вижу... Возможно, будет проще удалить из строки все "неправильные" символы, и работать только с оставшимися, пробуй.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Спасибо большое! Сейчас буду пытаться понять как все это работает.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Я прошу прощения, паскаль я только начал изучать. Не могу понять принцип работы вот этого условия:
Код
  if s[i] in number + ['.']

Не могли бы вы пояснить как работает тут знак +?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Здесь "+" это объединение множеств (результат - все символы, которые содержатся или в первом, или во втором множестве, не путай с "*", которое означает "верни все элементы, одновременно присутствующие в первом и втором множествах").

То есть, number содержит все цифры от "0" до "9", а потом этим самым плюсом к цифрам добавляется еще и точка. По-другому можно было бы записать так:
if s[ i ] in ['0' .. '9', '.'] then ...
именно это и делает приведенный выше код.

Сообщение отредактировано: IUnknown -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Огромное спасибо за разъяснение!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.04.2024 22:20
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name