Ошибка "операнды имеют неприводимые типы" в чем ошибка? - Pascal ABC
Формулировка задачи:
- {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('_______________________________________________');
- writeln(' N Товар Магазин Стоимость');
- writeln('_______________________________________________');
- for i := 1 to N do
- with spisok[i] do begin
- writeln(i:3,tovar:15,mag:10,stoim:13);
- end;
- writeln('_______________________________________________');
- 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('_______________________________________________');
- writeln(' N Товар Магазин Стоимость');
- writeln('_______________________________________________');
- 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('_______________________________________________');
- close(f);
- readln;
- end;
- procedure vibor; //***************Поиск по алфавиту**************
- var tv,m:integer;
- ff:boolean;
- begin
- clrscr;
- writeln('Поиск товаров по алфавиту');
- writeln('**************************');
- writeln;
- write('Ввести букву: ');
- readln(tv);
- clrscr;
- writeln('Поиск по алфавиту ',tv );
- writeln('****************************');
- writeln;
- m:=0;ff:=true;
- writeln('_______________________________________________');
- writeln(' N Товар Магазин Стоимость');
- writeln('_______________________________________________');
- 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
- 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.
- Begin
- textbackground (1);
- textcolor (10);
- clrscr;
- for i:=1 to n do with t do begin
- WriteLn('Введите информацию о товаре №',i);
- Write(' Название: '); ReadLn(tovar);
- Write(' Магазин: '); ReadLn(mag);
- Write('Стоимость: '); ReadLn(stoim);
- WriteLn;
- j:=i; while (j>1) and (tovar<spisok[j-1].tovar) do begin
- spisok[j]:=spisok[j-1]; dec(j);
- end;
- spisok[j]:=t;
- end;
- for i:=1 to n do WriteLn('Товар №',i,': ',spisok[i].tovar);
- repeat
- Write('Введите номер товара (0-выход): '); ReadLn(i);
- if (i>=1) and (i<=n) then with spisok[i] do begin
- WriteLn(' Товар: ',tovar);
- WriteLn(' Магазин: ',mag);
- WriteLn('Стоимость: ',stoim);
- end;
- until i=0;
- end.
Решение задачи: «Ошибка "операнды имеют неприводимые типы" в чем ошибка?»
- {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.
Объяснение кода листинга программы
{1) Программа должна содержать меню и ввод-вывод в окна на экране. Необходимо предусмотреть контроль ошибок пользователя при вводе данных. При разработке программы применить технологию нисходящего проектирования. Логически законченные фрагменты оформить в виде подпрограмм, все необходимые данные которым передаются через список параметров. Использования глобальных переменных следует избегать. 2) Описать запись с именем PRICE, содержащую следующие поля: • TOVAR — название товара; • MAG — название магазина, в котором продается товар; • STOIM — стоимость товара в руб. 3) Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив SPISOK, состоящий из восьми элементов типа PRICE; записи должны быть размещены в алфавитном порядке по названиям товаров; • вывод на экран информации о товаре, название которого введено с клавиатуры; • если таких товаров нет, выдать на дисплей соответствующее сообщение.} В данном коде реализованы все указанные требования. 1) Программа содержит меню и ввод-вывод в окна на экране. Введенные данные проверяются на корректность. При разработке программы применена технология нисходящего проектирования. Логически законченные фрагменты оформлены в виде подпрограмм, все необходимые данные которым передаются через список параметров. Глобальные переменные не используются. 2) Запись PRICE содержит три поля: название товара (tovar), название магазина (mag) и стоимость товара в рублях (stoim). 3) Программа выполняет следующие действия:
- Вводит данные в массив SPISOK, состоящий из восьми элементов типа PRICE.
- Размещает записи в алфавитном порядке по названиям товаров.
- Выводит на экран информацию о товаре, название которого введено с клавиатуры.
- Если таких товаров нет, выдает на дисплей соответствующее сообщение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д