Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/64: Рейтинг темы: голосов - 64, средняя оценка - 4.53
 Аватар для unlucky
37 / 37 / 28
Регистрация: 23.11.2009
Сообщений: 103

Определение типа переменной - строковый или целочисленный

04.03.2010, 23:29. Показов 12751. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер! Необходима помощь в проверке числа что это число, и проверки строки что это строка. Помогите плз. нужен только вот этот кусочек кода. Заранее благодарен.
Pascal
1
2
3
4
5
repeat 
writeln('введите число');
read(n)
until  n in  {а как задать такое множество(учитывать и отрицательные)
 я не знаю:( помогите}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.03.2010, 23:29
Ответы с готовыми решениями:

Перевод переменной из вещественного типа в строковый
Задача: по нажатию кнопки вывести на метку и в текстовое поле значение переменной вещественного типа. IntToStr в данном случае не...

Определение типа переменной
#include <iostream> #include <typeinfo> int main() { int t = 10; std::cout << typeid(t).name() << std::endl; if...

Определение типа переменной в функции
Добрый день. Есть простая программка для изучения передачи значений/указателей в функции void prnt(void *pp) { int * p; p =...

13
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
04.03.2010, 23:52
Какой-то странный вопрос... В паскале ты же вроде заранее знаешь с каким типом переменных ты работаешь...

Добавлено через 1 минуту
Или же ты просто хочешь проверить являются ли введенные в строку символы числом?
0
 Аватар для unlucky
37 / 37 / 28
Регистрация: 23.11.2009
Сообщений: 103
05.03.2010, 00:02  [ТС]
Цитата Сообщение от Inadequate Посмотреть сообщение
Или же ты просто хочешь проверить являются ли введенные в строку символы числом?
Именно))
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
05.03.2010, 00:14
А ну тогда просто используй процедуру val

Добавлено через 2 минуты
Вот тебе пример
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
var
  n: real;
  s: string;
  code: integer;
begin
  ReadLn(s);
  Val(s,n,code);
  if code = 0 then
    WriteLn('+')
  else
    WriteLn('-');
  ReadLn
end.
1
 Аватар для unlucky
37 / 37 / 28
Регистрация: 23.11.2009
Сообщений: 103
05.03.2010, 00:46  [ТС]
Впервые сталкиваюсь с таким оператором хмм спасибо огромное))

Добавлено через 7 минут
Появляется беда. Я не могу работать в дальнейшем тогда с case т.к. он требует переменную целочисленного типа((
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
05.03.2010, 01:00
Никакой беды не появляется пиши так
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
var
  n,code: integer;
  s: string;
begin
  ReadLn(s);
  Val(s,n,code);
  if code = 0 then
    WriteLn('+')
  else
    WriteLn('-');
  ReadLn
end.
0
 Аватар для unlucky
37 / 37 / 28
Регистрация: 23.11.2009
Сообщений: 103
05.03.2010, 01:19  [ТС]
Не хочет компилировать, Case не работает со строковыми переменными
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
05.03.2010, 01:47
unlucky, с какими строковыми? Ты о чем? Почитай внимательно хэлп по поводу процедуры Val.

Добавлено через 1 минуту
Вот цитата из встроенного хэлпа:
Цитата Сообщение от Хэлп
Val(s,v,code) процедура s - string, v - integer, real, и code - integer преобразует строку s к числовому представлению и записывает результат в переменную v. Если преобразование возможно, то в переменной code возвращается 0, если невозможно, то в code возвращается ненулевое значение
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
05.03.2010, 06:35
Case не работает со строковыми переменными
Истинно так. А зачем Вам это совмещать?
0
 Аватар для unlucky
37 / 37 / 28
Регистрация: 23.11.2009
Сообщений: 103
10.03.2010, 13:09  [ТС]
В программе идёт меню :
repeat
пункты меню
пункты меню
пункты меню
readln(k);//Номер пункта меню (Вот тут то мне и нужно сделать проверку вводимых данных, если они не целочисленные то повторить ввод)
case k of//тут он не принимает к пишет что не могу скомпилировать, кейс не работает со строковыми
...
...
...
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
10.03.2010, 14:21
Pascal
1
2
3
4
5
6
7
8
9
repeat
пункты меню
пункты меню
пункты меню
 repeat
  readln(k);//Номер пункта меню (Вот тут то мне и нужно сделать проверку вводимых данных, если они не целочисленные то повторить ввод)
 until k in [1..3];//или сколько их там 
case k of//тут он не принимает к пишет что не могу скомпилировать, кейс не работает со строковыми 
...
0
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 26
04.11.2014, 19: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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
function w(n: real): string;
 
function q(n:real):string;
var
e, r, t, D: integer;
y : string;
i, l : byte;
Flag11 : boolean;
begin
D:=1000000;
l:=4;
//выделяем рубли
r:=Trunc(n);
if r<>0 then
repeat
e:=r div D;
Dec(l);
D:=D div 1000;
until
e<>0
else
l:=0;
 
// перевод рублей
for i:=l downto 1 do
begin
Flag11:=False;
// выделение цифры сотен
t:=e div 100;
case t of
1: y:=y+'сто ';
2: y:=y+'двести ';
3: y:=y+'триста ';
4: y:=y+'четыреста ';
5: y:=y+'пятьсот ';
6: y:=y+'шестьсот ';
7: y:=y+'семьсот ';
8: y:=y+'восемьсот ';
9: y:=y+'девятьсот ';
end;
// выделение цифры десятков
t:=(e mod 100) div 10;
case t of
1:
begin
t:=e mod 100;
case t of
10: y:=y+'десять ';
11: y:=y+'одиннадцать ';
12: y:=y+'двенадцать ';
13: y:=y+'тринадцать ';
14: y:=y+'четырнадцать ';
15: y:=y+'пятнадцать ';
16: y:=y+'шестнадцать ';
17: y:=y+'семнадцать ';
18: y:=y+'восемнадцать ';
19: y:=y+'девятнадцать ';
end;
case i of
3: y:=y+'миллионов ';
2: y:=y+'тысяч ';
1: y:=y+'рублей ';
end;
Flag11:=True;
end;
2: y:=y+'двадцать ';
3: y:=y+'тридцать ';
4: y:=y+'сорок ';
5: y:=y+'пятьдесят ';
6: y:=y+'шестьдесят ';
7: y:=y+'семьдесят ';
8: y:=y+'восемьдесят ';
9: y:=y+'девяносто ';
end;
// выделение цифры единиц
t:=e mod 10;
if not Flag11 then
begin
case t of
1:
if i=2 then
y:=y+'одна '
else
y:=y+'один ';
2:
if i=2 then
y:=y+'две '
else
y:=y+'два ';
3: y:=y+'три ';
4: y:=y+'четыре ';
5: y:=y+'пять ';
6: y:=y+'шесть ';
7: y:=y+'семь ';
8: y:=y+'восемь ';
9: y:=y+'девять ';
end;
case i of
3:
case t of
1: y:=y+'миллион ';
2,3,4: y:=y+'миллиона ';
else
y:=y+'миллионов ';
end;
2:
case t of
1 : y:=y+'тысяча ';
2,3,4: y:=y+'тысячи ';
else
if e<>0 then
y:=y+'тысяч ';
end;
1:
case t of
1 : y:=y+'рубль ';
2,3,4: y:=y+'рубля ';
else
y:=y+'рублей ';
end;
end;
end;
if i>1 then
begin
e:=(r mod (D*1000)) div D;
D:=D div 1000;
end;
end;
 
//перевод копеек
e:=Round(Frac(n)*100);
if e=0 then
begin
w:=NumStr+'00 копеек';
Exit;
end;
// выделение цифры десятков
t:=e div 10;
if t=0 then
y:=y+'0'+IntToStr(e)+' '
else
y:=y+IntToStr(e)+' ';
// выделение цифры единиц
t:=e mod 10;
case t of
1:
if e<>11 then
y:=y+'копейка'
else
y:=y+'копеек';
2,3,4:
if (r<5) or (r>14) then
y:=y+'копейки'
else
y:=y+'копеек';
end;
q:=y;
end;
Program2.pas(164) : Встречен конец файла, а ожидалось begin что за ошыбка

Добавлено через 2 минуты
просто скажыте как сделать чтобы программа перестала просить "а ожидалось begin"!
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33402 / 21512 / 8236
Регистрация: 22.10.2011
Сообщений: 36,911
Записей в блоге: 12
04.11.2014, 19:57
По этому огрызку кода ничего не понятно. Приводи программу полностью.
0
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 26
04.11.2014, 21:15
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
function w(n: real): string;
 
 
 
function q(n:real):string;
var
  e, r, t, D: integer;
  y : string;
  i, l : byte;
  Flag11 : boolean;
begin
  D:=1000000;
  l:=4;
  //выделяем рубли
  r:=Trunc(n);
  if r<>0 then
    repeat
                    e:=r div D;
          Dec(l);
                   D:=D div 1000;
    until
      e<>0
  else
    l:=0;
 
  // перевод рублей
  for i:=l downto 1 do
  begin
    Flag11:=False;
    // выделение цифры сотен
    t:=e div 100;
    case t of
      1: y:=y+'сто ';
      2: y:=y+'двести ';
      3: y:=y+'триста ';
      4: y:=y+'четыреста ';
      5: y:=y+'пятьсот ';
      6: y:=y+'шестьсот ';
      7: y:=y+'семьсот ';
      8: y:=y+'восемьсот ';
      9: y:=y+'девятьсот ';
    end;
    // выделение цифры десятков
    t:=(e mod 100) div 10;
    case t of
      1:
      begin
        t:=e mod 100;
        case t of
          10: y:=y+'десять ';
          11: y:=y+'одиннадцать ';
          12: y:=y+'двенадцать ';
          13: y:=y+'тринадцать ';
          14: y:=y+'четырнадцать ';
          15: y:=y+'пятнадцать ';
          16: y:=y+'шестнадцать ';
          17: y:=y+'семнадцать ';
          18: y:=y+'восемнадцать ';
          19: y:=y+'девятнадцать ';
        end;
        case i of
          3: y:=y+'миллионов ';
          2: y:=y+'тысяч ';
          1: y:=y+'рублей ';
        end;
        Flag11:=True;
      end;
      2: y:=y+'двадцать ';
      3: y:=y+'тридцать ';
      4: y:=y+'сорок ';
      5: y:=y+'пятьдесят ';
      6: y:=y+'шестьдесят ';
      7: y:=y+'семьдесят ';
      8: y:=y+'восемьдесят ';
      9: y:=y+'девяносто ';
    end;
    // выделение цифры единиц
    t:=e mod 10;
    if not Flag11 then
    begin
      case t of
        1:
          if i=2 then
            y:=y+'одна '
          else
            y:=y+'один ';
        2:
          if i=2 then
            y:=y+'две '
          else
            y:=y+'два ';
        3: y:=y+'три ';
        4: y:=y+'четыре ';
        5: y:=y+'пять ';
        6: y:=y+'шесть ';
        7: y:=y+'семь ';
        8: y:=y+'восемь ';
        9: y:=y+'девять ';
      end;
      case i of
        3:
          case t of
            1: y:=y+'миллион ';
            2,3,4: y:=y+'миллиона ';
            else
              y:=y+'миллионов ';
          end;
        2:
          case t of
            1 : y:=y+'тысяча ';
            2,3,4: y:=y+'тысячи ';
            else
              if e<>0 then
                y:=y+'тысяч ';
          end;
        1:
          case t of
            1 : y:=y+'рубль ';
            2,3,4: y:=y+'рубля ';
            else
              y:=y+'рублей ';
          end;
      end;
    end;
    if i>1 then
    begin
      e:=(r mod (D*1000)) div D;
      D:=D div 1000;
    end;
  end;
 
  //перевод копеек
  e:=Round(Frac(n)*100);
  if e=0 then
  begin
    w:=NumStr+'00 копеек';
    Exit;
  end;
  
  
  
  
  
  // выделение цифры десятков
  t:=e div 10;
  if t=0 then
    y:=y+'0'+IntToStr(e)+' '
  else
    y:=y+IntToStr(e)+' ';
 // выделение цифры единиц
  t:=e mod 10;
  case t of
    1:
      if e<>11 then
        y:=y+'копейка'
      else
        y:=y+'копеек';
    2,3,4:
      if (r<5) or (r>14) then
        y:=y+'копейки'
      else
        y:=y+'копеек';
  end;
  q:=y;
end;
readln;
end.
Добавлено через 22 секунды
кажется целая

Добавлено через 33 минуты
кто знает как закончить правельно программу
*как сделать так чтобы после каждого чела писалосьрублей в правельной форме (пример: 999 => девятсот девяносто девять рублей)?
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
var st:string;
s,x1:integer;
begin
writeln('Введите количество кошек[1..1000]: ');
readln(s);
st:='';
  if (s>=100) and (s<=999) then
    begin
      x1:=s div 100;
      s:= s mod 100;
        case s of
          1:st:=st+'сто ';
          2:st:=st+'двесте ';
          3:st:=st+'сриста ';
          4:st:=st+'четыриста ';
          5:st:=st+'пятсот ';
          6:st:=st+'шестсот ';
          7:st:=st+'семсот ';
          8:st:=st+'восемсот ';
          9:st:=st+'девятсот ';
        end;
    end;    
  if (s>=10) and (s<=99) then
    begin
      x1:= s div 10; s:=s mod 10;
        case x1 of
          2:st:=st+'дватсять ';
          3:st:=st+'тридцать ';
          4:st:=st+'сорок ';
          5:st:=st+'пятидесят ';
          6:st:=st+'шестьдисят ';
          7:st:=st+'семдисят ';
          8:st:=st+'восмидесят ';
          9:st:=st+'девяносто ';
          1:case s of 
            1:st:=st+'одинадцать ';
            2:st:=st+'двенадцать ';
            3:st:=st+'тринадцать ';
            4:st:=st+'четырнадцать ';
            5:st:=st+'пятнадцать ';
            6:st:=st+'шестнадцать ';
            7:st:=st+'семнадцать ';
            8:st:=st+'восемнадцать ';
            9:st:=st+'девятнадцать ';
           end;
        end;
    end;
  if(s>=1) and (s<=s) and (X1<>1) then
    case s of 
            1:st:=st+'одина ';
            2:st:=st+'две ';
            3:st:=st+'три ';
            4:st:=st+'четыре ';
            5:st:=st+'пять ';
            6:st:=st+'шесть ';
            7:st:=st+'семь ';
            8:st:=st+'восемь ';
            9:st:=st+'девять ';
     end;
 //*****************
    writeln(st);
  end;
 readln;
end.
Добавлено через 37 секунд
в этом случае кошек)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.11.2014, 21:15
Помогаю со студенческими работами здесь

Определение по указателю типа переменной в коде
Доброго дня форумчанский народ:) Подскажите можно ли провернуть такую штуку: Есть несколько функций, возвращающих значения разного типа. ...

Generic, определение типа переменной во время выполнения программы
Итак имеется две переменной: одна переменная хранит тип значения (точнее числовое значение одного из типов в моем enum'e) Для ясности...

Требуется определение типа или пространства имен
Добрый вечер. Знаю, проблема не сложная, но я просто в тупике. Почему не компилируется? Ведь все скобки совпадают using...

Определение типа записи - текст, число или символ
программа которая выводит на экран: 1)если пишу при запуске &quot;Ваня&quot;-программа выдает &quot;это слово&quot; 2)если пишу при запуске...

Приведение переменной типа object к переменной производного типа в приложенном коде
Добрый день! Столкнулся с проблемой. Есть обработчик события. Обработчик события общий для двух издателей, но издатели разного типа(Пусть...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru