0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 12
1

Операция '=' не применима к типам char и real

22.01.2016, 18:42. Показов 9792. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как мне записать код нормально чтобы выполнялось всё по порядку? Мне надо, чтобы при вводе переменной, сразу высчитывалось её значение. Например: напишу n и тогда уже для n вычислялось значение по формуле. Чтобы 1000 раз одно и то же не писать можно соединить всё в одно условие? P.S. простите что где-то туплю или неправильно пишу, только начинаю осваивать.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
  x: char;
  n: real; //количество вещества
  Nm: integer; //количество молекул
  Mo: real; //молярная масса вещества
  m0: real; //масса одной молекулы
  m: real //масса
  Mr: real; //относительная молекулярная масса
begin
  writeln('Что надо найти?');
   read(x);
if x=n then writeln('Введите Количество молекул'); // <<=== Ошибка в этой строке
  readln(Nm);
  n := Nm/NA;
  write('Количество вещества равно' , ' ', n);
end.
ОшибкаОперация '=' не применима к типам char и real
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2016, 18:42
Ответы с готовыми решениями:

Ошибка в программе: Операция '=' не применима к типам real и boolean
Помогите исправить ошибку в 9 строке программы: program storinka40zadacha7; uses crt; var...

Операция '=' не применима к типам boolean и integer
Помогите с ошибкой &quot;Операция '=' не применима к типам boolean и integer&quot; ошибка к строке 16....

Ошибка: Операция '<>' не применима к типам integer и boolean
Уважаемые форумнечане, подскажите как решить данную проблему, программа выдает ошибку &quot;pas1.pas(5)...

Операция 'and' не применима к типу KeyValuePair<real,integer>
Показывает ошибку &quot;Операция 'and' не применима к типу KeyValuePair&lt;real,integer&gt;&quot; VAR X, X1, Y1,...

7
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 12
22.01.2016, 18:45  [ТС] 2
NA - это константа
0
Эксперт Pascal/Delphi
6809 / 4566 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
22.01.2016, 19:07 3
KinimaToAss, вы озвучьте текст задания.
0
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 12
22.01.2016, 19:16  [ТС] 4
Это не задача. Я хочу создать программу для расчёта физ. величин по формулам.
0
Модератор
9735 / 5072 / 3285
Регистрация: 17.08.2012
Сообщений: 15,619
22.01.2016, 20:47 5
x: char, n: real. И как их можно сравнивать? Как полагаете, какой результат будет при 'A' = 3.1415? Правильно, никакой, будет несоответствие типов при компиляции. Кажется мне, что Вы хотели написать
Pascal
15
if x='n' then writeln('Введите Количество молекул');

Не по теме:

И ещё. Фотографии текста запрещены. Конечно, скриншот сделать проще, да вот беда: текста из скриншота не скопировать, приходится врукопашную перепечатывать. И в поиске по форуму текст на скриншоте не найти. Получается, что, сами того не желая, Вы проявляете неуважение к тем, кто желает Вам помочь.



Добавлено через 18 минут

Не по теме:

Картинку заменил на текст.

KinimaToAss, пока что - устное замечание.

Никак не получится сравнивать введённую строку с переменной. Сравнивайте со строкой, изображающей имя переменной. И что-то мне подсказывает, что, если введено 'n', должны выполняться все строки до конца фрагмента, а если введено не 'n', эти строки выполняться не должны. Скобки операторные забыли:
Pascal
1
2
3
4
5
6
7
8
if x='n' then 
  begin
    writeln('Введите Количество молекул');
    readln(Nm);
    n := Nm/NA;
    write('Количество вещества равно' , ' ', n);
  end;
end.
И замените read(x) на readln(x).
1
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 12
22.01.2016, 21:13  [ТС] 6
Спасибо большое за проделанную работу. Впервые на форуме, не знал. Учту на будущее.
Насчёт того, что вы написали: это работает если x и n одного типа? И это работает тольк если написать n? Мне надо просто чтобы я написал любую переменную а он мне вычислил для этой переменной. Если я распишу как вы несколько мини-блоков для каждой переменной, он будет работать по задуманной идее?
0
Модератор
9735 / 5072 / 3285
Регистрация: 17.08.2012
Сообщений: 15,619
22.01.2016, 21:34 7
Это работает, если написать не n, а 'n'. Сравнение идёт не с именем переменной (это невозможно), а с символом, который Вы пожелаете считать именем переменной. Естественно, переменная n и символ x разных типов, и это не работает, но символ 'n' и символ x одного типа, и никакого несоответствия не возникает.

Сразу рекомендация: лучше, если x будет типа string, потому что желаемая строка, изображающая имя переменной, не обязательно должна состоять из одного символа.

Если Вы распишете несколько подобных блоков, работать будет, конечно же. Не забывайте только, что, если нужно выполнить более одного оператора, эти операторы нужно заключать в операторные скобки begin..end (и, кстати, цикл repeat..until тоже является операторными скобками).

Условие лучше делать составным. Например, есть переменные a, bb, ccc, которые надо вычислить. Тогда шаблон этого дела может выглядеть так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var a, bb, ccc: real;
    x: string;
//...
  readln(x);
  if x = 'a'
    then begin
      //...
    end
    else if x = 'bb'
      then begin
        //...
      end
      else if x = 'ccc'
        then begin
          //...
        end
        else writeln('Введено неверное имя');
//...
Если для имени переменной достаточно одного символа, то можно применить оператор выбора:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var a, b, c: real;
    x: char;
//...
  readln(x);
  case x of
    'a': begin
           //...
         end; 
    'b': begin
           //...
         end;
    'c': begin
           //...
         end
         else writeln('Введено неверное имя')
  end;
//...
1
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 12
22.01.2016, 21:45  [ТС] 8
Спасибо большое! Я проанализирую ваши замечания и постараюсь исправиться и сделать правильно.
0
22.01.2016, 21:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2016, 21:45
Помогаю со студенческими работами здесь

Program1.pas(10) : Операция 'mod' не применима к типу real
program Olump_1; var s: integer; n,d: real; begin d:=2; s:=1; n:=289; while n&gt;d do...

Ошибка: операция не применима к операндам этого типа
Гостеприимные жители планеты Земля Кузя, Мила и Пчеленок решили научить лунтика земной игре в...

Операция 'and' не применима к типу real
Это программа находит радиус вписанной окружности в треугольник. Перед этим хочется проверить...

Program1.pas(10) : Операция 'mod' не применима к типу real
Дана блок-схема алгоритма. Какое значение приобретет переменная S после завершения выполнения...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru