|
Netrx 1 / 1 / 1 Регистрация: 13.06.2011 Сообщений: 29 |
||||
|
1 |
||||
Операнды имеют неприводимые типы25.06.2011, 08:48. Показов 11172. Ответов 7 Метки нет (Все метки)
Вот такая проблема, составил программу сокращения дроби через процедуры, вот такую беду выдает в 14 строке… В общем вот
Где я допустил ошибку?
__________________
0 |
|
Holy_Metal 72 / 72 / 60 Регистрация: 14.12.2010 Сообщений: 201 |
||||
|
25.06.2011, 09:29 |
2 |
|||
|
В 14 строке:
0 |
|
1 / 1 / 1 Регистрация: 13.06.2011 Сообщений: 29 |
|
|
25.06.2011, 09:49 [ТС] |
3 |
|
О, спасибо, но теперь возникла другая) в 17 и 18 строках
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 |
|
Такое условие НИКОГДА не выполнится Сделайте так, как выполнится. Я всего лишь исправил ошибку.
0 |
|
murderer 4149 / 1803 / 213 Регистрация: 06.10.2010 Сообщений: 4,033 |
||||
|
25.06.2011, 11:12 |
6 |
|||
0 |
|
Netrx 1 / 1 / 1 Регистрация: 13.06.2011 Сообщений: 29 |
||||||||
|
25.06.2011, 12:26 [ТС] |
7 |
|||||||
|
Дык мне в процедуре надо… Добавлено через 3 минуты
Пишет отсутствует Begin основной программы, без end; требует его с точкой с запятой… Добавлено через 10 минут
0 |
|
Почетный модератор 64272 / 47571 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
|
|
25.06.2011, 12:27 |
8 |
|
Пишет отсутствует 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.

Прочтите прежде чем задавать вопрос!
1. Заголовок темы должен быть информативным. В противном случае тема удаляется …
2. Все тексты программ должны помещаться в теги [code=pas] … [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. «FAQ«, если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение — только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы — на PM!
6. Одна тема — один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
|
|
|
Сообщение |
|
гений чегото
Группа: Пользователи
Репутация: |
пишет ошибку операнды имеют неприводимые типы помогите Прикрепленные файлы ——————— ————- избранный…. но не в Паскале….. |
|
|
|
| мисс_граффити |
Сообщение |
просто человек
Группа: Пользователи
Репутация: |
ругнулось на отсутствие ; if (x<=-p) then y:=a ——————— Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. не отвечаю. Даже «один-единственный раз» в виде исключения! |
|
|
|
| polic |
Сообщение |
гений чегото
Группа: Пользователи
Репутация: |
я короч не тот файл выставил просто этот был первоначально я его изменил забыл сохранить Прикрепленные файлы ——————— ————- избранный…. но не в Паскале….. |
|
|
|
| volvo |
Сообщение |
|
Гость |
Двойное сравнение делать нельзя… Надо объединять 2 одинарных And-ом Кстати, может ты мне все-таки объяснишь, при чем здесь ГРАФИЧЕСКАЯ задача? |
|
|
|
| polic |
Сообщение |
гений чегото
Группа: Пользователи
Репутация: |
я делал типа формулы эти (y:=x-p) по графику и чото я не понимаю то что ты сказал ——————— ————- избранный…. но не в Паскале….. |
|
|
|
| мисс_граффити |
Сообщение |
просто человек
Группа: Пользователи
Репутация: |
if (0)<x<(p) then а надо if (0<x) and (x<p) then зачем ты так странно ставишь скобки? ——————— Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. не отвечаю. Даже «один-единственный раз» в виде исключения! |
|
|
|
| polic |
Сообщение |
гений чегото
Группа: Пользователи
Репутация: |
мисс графити дастиш фантастиш ——————— ————- избранный…. но не в Паскале….. |
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
Связь с администрацией: bu_gen в домене octagram.name
Я имел в виду, что она обладает некоторыми свойствами переменной, а не всеми.
Но не сказал ведь?
А рекурсивные функции в Паскале как задаются? Всегда без взятия ее значения внутри ее тела? (Я просто уже не помню)
Ну вот, можно ли тот же факториал так прописать в Паскале:
function Fakt(n:byte):longint;
begin
if n=o then Fakt(n):=1
else Fakt(n):=Fakt(n-1)*n;
end;
Ты не путай рекурсию и «функция как переменная». При попытке взять значение функции внутри ее тела происходит все тот же ее вызов (а так как он внутри ее тела то и происходит рекурсивный вызов). А присвоить значение самой функции можно только в ее теле. Так что не убедил. Учись излагать свои мысли наиболее понятно для окружающих, чтобы не было двояких смыслов.
Код работает , а можно в двух словах почему нужно приписывать именно :5:4 ?Ну для общего понимания что же я за действие совершаю приписав :5:4 .
Write/WriteLn — это макрос а не функция. Именно поэтому, туда можно запихать неограниченное количество параметров или вызвать вообще без таковых. При выводе вещественных чисел можно их форматировать. В твоем примере, writeln(x:5:4), мы видим, что число Х должно быть отформатировано до 5 символов в длинну (первое число) и при этом содержать 4 знака после запятой (второе число). Второе число можно опустить и тогда необязательные числа после запятой не будут выводиться.
Например, программа:
uses dos,crt;и ее вывод:
var c,y:integer;
x:real;
t:text;
l:string;
begin
randomize; assign(t,'d:workpascalnumbers.txt'); rewrite(t);
writeln(t,'Real numbers formation:');
for c:=0 to 9 do begin
x:=random(100)/33;
Write(t,'Number: "'); Write(t,x); Write(t,'", x:6 result: "');
Write(t,x:6); WriteLn(t,'"');
Write(t,'Number: "'); Write(t,x); Write(t,'", x:4:2 result: "');
Write(t,x:4:2); WriteLn(t,'"');
Write(t,'Number: "'); Write(t,x); Write(t,'", x:8:0 result: "');
Write(t,x:8:0); WriteLn(t,'"');
end;
writeln(t,'Integer numbers formation:');
for c:=0 to 9 do begin
y:=random(20)*10;
Write(t,'Number: "'); Write(t,y); Write(t,'", y:6 result: "');
Write(t,y:6); WriteLn(t,'"');
Write(t,'Number: "'); Write(t,y); Write(t,'", y:4 result: "');
Write(t,y:4); WriteLn(t,'"');
end;
close(t);
end.
Real numbers formation:Так понятно? Замечу, что для целых чисел второе число задавать нельзя, ибо они на то и целые, что у них после запятой нету дробной части. Так же обращу внимание на то, что указание дробной части для реальных чисел является округлением(!), это видно на примере.
Number: " 2.60606060606005E+0000", x:6 result: " 2.6E+0000"
Number: " 2.60606060606005E+0000", x:4:2 result: "2.61"
Number: " 2.60606060606005E+0000", x:8:0 result: " 3"
Number: " 1.54545454545405E+0000", x:6 result: " 1.5E+0000"
Number: " 1.54545454545405E+0000", x:4:2 result: "1.55"
Number: " 1.54545454545405E+0000", x:8:0 result: " 2"
Number: " 2.72727272727207E+0000", x:6 result: " 2.7E+0000"
Number: " 2.72727272727207E+0000", x:4:2 result: "2.73"
Number: " 2.72727272727207E+0000", x:8:0 result: " 3"
Number: " 2.72727272727207E+0000", x:6 result: " 2.7E+0000"
Number: " 2.72727272727207E+0000", x:4:2 result: "2.73"
Number: " 2.72727272727207E+0000", x:8:0 result: " 3"
Number: " 2.93939393939218E+0000", x:6 result: " 2.9E+0000"
Number: " 2.93939393939218E+0000", x:4:2 result: "2.94"
Number: " 2.93939393939218E+0000", x:8:0 result: " 3"
Number: " 7.27272727272975E-0001", x:6 result: " 7.3E-0001"
Number: " 7.27272727272975E-0001", x:4:2 result: "0.73"
Number: " 7.27272727272975E-0001", x:8:0 result: " 1"
Number: " 3.03030303030482E-0001", x:6 result: " 3.0E-0001"
Number: " 3.03030303030482E-0001", x:4:2 result: "0.30"
Number: " 3.03030303030482E-0001", x:8:0 result: " 0"
Number: " 2.30303030303185E+0000", x:6 result: " 2.3E+0000"
Number: " 2.30303030303185E+0000", x:4:2 result: "2.30"
Number: " 2.30303030303185E+0000", x:8:0 result: " 2"
Number: " 2.57575757575614E+0000", x:6 result: " 2.6E+0000"
Number: " 2.57575757575614E+0000", x:4:2 result: "2.58"
Number: " 2.57575757575614E+0000", x:8:0 result: " 3"
Number: " 2.87878787878799E+0000", x:6 result: " 2.9E+0000"
Number: " 2.87878787878799E+0000", x:4:2 result: "2.88"
Number: " 2.87878787878799E+0000", x:8:0 result: " 3"
Integer numbers formation:
Number: "120", y:6 result: " 120"
Number: "120", y:4 result: " 120"
Number: "50", y:6 result: " 50"
Number: "50", y:4 result: " 50"
Number: "190", y:6 result: " 190"
Number: "190", y:4 result: " 190"
Number: "50", y:6 result: " 50"
Number: "50", y:4 result: " 50"
Number: "100", y:6 result: " 100"
Number: "100", y:4 result: " 100"
Number: "120", y:6 result: " 120"
Number: "120", y:4 result: " 120"
Number: "40", y:6 result: " 40"
Number: "40", y:4 result: " 40"
Number: "160", y:6 result: " 160"
Number: "160", y:4 result: " 160"
Number: "20", y:6 result: " 20"
Number: "20", y:4 result: " 20"
Number: "150", y:6 result: " 150"
Number: "150", y:4 result: " 150"


20.12.2006 0:37

-1 





