Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 17.03.2016
Сообщений: 3
1

Как сделать проверку в строке "для дурака" с авто-заменой "," на "." - иначе вылетает

25.03.2016, 22:26. Просмотров 1338. Ответов 5


Помогите в программу "запилить" проверку ввода символа (Base, Pawer) "для дурака" с авто-заменой ',' (естественно не читающейся) на соответствующую '.' ; Запутался окончательно с типами данных, поэтому то что накуралесил показывать не cтану, а в общем виде все выглядит так:
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
33
34
35
36
program NumOfPower;
 
var Power: integer; {степень} 
var Base: double; {число}
 
function MyPower(Base:double; Power:integer):double; {непосредственно расчет}
 
var i:integer;
var rez:double; 
 
begin
 rez:= Base; 
for i:=1 toPower-1 do 
 rez:= rez * Base; 
result:=rez; 
end;
 
begin
 
write('Введите основание :');
 read(Base);
 
write('Введите степень :');
read(Power);
 
 if Power<0 then 
 
 begin
Power:=Power*(-1);
 write('Итог: число ', Base, ' в сепени ', Power, ' = ', 1/MyPower(Base, Power),';'); 
end
 
else
write('Итог: число ', Base, ' в сепени ', Power, ' = ', MyPower(Base, Power), ';');
 
end.
Добавлено через 40 минут
Из разряда "Я пытался":

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
33
34
35
36
37
38
39
40
41
42
43
program NumOfPower;
 
uses System;
 
var Strin:string;
var Power, i: integer;
var Base: double;
 
  function MyPower(Base:double; Power:integer):double;
   var i:integer;
   var rez:double;  
 
begin
 rez:= Base; 
 for i:=1 to Power-1 do 
 rez:= rez * Base; 
 result:=rez; 
end;
 
begin
 
  write('Введите основание :');
  read(Strin);
  
    for i:=length(Strin) downto 1 do
      begin
       if (Strin[i] = ',') then Strin[i] := '.' ;
      end;
    Base:= StrToInt(Strin);
 
     
  write('Введите степень :');
  read(Power);
  
  if Power<0 then 
    begin
     Power:=Power*(-1);
     write('Итог: число ', Base, ' в сепени ', Power, ' = ', 1/MyPower(Base, Power),';');
    end
  else
  write('Итог: число ', Base, ' в сепени ', Power, ' = ', MyPower(Base, Power), ';');
     
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2016, 22:26
Ответы с готовыми решениями:

Удвоить в строке буквы "ю", "ъ", "ф", "э", а между словами оставить только по одному пробелу
Пользователь заполняет символьную строку русскими буквами. Буквы ю, ъ, ф, э в ней нужно удвоить, а...

Из слова "клоун" путем "вырезок" и "склеек" его букв получить слова "уклон","кулон" и "колун"
Из слова &quot;клоун&quot; путем &quot;вырезок&quot; и &quot;склеек&quot; его букв получить слова &quot;уклон&quot;,&quot;кулон&quot; и...

Сформировать вектор: если в строке матрицы букв больше цифр, то элемент вектора -"истина", иначе "ложь"
Случайным образом заполнить матрицу символов 6х6.сформировать вектор в строке матрицы строчных...

Даны текстовый файл "F" и строка "S". Получить все строки файла "F", содержащие в качестве фрагмента строку "S".
Плиз помогите написать прогу: Даны текстовый файл &quot;F&quot; и строка &quot;S&quot;. Получить все строки файла &quot;F&quot;,...

5
Модератор
62951 / 46963 / 32363
Регистрация: 18.05.2008
Сообщений: 113,804
26.03.2016, 11:37 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от kanapylka Посмотреть сообщение
"запилить" проверку ввода символа
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var Power,code: integer; {степень} 
     Base: double; {число}
     s:string;
...........................
repeat
write('Введите основание :');
readln(s);
val(s,base,code);
if code<>0 then writeln('Введите действительное число');
until code=0;
repeat
write('Введите степень :');
readln(s);
val(s,Power,code);
if code<>0 then writeln('Введите целое число');
until code=0;
1
Модератор
8403 / 4155 / 2873
Регистрация: 17.08.2012
Сообщений: 13,249
26.03.2016, 12:17 3
Для действительного числа ещё можно добавить:
Pascal
7
readln(s); if pos(',', s) > 0 then s[pos(',', s)] := '.';
0
0 / 0 / 0
Регистрация: 17.03.2016
Сообщений: 3
29.03.2016, 12:54  [ТС] 4
У меня все же проблема, я пишу в WDE среде (http://pascalabc.net/WDE/) в общем и не могу преобразовать string в double, т.е. вернуть нужный тип данных, мол в double нуждаюсь я.
Метод Double.Parse не работает
0
Модератор
8403 / 4155 / 2873
Регистрация: 17.08.2012
Сообщений: 13,249
29.03.2016, 23:00 5
kanapylka, а что, в этой самой wde процедура val перестала работать?
0
0 / 0 / 0
Регистрация: 17.03.2016
Сообщений: 3
01.11.2016, 11:09  [ТС] 6
Я не заметил, спасибо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2016, 11:09

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Пожалуйста, составьте программу, которая из слов"СТРАХ","БЕЛКА","ЦЫПЛЁНОК" получает слово "СТОЛБЕЦ"
Пожалуйста, составьте программу, которая из слов&quot;СТРАХ&quot;,&quot;БЕЛКА&quot;,&quot;ЦЫПЛЁНОК&quot; получает слово &quot;СТОЛБЕЦ&quot;.

Изобразить стрелку и осуществить движение по клавишам "вверх", "вниз", "вправо", "влево"
Необходимо изобразить стрелку и осуществить движение по клавишам &quot;вверх&quot;, &quot;вниз&quot;, &quot;вправо&quot;, &quot;влево&quot;.

Даны строки а="вариант",b= "Высоко", с = "макароны". Получить слово "соковарка"
4 .Даны строки а=&quot;вариант&quot;,b= &quot;Высоко&quot;, с = &quot;макароны&quot;. Получить слово &quot;соковарка&quot;.

Определить сколько "5", "4", "3", "2" было выставлено в каждом классе
известны оценки за контрольную по физике каждого ученика двух классов. Определить сколько &quot;5&quot;, &quot;4&quot;,...

Заменить букву "А" на "КО" и подсчитать общее количество букв "Ф" и "В"
Заменить букву &quot;А&quot; на &quot;КО&quot; и подсчитать общее кол-во букв &quot;Ф&quot; и &quot;В&quot; . и Последнее...

Операции со строками.Заменить в строке букву "а" на "с", если она стоит на чётном месте,и на "у" если на нечётном
Дана строка.Заменить в строке букву &quot;а&quot; на &quot;с&quot;, если она стоит на чётном месте,и на &quot;у&quot; если на...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.