Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 13.02.2013
Сообщений: 9

Нужно разобраться с процедурой val

13.02.2013, 23:12. Показов 2559. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var b: string;
c,a:integer;
begin
Writeln ('Задача: вставьте вместо пропусков знаки (,),-,+,*,/ так, чтобы тождество стало  верным :');
writeln;
writeln('3_2_2_3_2_2_2_2_3=8');
writeln;
Write('Перепишите левую часть тождества, вставляя знаки: ');
readln(b);
a:=8;
val(b,c);
if c = a then
write('Правильно')
else
write('Неправильно');
readln;
end.
Если переменную "b" записать как единичный символ (b:='8'), то программа засчитает правильный ответ, но если b:='2*4' , то программа его не засчитывает. Можно ли сделать так, чтобы можно было записывать "b" например в таком виде 3*2+2, и как это сделать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.02.2013, 23:12
Ответы с готовыми решениями:

Проблемы с процедурой VAL
я выполнил задание "разработать проект для ввода двух массивов и для каждого умножить чётные элементы целочисленного массива на задаваемое...

Выполнить проверку для задач с процедурой val
Приветствую всех. Нужно выполнить проверку для задач с процедурой val для данных задач. var k, a, kol: integer; begin ...

Не разобраться с процедурой
Здравствуйте! Помогите пож, разобраться. У меня есть процедура: ALTER PROCEDURE dbo.Check_Certificate @NumberCert...

9
 Аватар для SHMS
6 / 6 / 7
Регистрация: 13.02.2013
Сообщений: 152
13.02.2013, 23:17
программа не видит знаки, для нее это получается строчка. нужно чтоб на *-она умножала.
0
 Аватар для Nikto
156 / 138 / 51
Регистрация: 28.11.2009
Сообщений: 460
Записей в блоге: 14
13.02.2013, 23:23
Скорее всего вам нужно выделить из строки числа и операции, в зависимости от встреченных символов производить вычисления. Из '2*4' выделяем числа, выделяем операцию, допустим в переменные x, y , z (x=2, y =*, z=4), перевести x и z в числа и в зависимости от того чему равно y выполнить нужную операцию над числами.
0
0 / 0 / 0
Регистрация: 13.02.2013
Сообщений: 9
13.02.2013, 23:23  [ТС]
Я понимаю, но как сделать так, чтобы она распознавала все символы?
0
 Аватар для Nikto
156 / 138 / 51
Регистрация: 28.11.2009
Сообщений: 460
Записей в блоге: 14
13.02.2013, 23:26
Знаков математических операций не так уж и много, ставьте проверку чтоб узнать какая из них находится в строке.
0
 Аватар для SHMS
6 / 6 / 7
Регистрация: 13.02.2013
Сообщений: 152
13.02.2013, 23:31
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
b=array[1..10] of integer-задаешь как массив,  дальше работаешь со стракой
n:=Length(b);
 for i:=1 to n do begin
  if (b[i]='3' )or(b=2) then begin
a:=b[i];
     if b[i+1]='+'
s-пусть собирает до ровно что получаем
S=S+a;
 if b[i+1]='-';
S=s-a;
 if b[i+1]='*'
s=s*a
 if b[i+1]='/'
s:=s/a;
end;
end; пр равно и 8 сам)
0
0 / 0 / 0
Регистрация: 13.02.2013
Сообщений: 9
13.02.2013, 23:32  [ТС]
Цитата Сообщение от Nikto Посмотреть сообщение
Скорее всего вам нужно выделить из строки числа и операции, в зависимости от встреченных символов производить вычисления. Из '2*4' выделяем числа, выделяем операцию, допустим в переменные x, y , z (x=2, y =*, z=4), перевести x и z в числа и в зависимости от того чему равно y выполнить нужную операцию над числами.
А если символов будет не 3 а 20 и цифры все будут разные, то придется проделывать это с каждым символом? Может быть есть более легкий способ?

Я хочу чтобы левая часть тождества совпадала с правой в независимости от расположения знаков.
0
 Аватар для SHMS
6 / 6 / 7
Регистрация: 13.02.2013
Сообщений: 152
13.02.2013, 23:55
Val (Str, k, pr) - используя эту процедуру можно преобразовать строковую переменную в числовую. Преобразуется строка Str и результат записывается в переменную k. А переменная pr необходима для проверки преобразования на ошибки . Если во время преобразования произошла ошибка ,то в переменную pr записывается целое число, которая указывает на номер символа в строке Str, с которого началась ошибка в преобразовании. Если ошибок нет , то pr = 0.
0
0 / 0 / 0
Регистрация: 13.02.2013
Сообщений: 9
14.02.2013, 01:04  [ТС]
Цитата Сообщение от SHMS Посмотреть сообщение
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
b=array[1..10] of integer-задаешь как массив,  дальше работаешь со стракой
n:=Length(b);
 for i:=1 to n do begin
  if (b[i]='3' )or(b=2) then begin
a:=b[i];
     if b[i+1]='+'
s-пусть собирает до ровно что получаем
S=S+a;
 if b[i+1]='-';
S=s-a;
 if b[i+1]='*'
s=s*a
 if b[i+1]='/'
s:=s/a;
end;
end; пр равно и 8 сам)
Не могли бы вы пояснить что такое "S" и "a"? "b" - если я правильно понял, это символы в строке?
0
 Аватар для SHMS
6 / 6 / 7
Регистрация: 13.02.2013
Сообщений: 152
14.02.2013, 08:48
Нет, S-мы собираем в него значение до равно, потом будем сравнивать. a-это цифра, которую мы вытаскиваем из строки. b-это массив, строка которую вводит пользователь, мы ее разбираем на составные части, цифры и знаки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.02.2013, 08:48
Помогаю со студенческими работами здесь

Помогите разобраться с процедурой в Excel
Привет ALL ! Есть такая процедура Dim zn1, zn2, zn3 As Double zn1 = Sheets('ai-02').Cells(c.Row, 21).Value zn2 =...

Условие val>7 выполняется и тогда, когда val<=7 минимум один раз?
Доброго времени суток. Написал программу по вот этой вот теме, на простых циклах и ветвлениях. Но что-то с ней не так- в комментариях к...

Double val = 83.1*3; val == 249.29999999999998; Android так считает
Double val = 83.1*3; Log.i(&quot;M&quot;,&quot;val = &quot;+val); M: val = 249.29999999999998 В чем фишка? Или это я в школе на математике...

Что означает строчка кода val = val & 0xF; ?
Что означает строчка кода? val = val &amp; 0xF; Не понятно использование оператора &amp;

Что может значить выражение val = incr(val); ?
Всем привет! Читаю Шилдта, дошел до обобщенных интерфейсов и у меня возник один вопрос. На странице 612 в теме обобщенные интерфейсы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru