Форум программистов, компьютерный форум, киберфорум
Наши страницы

Turbo Pascal

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.77
Fragman
0 / 0 / 0
Регистрация: 13.11.2009
Сообщений: 12
#1

Защита от дурака - Turbo Pascal

13.11.2009, 02:30. Просмотров 4986. Ответов 26
Метки нет (Все метки)

следующая проблема, если я ввожу символы любые, то как мне сделать чтобы программа выводила сообщение "введены не числовые коэффициенты"

Pascal
1
2
3
4
5
6
7
programm abc;
var
 a:real;
begin
 write('vvedite a');
 readln(a);
end.
Только нужно чтобы с readln было
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2009, 02:30
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Защита от дурака (Turbo Pascal):

Защита от дурака - Turbo Pascal
Следующая проблема, нужно что бы при вводе букв и символов, программа выдавала сообщение "('Это не является числом, повторите ввод!')" и...

защита от дурака - Turbo Pascal
Лазил по форуму, не могу найти подходящую защиту от ввода букв для интеграции. Необходимо защитить значения А,B,n от ввода букв: ...

Защита от дурака - Turbo Pascal
Форумчане обьясните как сделать защиту от дурака заключается она в том что при заполнение двумерного массива при вводе буквы вместо числа...

Защита от дурака - Pascal
Здравствуйте, участники форума! У меня проблема: написал курсовую работу по паскалю на базы данных, теперь необходимо разработать так...

Защита от дурака в Паскале (от не того типа данных) - Pascal
Конкретной задачи нет, интересует сугубо теория=) Предположим нам надо считать в консольном режиме любого паскаля переменную "a" типа...

Pascal!? Функция защиты от дурака??? - Pascal
Нужен пример функции как сделать защиту от неправильного ввода, напр. нужно ввести число, а если какой-нть "чайник" введет символ, то...

26
thedrill
1 / 1 / 0
Регистрация: 12.11.2009
Сообщений: 8
13.11.2009, 02:35 #2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
programm abc;
var
a:string;
i:integer;
ot:boolean;
begin
write('vvedite a');
readln(a);
ot:=true;
for i:=1 to Length(a) do
if not(a[i] in ['0'..'9']) ot:=false;
if (ot=false) write("введены не числовые коэффициенты");
end.
попробуй так
0
Fragman
0 / 0 / 0
Регистрация: 13.11.2009
Сообщений: 12
13.11.2009, 02:59  [ТС] #3
О работает спасибо! теперь надо мне её в основную внедрить!
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
program kvur;
uses crt;
var
 a,b,c,d,x1,x2:real;
begin
 write('vvedite koef. a:');
 readln(a);
 write('vvedite koef. b:');
 readln(b);
 write('vvedite koef. c:');
 readln(c);
 begin
 if (a=0) and (b=0) or (a=0) and (c=0) or (b=0) and (c=0) then write('uravnenie reweni9 ne imeet');
 end;
  if a=0 then begin
   x1:=-c/b;
   writeln('x1= ',x1:2:2);
  end;
  if b=0 then begin
   x1:=c/a; x2:=-c/a;
   write('x1= ',x1:2:2,' x2= ',x2:2:2);
  end;
   begin
  d:=sqr(b)-4*a*c;
  if d>0 then   begin
   x1:=(-b-sqrt(d))/(2*a);
   x2:=(-b+sqrt(d))/(2*a);
   writeln('korni ur.:');
   writeln ('x1= ',x1:2:2,' x2= ',x2:2:2);
   if d<0 then write('kornei net! t.k. disrk otric. d= ',d:2:2);
   end;   end;
    readkey;
 end.
вот тут мне нехвататет чтобы выводилось сообщение при вводе символов - "введены не числовые коэфф." и чето
begin
if (a=0) and (b=0) or (a=0) and (c=0) or (b=0) and (c=0) then write('uravnenie reweni9 ne imeet');
end;
не так пашет,при вводе a=0 b=3 c=0 выводиться то сообщение выводиться но и корни выводяться равные 0 0 ,как бы убрать чтобы корни не выводились, аналогично и когда a=0 b=0 c=3
0
Inadequate
Retired
7709 / 2542 / 184
Регистрация: 17.10.2009
Сообщений: 5,100
13.11.2009, 03:02 #4
Fragman, thedrill, ребят, используйте тэги кода, очень неудобно читать, к тому же этим вы прибавляете работы для модераторов.
1
Fragman
0 / 0 / 0
Регистрация: 13.11.2009
Сообщений: 12
13.11.2009, 03:09  [ТС] #5
как я понял мне нужно будет переделать реал в стринг в отдельном блоке ??чтобы если коэффициенты числовые программа работала дальше, а если нет то уже переделывала реал в стринг и считала! только вот как непомню, давно в тп не кодил ((вообще давно не кодил
0
Inadequate
Retired
7709 / 2542 / 184
Регистрация: 17.10.2009
Сообщений: 5,100
13.11.2009, 03:14 #6
Fragman, чтобы проверить запись на корректность используйте оператор repeat ... until так будет и проще и короче...
0
Fragman
0 / 0 / 0
Регистрация: 13.11.2009
Сообщений: 12
13.11.2009, 03:17  [ТС] #7
Inadequate, ммм... это потом. Сейчас в другом дело, то что выше писал, ты случаем незнаешь ?)
0
Inadequate
Retired
7709 / 2542 / 184
Регистрация: 17.10.2009
Сообщений: 5,100
13.11.2009, 03:22 #8
Fragman, я наверное сильно устал, но я не понимаю в чем в другом, зачем вам вообще проверять что-то? если то что вам я вам предлагаю просто не допустит того чтобы у вас коэффициенты были не числовыми...

Добавлено через 1 минуту
я вот о чем говорил, при желании можно добавить и вещественные числа в список "разрешенных" чисел...
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
uses
  crt;
var
  s:string;
{функция проверки на корректность записи}
function Pr(s:string):boolean;
const
  n=['0'..'9'];
var
  i:integer;
  fl:boolean;
begin
  fl:=true;
  for i:=1 to length(s) do
    if not(s[i] in n) then
    begin
      fl:=false;
      break
    end;
  Result:=fl
end;
{основная программа}
begin
  repeat
    readln(s);
    if not Pr(s) then
      writeln('Данная запись не является корректной записью числа!')
  until
    Pr(s);
end.
Добавлено через 57 секунд
тогда вам останется только посчитать ничего не проверяя... если что укажите пальцем на то что я не понял...
0
Inadequate
Retired
7709 / 2542 / 184
Регистрация: 17.10.2009
Сообщений: 5,100
13.11.2009, 03:27 #9
Fragman, вы глаза то откройте, я вам написал то о чем вы говорите, моя программа не вылетает если ввести некорректную запись, она извещает о том что запись некорректна, и возращает пользователя опять на ввод тойже переменной... а когда введенное число соответствует то моя программа просто завершается так там больше ничего не написанно...
0
Inadequate
Retired
7709 / 2542 / 184
Регистрация: 17.10.2009
Сообщений: 5,100
13.11.2009, 03:28 #10
процедура перевода числа в строку называется Str вот вам справка:
Str(x,s)
Str(x:n,s)
Str(x:n:m,s) процедура s - string, x - integer, real и n, m - integer преобразует x к строковому представлению (во втором и третьем случаях согласно формату вывода, устанавливаемому n и m) и записывает результат в строку s
a перевод строки в число val
Val(s,v,code) процедура s - string, v - integer, real, и code - integer преобразует строку s к числовому представлению и записывает результат в переменную v. Если преобразование возможно, то в переменной code возвращается 0, если невозможно, то в code возвращается ненулевое значение
0
Fragman
0 / 0 / 0
Регистрация: 13.11.2009
Сообщений: 12
13.11.2009, 03:30  [ТС] #11
Цитата Сообщение от Inadequate Посмотреть сообщение
Fragman, вы глаза то откройте, я вам написал то о чем вы говорите, моя программа не вылетает если ввести некорректную запись, она извещает о том что запись некорректна, и возращает пользователя опять на ввод тойже переменной... а когда введенное число соответствует то моя программа просто завершается так там больше ничего не написанно...
а ну тогда больно длинная у тебя программа ))

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
programm abc;
var
a:string;
i:integer;
ot:boolean;
begin
write('vvedite a');
readln(a);
ot:=true;
for i:=1 to Length(a) do
if not(a[i] in ['0'..'9']) ot:=false;
if (ot=false) write("введены не числовые коэффициенты");
end.
эта короче
0
Inadequate
Retired
7709 / 2542 / 184
Регистрация: 17.10.2009
Сообщений: 5,100
13.11.2009, 03:32 #12
Fragman, при заданных условиях это наиболее оптимальный вариант, конечно можно было сделать функцию в функции, но если вы не знаете что такое Result:=fl то я думаю вам это не нужно...
0
Fragman
0 / 0 / 0
Регистрация: 13.11.2009
Сообщений: 12
13.11.2009, 03:33  [ТС] #13
Fragman, при заданных условиях это наиболее нормальный вариант, конечно можно было сделать функцию в функции, но если вы не знаете что такое Result:=fl то я думаю вам это не нужно...
это знаю, просто не запускалось
0
Inadequate
Retired
7709 / 2542 / 184
Регистрация: 17.10.2009
Сообщений: 5,100
13.11.2009, 03:33 #14
Цитата Сообщение от Fragman Посмотреть сообщение
так она не запускаеться )
если у вас tp7 тогда просто result поменять на имя функции т.е. на Pr
0
Fragman
0 / 0 / 0
Регистрация: 13.11.2009
Сообщений: 12
13.11.2009, 03:38  [ТС] #15
Цитата Сообщение от Inadequate Посмотреть сообщение
если у вас tp7 тогда просто result поменять на имя функции т.е. на Pr
всё работает спасибо! вот только теперь обьединить бы две программы!

Добавлено через 2 минуты
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
uses crt;
var
a,b,c,d,x1,x2:real;
begin
write('vvedite koef. a:');
readln(a);
write('vvedite koef. b:');
readln(b);
write('vvedite koef. c:');
readln(c);
begin
if (a=0) and (b=0) or (a=0) and (c=0) or (b=0) and (c=0) then write('uravnenie reweni9 ne imeet');
end;
if a=0 then begin
x1:=-c/b;
writeln('x1= ',x1:2:2);
end;
if b=0 then begin
x1:=c/a; x2:=-c/a;
write('x1= ',x1:2:2,' x2= ',x2:2:2);
end;
begin
d:=sqr(b)-4*a*c;
if d>0 then begin
x1:=(-b-sqrt(d))/(2*a);
x2:=(-b+sqrt(d))/(2*a);
writeln('korni ur.:');
writeln ('x1= ',x1:2:2,' x2= ',x2:2:2);
if d<0 then write('kornei net! t.k. disrk otric. d= ',d:2:2);
end; end;
readkey;
end.
вот тут мне нехвататет чтобы выводилось сообщение при вводе символов - "введены не числовые коэфф." и чето
begin
if (a=0) and (b=0) or (a=0) and (c=0) or (b=0) and (c=0) then write('uravnenie reweni9 ne imeet');
end;
не так пашет,при вводе a=0 b=3 c=0 выводиться то сообщение выводиться но и корни выводяться равные 0 0 ,как бы убрать чтобы корни не выводились, аналогично и когда a=0 b=0 c=3
и больше мне ничё ненадо только это
0
13.11.2009, 03:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2009, 03:38
Привет! Вот еще темы с ответами:

Раздача карт при игре в дурака - Turbo Pascal
Всем привет, помогите написать программу раздачи карт при игре в дурака (количество игроков задается с клавиатуры)

Раздача карт при игре в дурака, количество игроков задается с клавиатуры - Turbo Pascal
Здравствуйте помогите чайнику написать программу: раздачи карт при игре в дурака, количество игроков задается с клавиатуры.Заранее спасибо!

Программа раздачи карт при игре в дурака (количество игроков задается с клавиатуры) - Turbo Pascal
помогите написать программу раздачи карт при игре в дурака (количество игроков задается с клавиатуры)

надо сделать защиту от "дурака" - Pascal
Помогите, плиз, есть 2 программы, надо сделать защиту от &quot;дурака&quot; Программа 1: Program SelectionSort; uses crt; const ...


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

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

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