Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
123
36 / 0 / 1
Регистрация: 18.03.2015
Сообщений: 177
1

Разделить введеную строку на 2 части и прибавить число из второй части к переменнной

22.09.2018, 11:51. Показов 2406. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание:
если вводится "сила 5" прибавить 5 (или другое введенное число) к переменной str и вывести "Сила +5". Если вводится "ловкость" то прибавить число к переменной dex и вывести "Ловкость +введенное число."



Pascal
1
2
3
4
5
6
7
8
9
10
11
12
uses crt;
var
s: string;
str,dex: integer;
begin
str:=0;
read(s);
s.towords; // здесь я делю строку на 2 части
if (towords[0] = сила) then //если первая часть равно "сила"
str:=str + strtoint.towords[1]; // прибавить число к str
write();
end
Мой код весь дырявый прошу поправить, методы расширения только начинаю изучать
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2018, 11:51
Ответы с готовыми решениями:

Хочу страничку разделить на три части. А все части лепятся в одну сторону.
Привет Есть АСП страничка. Решил её переделать. Возникла проблема. Хочу страничку разделить на...

Разделить строку на 3 части
Доброго времени суток. Ребята подскажите, что то не могу сообразить. В общем получаю строку такого...

Разделить строку на части
Доброго времени суток. Имеется строка: char *pBuf=new char; заполняется она таким образом: ...

Разделить строку на части по табуляции.
Здравствуйте,возник вопрос:читаю числа,разделенные табуляцией из файла,а как убрать эту...

16
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
22.09.2018, 12:21 2
А не проще просто вставить символ + в строку?
Pascal
1
2
3
4
5
6
7
var
s: string;
begin
read(s);//сила 5
insert('+',s,pos(' ',s)+1);
write(s);//сила +5
end.
Добавлено через 1 минуту
А у Вас нужно писать так
if s.towords[0] = 'сила'
strtoint(s.towords[1]);
1
123
36 / 0 / 1
Регистрация: 18.03.2015
Сообщений: 177
22.09.2018, 14:11  [ТС] 3
Спасибо. Но тут еще не все.


Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
uses crt;
 
var
s: string;
str,dex: integer;
begin
str:=0;
read(s);
 
if s.towords[0] = 'сила' then
strtoint(s.towords[1]);
str:=str+s.ToWords[1]
writeln(s.ToWords[0] +str);
;
 
if s.towords[0] = 'ловкость' then
strtoint(s.towords[1]);
dex:=dex+s.ToWords[1]
writeln(s.ToWords[0] + dex);
;
end.
Пишет "нельзя преобразовать тип string к integer".
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
22.09.2018, 14:17 4
Pascal
1
2
str:=str+strtoint(s.ToWords[1]);
dex:=dex+strtoint(s.ToWords[1]);
И все равно какая-то глупость написана.
0
123
36 / 0 / 1
Регистрация: 18.03.2015
Сообщений: 177
22.09.2018, 14:35  [ТС] 5
Ну мне так надо. Где глупость?
Вставить плюс конечно проще... А если начальное количество str не равно нулю и надо вывести новое значение. Там у меня "сила 5" значит не 5, а плюс 5. Распределение очков.

Я вот в другом вижу глупость. Ну или не совсем логику.
Зачем преобразовывать еще раз string в integer если мы же уже преобразовали в 11ой строке?

Добавлено через 10 минут
И еще там должна быть переменная points откуда иы распределяем и надо повторять операцию до тех пор пока она не станет равной нулю.


Pascal
1
2
3
4
points: integer;
...
read(s);
вот тут цифру которую вводим нужно отнять от points и прибавить к характеристике что вводим и так пока она не станет равной нулю
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
22.09.2018, 14:44 6
Цитата Сообщение от Андрей1926 Посмотреть сообщение
Зачем преобразовывать еще раз string в integer если мы же уже преобразовали в 11ой строке?
Да потому что мы не преобразовали строку в число, а в действии используем числовое значение строки.
1
123
36 / 0 / 1
Регистрация: 18.03.2015
Сообщений: 177
22.09.2018, 14:46  [ТС] 7
А то есть строка так и остается стрингом?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
22.09.2018, 14:48 8
Да. Если присвоить ее числовое значение другой переменной, то там будет целое число, а если не присваивать, то так строка и останется.
1
123
36 / 0 / 1
Регистрация: 18.03.2015
Сообщений: 177
22.09.2018, 16:11  [ТС] 9
Если введено отличное от слов "сила" и "ловкость" значение, как показать что введенное значение неверно и вывести предупреждение?

Pascal
1
2
3
4
5
6
7
8
9
if s.towords[0] = 'сила' then
begin
strtoint(s.towords[1]);
str:=str+strtoint(s.ToWords[1]);
points:=points-strtoint(s.ToWords[1]);
writeln(s.ToWords[0],' ', + str);
end;
else
writeln('Неправильно введен параметр');
Пишет "встречено else, а ожидался оператор".
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
22.09.2018, 16:13 10
В строке 7 убери точку с запятой.
1
123
36 / 0 / 1
Регистрация: 18.03.2015
Сообщений: 177
22.09.2018, 16:39  [ТС] 11
Спасибо. Строку из else всеравно выводит даже если значения верны. Это почему так?

И еще вот. Тут: индекс находится вне границ массива. Ошибка при выполнении.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
var
s: string;
str,dex,points: integer;
begin
str:=0;
points:=25;
repeat
read(s);
 
if s.towords[0] = 'сила' then
begin
strtoint(s.towords[1]);
str:=str+strtoint(s.ToWords[1]);
writeln(s.ToWords[0] +str);
end
else
writeln('Не правильно введен параметр');
 
 
if s.towords[0] = 'ловкость' then
begin
strtoint(s.towords[1]);
dex:=dex+strtoint(s.ToWords[1]);
writeln(s.ToWords[0] + dex);
end
else
writeln('Не правильно введен параметр');
 
until points<0;
end.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
22.09.2018, 16:50 12
Что такое points и как оно станет меньше 0?
Зачем у Вас строки 12 и 22?
0
123
36 / 0 / 1
Регистрация: 18.03.2015
Сообщений: 177
23.09.2018, 07:45  [ТС] 13
Вчера не дописал... Points вот.
А 12 и 22 это я тогда думал что преобразование идет навсегда, а не в действии. Ошибся тоесть.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
var
s: string;
str,dex,points: integer;
begin
str:=0;
points:=25;
repeat
read(s);
 
if s.towords[0] = 'сила' then
begin
str:=str+strtoint(s.ToWords[1]);
writeln(s.ToWords[0] +str);
points:=points-strtoint(s.ToWords[1]);
writeln('Очков осталось:',' ', points);
end
else
writeln('Не правильно введен параметр');
 
 
if s.towords[0] = 'ловкость' then
begin
dex:=dex+strtoint(s.ToWords[1]);
writeln(s.ToWords[0] + dex);
points:=points-strtoint(s.ToWords[1]);
writeln('Очков осталось:',' ', points);
end
else
writeln('Не правильно введен параметр');
 
until points<0;
end.
Ошибка про индекс вне границ осталась для 10 строки. И предупреждение о неправильном вводе срабатывает.

Добавлено через 17 минут
Ну почему выводится предупреждение это понятно: если для параметра "сила" параметр "ловкость" неправильный и наоборот, поэтому если вводим ловкость то выполняется else. Только как исправить я не знаю...
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
23.09.2018, 08:12 14
Лучший ответ Сообщение было отмечено Андрей1926 как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
repeat
readln(s);//не нужно писать read
if s.towords[0] = 'сила' then
begin
str:=str+strtoint(s.ToWords[1]);
writeln(s.ToWords[0] +str);
points:=points-strtoint(s.ToWords[1]);
writeln('Очков осталось:',' ', points);
end
else
if s.towords[0] = 'ловкость' then
begin
dex:=dex+strtoint(s.ToWords[1]);
writeln(s.ToWords[0] + dex);
points:=points-strtoint(s.ToWords[1]);
writeln('Очков осталось:',' ', points);
end
else
writeln('Не правильно введен параметр');
 
until points<0;
Добавлено через 16 минут
Цитата Сообщение от Андрей1926 Посмотреть сообщение
Ну почему выводится предупреждение это понятно:
Потому что не нужно это писать 2 раза.
0
123
36 / 0 / 1
Регистрация: 18.03.2015
Сообщений: 177
23.09.2018, 11:58  [ТС] 15
Спасибо вам!

В конце где end с точкой пишет: Встречено 'end', а ожидалось ';'...
Посмотрел, вроде не должно уже ошибок быть.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
23.09.2018, 12:26 16
Брось ты это программирование если ума нет.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var
s: string;
str,dex,points: integer;
begin
str:=0;
points:=25;
repeat
readln(s);//не нужно писать read
if s.towords[0] = 'сила' then
begin
str:=str+strtoint(s.ToWords[1]);
writeln(s.ToWords[0] +str);
points:=points-strtoint(s.ToWords[1]);
writeln('Очков осталось:',' ', points);
end
else
if s.towords[0] = 'ловкость' then
begin
dex:=dex+strtoint(s.ToWords[1]);
writeln(s.ToWords[0] + dex);
points:=points-strtoint(s.ToWords[1]);
writeln('Очков осталось:',' ', points);
end
else
writeln('Не правильно введен параметр');
 
until points<0;
end.
0
123
36 / 0 / 1
Регистрация: 18.03.2015
Сообщений: 177
23.09.2018, 12:33  [ТС] 17
Да ум то есть, просто паралельно еще джаву изучаю. Устаю сильно... Ошибся там, из-за такой ерунды бросать. Я ж еще не начал толком)).

Вот внимательности мне иногда не хватает это правда.
0
23.09.2018, 12:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2018, 12:33
Помогаю со студенческими работами здесь

Разделить строку на две части
дана задача.есть переменная char = россия. надо разделить её на две части так,чтобы получилось что...

Разделить строку на две части
По индивидуальному заданию создать функцию для обработки символьных строк. За образец брать...

разделить число на 2 части
как разделить число на 2 части вот у меня есть число в int : 445219 Я точно знаю что у меня с...

Разделить строку на три части и перемешать их
Дана произвольная строка, разделить ее на 3 части и поменять их таким образом 2-3-1 Кто может...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru