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

Вылетает программа при вводе любого слова

02.09.2019, 10:41. Показов 814. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написал вот калькулятор. Вылетает при вводе любого слова, пусть даже символа, при введении операции. Ни про какие ошибки не говорит.
Фиг знает вроде все норм должно быть.


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
uses crt;
 
var a,b,itogo: integer;
s: string;
 
begin
writeln('Введите 2 числа.');
read(a);
read(b);
writeln('Чтобы сложить введите "сложить".');
writeln('Чтобы отнять введите "отнять".');
writeln('Чтобы умножить введите "умножить".');
writeln('Чтобы разделить введите "разделить".');
read(s); // на этой операции вылет, пробовал с readln тоже вылет
 
if s = 'сложить' then begin
itogo:=a+b;
write(itogo);
end
 
else
if s = 'отнять' then begin
itogo:=a-b;
write(itogo);
end
else
if s = 'умножить' then begin
itogo:=a*b;
write(itogo);
end
else
if s = 'разделить' then begin
itogo:=a div b;
write(itogo);
end
else
write('Неправильная операция.');
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.09.2019, 10:41
Ответы с готовыми решениями:

Функция (при вводе любого слова с цифрами программа определила бы цифры)
Всем салам! Помогите написать программу с функцией чтобы при вводе любого слова с цифрами...

При вводе любого числа программа возвращает false
program top4; uses crt; var a,b,y:integer; begin writeln('v vedite chislo '='a'); readln(a);...

При вводе букв программа вылетает
Всем привет. Помогите пожалуйста исправить программу. Нужно сделать чтобы при выборе действия...

Вылетает программа при вводе чисел
Вообщем, в программе реализуется метод Лобачевского.. Она нормально запускается, но когда вводишь...

9
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
02.09.2019, 10:46 2
Замените везде read на readln.
1
2351 / 1454 / 526
Регистрация: 07.04.2017
Сообщений: 4,787
02.09.2019, 10:59 3
После read для числа - в потоке ввода остаётся знак Enter-а, который попадает в следующий read строки.
А ошибки нет потому что уберите нафиг CRT и запускайте в связке с оболочкой (обычным F9). Использование CRT имело смысл десятки лет назад. А сейчас это просто мусор, потому что есть класс System.Console.
1
123
36 / 0 / 1
Регистрация: 18.03.2015
Сообщений: 190
02.09.2019, 11:42  [ТС] 4
Sun Serega, спасибо. а как работать с этим классом? и какой модуль использовать вместо crt?
0
3050 / 1668 / 657
Регистрация: 19.03.2019
Сообщений: 5,370
02.09.2019, 14:34 5
Цитата Сообщение от Андрей1926 Посмотреть сообщение
и какой модуль использовать вместо crt?
ты же в коде ничего из CRT не используешь, поэтому вместо него никакой другой модуль тебе не нужен.
0
5084 / 2655 / 2350
Регистрация: 10.12.2014
Сообщений: 10,047
02.09.2019, 16:55 6
Андрей1926, учите матчасть:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
begin
  var(a,b):=ReadLnInteger2('Введите 2 числа:');
  WriteLn('Чтобы сложить введите "сложить".');
  WriteLn('Чтобы отнять введите "отнять".');
  WriteLn('Чтобы умножить введите "умножить".');
  WriteLn('Чтобы разделить введите "разделить".');
  var s:=ReadLnString('Вводите:');
  case s of
    'сложить'  : $'{a}+{b}={a+b}'.Println;
    'отнять'   : $'{a}-{b}={a-b}'.Println;
    'умножить' : $'{a}*{b}={a*b}'.Println;
    'разделить': $'{a}:{b}={a/b}'.Println;
  else
    WriteLn('Неправильная операция.');
  end;
end.
1
2351 / 1454 / 526
Регистрация: 07.04.2017
Сообщений: 4,787
02.09.2019, 19:05 7
Цитата Сообщение от Андрей1926 Посмотреть сообщение
и какой модуль использовать вместо crt?
Не модуль а как раз этот класс. Напишите в коде System.Console и поставьте точку - вам само покажет все свойства и методы, а так же их описания.
0
1 / 1 / 0
Регистрация: 27.08.2019
Сообщений: 16
05.09.2019, 17:57 8
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var a,b,itogo: integer;
s: string;
begin
Writeln('Введите два числа:');
Readln(a, b);
Writeln('Введите слово "сложить", "вычесть", "умножить" или "разделить"');
Readln(s);
case s of
  'сложить' : Writeln(a+b);
  'вычесть' : Writeln(a-b);
  'умножить' : Writeln(a*b);
  'разделить' : Writeln(a/b);
end;
end.
0
257 / 149 / 70
Регистрация: 29.07.2018
Сообщений: 1,246
05.09.2019, 18:59 9
Artorias05, зачем вам переменная "itogo" если вы его все равно не используете?
и глобальные переменные вам не нужны,перенесите их в секцию begin-end.
0
1 / 1 / 0
Регистрация: 27.08.2019
Сообщений: 16
06.09.2019, 10:55 10
Пс, да, вы правы, это моя ошибка, я одталкивался от исходного кода, но в итоге эта переменная не пригодилась, а я её забыл убрать.
0
06.09.2019, 10:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.09.2019, 10:55
Помогаю со студенческими работами здесь

Программа вылетает при вводе значений
вроде прохожу си второй год и проги писал гораздо сложней, а тут реально туплю... ...

Вылетает программа при вводе boolean через scanf
Вылетает программа при вводе boolean через scanf #include <bits/stdc++.h> #include<windows.h> ...

Программа вылетает при вводе в поле некорректных символов
Грубо говоря, программа состоит из трех текст боксов в которые вводятся числа и кнопки которая...

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


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

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