Ошибка операнды имеют неприводимые типы паскаль

Netrx

1 / 1 / 1

Регистрация: 13.06.2011

Сообщений: 29

1

Операнды имеют неприводимые типы

25.06.2011, 08:48. Показов 11504. Ответов 7

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Вот такая проблема, составил программу сокращения дроби через процедуры, вот такую беду выдает в 14 строке…

В общем вот

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
uses crt;
procedure Sokr(var a,b:integer);
var
min:integer;
begin
writeln('Введите числитель');
readln(a);
writeln('Введите знаменатель');
readln(b);
if a>b then min:=b
else
min:=a;
repeat
if (a div min)=0 and (b div min)=0
then
begin
a:=a/min;
b:=b/min;
end;
else
min:=min-1;
until min=1;
Sokr(a,b);
end.

Где я допустил ошибку?



0



Holy_Metal

72 / 72 / 60

Регистрация: 14.12.2010

Сообщений: 201

25.06.2011, 09:29

2

В 14 строке:

Pascal
1
if (a div min = 0) and (b div min = 0)



0



1 / 1 / 1

Регистрация: 13.06.2011

Сообщений: 29

25.06.2011, 09:49

 [ТС]

3

О, спасибо, но теперь возникла другая)

в 17 и 18 строках
Попытка присвоить интеджеру реал, но когда я меняю все на реал, в строчке 14, мне пишет что див не применим к реал



0



4149 / 1803 / 213

Регистрация: 06.10.2010

Сообщений: 4,033

25.06.2011, 09:54

4

if (a div min = 0) and (b div min = 0)

Такое условие НИКОГДА не выполнится



0



72 / 72 / 60

Регистрация: 14.12.2010

Сообщений: 201

25.06.2011, 09:55

5

Цитата
Сообщение от murderer
Посмотреть сообщение

Такое условие НИКОГДА не выполнится

Сделайте так, как выполнится. Я всего лишь исправил ошибку.



0



murderer

4149 / 1803 / 213

Регистрация: 06.10.2010

Сообщений: 4,033

25.06.2011, 11:12

6

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
  a,b,min:integer;
begin
  writeln('Введите числитель');
  readln(a);
  writeln('Введите знаменатель');
  readln(b);
  min:=a;
  if a>b then
    min:=b;
  for min:=min downto 1 do
    if (a mod min)or(b mod min)=0 then
      break;
  writeln('числитель = ',a div min,'; знаменатель = ',b div min);
  readln;
end.



0



Netrx

1 / 1 / 1

Регистрация: 13.06.2011

Сообщений: 29

25.06.2011, 12:26

 [ТС]

7

Дык мне в процедуре надо…

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

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
uses crt;
procedure Sokr(var a,b:integer);
var
  min:integer;
begin
  writeln('Ââåäèòå ÷èñëèòåëü');
  readln(a);
  writeln('Ââåäèòå çíàìåíàòåëü');
  readln(b);
  min:=a;
  if a>b then
    min:=b;
  for min:=min downto 1 do
    if (a mod min)or(b mod min)=0 then
      break;
      Sokr (a,b);
      end;
      end.

Пишет отсутствует Begin основной программы, без end; требует его с точкой с запятой…

Добавлено через 10 минут
Все, сделал, выглядит так

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
uses crt;
 var
  a1,b1,min1:integer;
procedure Sokr(var a,b, min:integer);
begin
  writeln('Ââåäèòå ÷èñëèòåëü');
  readln(a);
  writeln('Ââåäèòå çíàìåíàòåëü');
  readln(b);
  min:=a;
if a>b then
    min:=b;
for min:=min downto 1 do
if (a mod min)or(b mod min)=0 then
break;
writeln ('×è÷èëòåëü ðàâåí: ',a div min);
writeln ('Çíàìåíàòåëü ðàâåí: ',b div min);
end;
begin
Sokr (a1,b1,min1);
end.



0



Почетный модератор

64289 / 47588 / 32739

Регистрация: 18.05.2008

Сообщений: 115,181

25.06.2011, 12:27

8

Цитата
Сообщение от Netrx
Посмотреть сообщение

Пишет отсутствует Begin основной программы,

Естественно. Это же только процедура, а программы нет…



0



{1) Программа должна содержать меню и ввод-вывод в окна на экране.
Необходимо предусмотреть контроль ошибок пользователя при вводе данных.
При разработке программы применить технологию нисходящего проектирования.
Логически законченные фрагменты оформить в виде подпрограмм, все необходимые данные которым передаются через список параметров.
Использования глобальных переменных следует избегать.
2) Описать запись с именем PRICE, содержащую следующие поля:
• TOVAR — название товара;
• MAG — название магазина, в котором продается товар;
• STOIM — стоимость товара в руб.
3) Написать программу, выполняющую следующие действия:
• ввод с клавиатуры данных в массив SPISOK, состоящий из восьми элементов типа PRICE;
записи должны быть размещены в алфавитном порядке по названиям товаров;
• вывод на экран информации о товаре, название которого введено с клавиатуры;
• если таких товаров нет, выдать на дисплей соответствующее сообщение.}
program ekzamen;
 
uses
  crt;
 
const
  n = 2;
 
type
  Price = record
    tovar: string[20];
    mag: string[12];
    stoim: string[10];
  end;
 
var
  f: file of Price;
  w: price;
  spisok: array [1..n] of Price;
  t: Price;
  i, j, k: integer;
  nfile: string;
 
procedure sozd;{*******создание********}
begin
  clrscr;
  writeln('СОЗДАНИЕ МАССИВА  ЗАПИСЕЙ ТОВАРОВ');
  writeln('******************************');
  for i := 1 to n do   
  begin
    writeln('Ввести ', i, ' - ю запись');
    with spisok[i] do 
    begin
      write('Введите название Товара:  ');
      readln(tovar);
      write('Введите название магазина, в котором продается товар:  ');
      readln(mag);
      write('Стоимость товара в тенге:  ');
      readln(stoim);
    end;
  end;
  writeln('Ввод данных закончен');
         // *****сортировка по алфавиту***********
  for i := 1 to N - 1 do
    for j := i + 1 to n do
      if spisok[i].tovar > spisok[j].tovar then begin
        w := spisok[i]; spisok[i] := spisok[j]; spisok[j] := w;
      end;
  readln;
end;
 
procedure prosm;// *****просмотр записей***********
begin
  clrscr;
  writeln('ЧТЕНИЕ  МАССИВА  ЗАПИСЕЙ');
  writeln('**************************');
  writeln;
  writeln('<br>');
  writeln('  N   Товар       Магазин    Стоимость');
  writeln('<br>');
  for i := 1 to N do
    with spisok[i] do 
    begin
      writeln(i:3, tovar:15, mag:10, stoim:13);
    end;
  writeln('<br>');
  writeln('Конец просмотра');
  readln;
end;
 
procedure zapis;//*****Запись в файл'***********
begin
  clrscr;
  writeln('ЗАПИСЬ МАССИВА В ФАЙЛ');
  writeln('**********************');
  writeln;
  write(' ввести имя файла (например spisok.dat): ');
  readln( nfile);
  assign(f, nfile);
  rewrite(f);
  clrscr;
  writeln('ЗАПИСЬ МАССИВА В ФАЙЛ');
  writeln('**********************');
  writeln;
  for i := 1 to N do
    write(f, spisok[i]);
  writeln(' Запись в файл закончена');
  close(f);
  writeln('Содержимое файла');
  writeln('*****************');
  writeln('<br>');
  writeln('  N   Товар       Магазин    Стоимость');
  writeln('<br>');
  reset(f);
  i := 0;
  while not eof(f) do 
  begin
    read(f, w);
    inc(i);
    with w do
      writeln(i:3, w.tovar:15, w.mag:10, w.stoim:13);
  end;
  writeln('<br>');
  close(f);
  readln;
end;
 
procedure vibor;//***************Поиск по алфавиту**************
var
  m: integer; tv: string;
  ff: boolean;
begin
  clrscr;
  writeln('Поиск товаров по алфавиту');
  writeln('**************************');
  writeln;
  write('Ввести букву: ');
  readln(tv);
  clrscr;
  writeln('Поиск по алфавиту ', tv );
  writeln('****************************');
  writeln;
  m := 0;ff := true;
  writeln('<br>');
  writeln('  N   Товар       Магазин    Стоимость');
  writeln('<br>');
  for i := 1 to N do
    with spisok[i] do
      if tovar = tv then begin
        m := m + 1;
        ff := false;
        writeln(i:3, tovar:15, mag:10, stoim:13);
      end;
  if ff then begin writeln('Такой записи нет');readln; end;
  writeln('Поиск товаров закончен');
  readln;
end;
 
begin
  textbackground(1);
  textcolor(10);
  clrscr;
  repeat
    clrscr;
    Writeln('--------------ПОЛЬЗОВАТЕЛЬСКОЕ МЕНЮ------'  );
    writeln('-----------------------------------------');
    writeln('1. Создание массива записей с сортировкой');
    writeln('2. Просмотр массива записей');
    writeln('3. Выбор по алфавиту');
    writeln('4. Запись массива в файл');
    writeln('5. Выход');
    writeln('-----------------------------------------');
    write('Ваш выбор ');
    readln(k);
    case k of
      1: sozd;
      2: prosm;
      3: vibor;
      4: zapis;
      5: ;{выход}
    else begin
        writeln('нет такого пункта');
        readln;
      end;
    end;        // case
  until k = 5;
  writeln('Конец программы');
  readln;
end.

Выдаёт ошибку: операнды имеют неприводимые типы. Где я ошиблась? (Программа написана на языке Pascal ABC)

Program Home;

Uses CRT;

Var a: integer;

b: real;

Begin

WriteLn (‘Введите еденицу измереня: килограмм, миллиграмм, грамм, тонна, центнер’);

ReadLn (a);

WriteLn (‘Введите число, которое нужно перевести в килограммы’);

ReadLn (b);

If (a = ‘килограмм’) then

WriteLn (b);

If (a = ‘миллиграмм’) then begin

b : = b / 1000000;

WriteLn (b);

end;

If (a = ‘грамм’) then begin

b: = b / 1000;

WriteLn (b)

end;

If (a = ‘тонна’) then begin

b: = b * 1000;

WriteLn (b);

end;

If (a = ‘центнер’) then begin

b: = b * 100;

WriteLn (b);

end;

End.

Найди верный ответ на вопрос ✅ «Выдаёт ошибку: операнды имеют неприводимые типы. Где я ошиблась? (Программа написана на языке Pascal ABC) Program Home; Uses CRT; Var a: …» по предмету 📙 Информатика, а если ответа нет или никто не дал верного ответа, то воспользуйся поиском и попробуй найти ответ среди похожих вопросов.

Искать другие ответы

Главная » Информатика » Выдаёт ошибку: операнды имеют неприводимые типы. Где я ошиблась? (Программа написана на языке Pascal ABC) Program Home; Uses CRT; Var a: integer; b: real; Begin WriteLn (‘Введите еденицу измереня: килограмм, миллиграмм, грамм, тонна, центнер’);

IPB

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется …
2. Все тексты программ должны помещаться в теги [code=pas][/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. «FAQ«, если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение — только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы — на PM!
6. Одна тема — один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> формализация и алгоритмизация графической задачи, ОШИБКА!

сообщение 20.12.2006 0:37

Сообщение
#1


гений чегото
**

Группа: Пользователи
Сообщений: 108
Пол: Мужской

Репутация: -  -1  +



пишет ошибку операнды имеют неприводимые типы помогите wink.gif

Прикрепленные файлы
Прикрепленный файл
 Program4.pas ( 174 байт )
Кол-во скачиваний: 255

———————

————-

избранный…. но не в Паскале…..

 Оффлайн  Профиль  PM 

 К началу страницы 

+ Ответить 

мисс_граффити

сообщение 20.12.2006 0:54

Сообщение
#2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +



ругнулось на отсутствие ;
доставила — все работает
возможно, дело в компиляторе…
поставь скобочки по-другому.
типа так:

if  (x<=-p) then y:=a

———————

Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке

не отвечаю.

Даже «один-единственный раз» в виде исключения!

 Оффлайн  Профиль  PM 

 К началу страницы 

+ Ответить 

polic

сообщение 20.12.2006 0:59

Сообщение
#3


гений чегото
**

Группа: Пользователи
Сообщений: 108
Пол: Мужской

Репутация: -  -1  +



я короч не тот файл выставил просто этот был первоначально я его изменил забыл сохранить mega_chok.gif
ща попробую этот исправить

Прикрепленные файлы
Прикрепленный файл
 Program4.pas ( 206 байт )
Кол-во скачиваний: 290

———————

————-

избранный…. но не в Паскале…..

 Оффлайн  Профиль  PM 

 К началу страницы 

+ Ответить 

volvo

сообщение 20.12.2006 1:04

Сообщение
#4

Гость



Двойное сравнение делать нельзя… Надо объединять 2 одинарных And-ом

Кстати, может ты мне все-таки объяснишь, при чем здесь ГРАФИЧЕСКАЯ задача?

 К началу страницы 

+ Ответить 

polic

сообщение 20.12.2006 1:07

Сообщение
#5


гений чегото
**

Группа: Пользователи
Сообщений: 108
Пол: Мужской

Репутация: -  -1  +



я делал типа формулы эти (y:=x-p) по графику и чото я не понимаю то что ты сказал blink.gif Надо объединять 2 одинарных And-ом это как мож показать?

———————

————-

избранный…. но не в Паскале…..

 Оффлайн  Профиль  PM 

 К началу страницы 

+ Ответить 

мисс_граффити

сообщение 20.12.2006 1:35

Сообщение
#6


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +



if (0)<x<(p) then

а надо

if (0<x) and (x<p) then

зачем ты так странно ставишь скобки?

———————

Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке

не отвечаю.

Даже «один-единственный раз» в виде исключения!

 Оффлайн  Профиль  PM 

 К началу страницы 

+ Ответить 

polic

сообщение 20.12.2006 21:31

Сообщение
#7


гений чегото
**

Группа: Пользователи
Сообщений: 108
Пол: Мужской

Репутация: -  -1  +



мисс графити дастиш фантастиш give_rose.gif

———————

————-

избранный…. но не в Паскале…..

 Оффлайн  Профиль  PM 

 К началу страницы 

+ Ответить 

1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)

Пользователей: 0

500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают

Связь с администрацией: bu_gen в домене octagram.name

Выдаёт ошибку:операнды имеют неприводимые типы.Где я ошиблась?(Программа написана на языке Pascal ABC)

Program Home;

Uses CRT;

Var a: integer;

b: real;

Begin

WriteLn (‘Введите еденицу измереня: килограмм, миллиграмм, грамм, тонна, центнер’);

ReadLn (a);

WriteLn (‘Введите число, которое нужно перевести в килограммы’);

ReadLn (b);

If (a = ‘килограмм’) then

WriteLn (b);

If (a = ‘миллиграмм’) then begin

b := b / 1000000;

WriteLn (b);

end;

If (a = ‘грамм’) then begin

b:= b / 1000;

WriteLn (b)

end;

If (a = ‘тонна’) then begin

b:= b * 1000;

WriteLn (b);

end;

If (a = ‘центнер’) then begin

b:= b * 100;

WriteLn (b);

end;

End.

На этот вопрос еще никто не ответил. Напишите свой ответ или воспользуйтесь поиском:

  • Ошибка опера не удается получить доступ к сайту
  • Ошибка опенгл 1282 майнкрафт
  • Ошибка опен ал 32 длл на виндовс 10
  • Ошибка опель мерива р0420
  • Ошибка опель мерива р0110