IPB
ЛогинПароль:

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

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

 
 Ответить  Открыть новую тему 
> комбинированные типы. операторы присоединения.
сообщение
Сообщение #1


самовнушение всегда спасает.
*

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

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


помогите пожалуйста из неработающей программы, работающую сделать..

program errors;
type поле = (а,b);
запись = record a:integer; b:char end;
var х,у:запись; c:char;
function f (var r:запись):запись;
var р:поле;
begin for p := a to b do f.p := succ(z.p) end;
begin read©;
with x do begin a := ord©; b := c end;
y := x; if x = у then y := f(x);
with у do writeln(a,x)
end.



--------------------
думай дважды, чтоб не пожалеть однажды.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(ducky @ 4.12.2010 22:34) *
помогите пожалуйста из неработающей программы, работающую сделать..
И.. как она должна работать? если не секрет, конечно.

Самое простое - заменить ее на работающий пример из учебника. Например, вывод "Hello, World!". Она гарантированно будет работать, зуб даю.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


самовнушение всегда спасает.
*

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

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


да вроде бы просто запускаться должна))


--------------------
думай дважды, чтоб не пожалеть однажды.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(ducky @ 5.12.2010 12:09) *
да вроде бы просто запускаться должна))
А какой у тебя компилятор?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


самовнушение всегда спасает.
*

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

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


Паскаль у меня. компилятор же там есть..


--------------------
думай дважды, чтоб не пожалеть однажды.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

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

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


А слова поле,записть и тд,это ваш перевод или они в самой программе?
И вопрос. y := x; if x = у then y := f(x);
Вам не кажется,что это будет выполняться всегда?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(ducky @ 5.12.2010 13:27) *
Паскаль у меня. компилятор же там есть..

н-даа..
Какой у тебя Паскаль?

Turbo Pscal?
Pascal-ABC?
FreePascal (FPC)?
...

Ответь, пожалуйста..

Смысл вот, в чем. Я знаю точно, что ни Turbo, ни FPC не признают русских идентификаторов. Но про ABC я точно не знаю. Потому и спросил.
И в любом случае я ОЧЕНЬ не рекомендую тебе использовать русские буквы в названиях переменных (даже если твой какой-нить неизветсный мне зверь типа Паскаль-ЭЮЯ это и позволяет).
Короче, переделай все на английские буквы, тогда будем говорить по делу.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата
Я знаю точно, что ни Turbo, ни FPC не признают русских идентификаторов. Но про ABC я точно не знаю.
Из всех компиляторов Паскаля только Глагол (хотя это не совсем Паскаль, так, просто синтаксис похож) и Component Pascal поддерживают идентификаторы на кириллице.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


самовнушение всегда спасает.
*

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

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


Паскаль Турбо.

русские буквы в условии были..сейчас переделаю)


--------------------
думай дважды, чтоб не пожалеть однажды.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


самовнушение всегда спасает.
*

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

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


вот..наконец-то код нормально набрала..
даже переделала немного.

program errors (input,output);
type pole=(ar,br);
zapis=record
a:integer;
b:char;
end;

var x,y:zapis; c:char;
function f(var z:zapis):real;
var p:pole;

begin
for p:=ar to br do f:=succ(z.a);
end;

begin
read ©;
with x do begin a:=ord(4); b:=c;
end;


if x:=y then y:=f(x);
with y do writeln (a,x.a);
end.


но вот в этом рядочке - "if x:=y then y:=f(x);" жалуется Паскаль. sad.gif


--------------------
думай дважды, чтоб не пожалеть однажды.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






if x=y then y:=f(x);
Первый оператор - сравнение, второй - присваивание, не надо их путать smile.gif "Если X равно Y, то Y присвоить что_то"

Заметь, в первом посте было записано правильно.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


самовнушение всегда спасает.
*

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

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


поменяла как в первом посте..все-равно не хочет.
выдает Error 41..


--------------------
думай дважды, чтоб не пожалеть однажды.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Цитата
выдает Error 41.
А вот это уже серьезнее... Дело в том, что операция сравнения (в Турбо Паскале по крайней мере) допустима только между простыми типами. Запись - это тип сложный, нельзя сравнивать записи между собой таким образом (через оператор "="). В более продвинутых компиляторах возможно переопределить оператор сравнения, тогда можно будет добиться работоспособности программы.

Единственный способ сравнить записи в Турбо Паскале - это сравнить их по каждому полю отдельно. К тому же, ты неправильно написала: функция в первом посте возвращает тип "запись", в 10-м посте у тебя она возвращает вещественное число. Тут - тоже засада: не может в Турбо-Паскале функция возвращать значение сложного типа. То есть, с использованием Турбо-Паскаля невозможно заставить приведенную выше (в самом начале треда) программу компилироваться. Только путем значительной переделки этого удастся достичь...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


самовнушение всегда спасает.
*

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

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


вообщем рабочую из нее сделать почти нереально? sad.gif


--------------------
думай дважды, чтоб не пожалеть однажды.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






Вот это:
Цитата
type поле = (а,b);
{ ... }
for p := a to b do f.p := succ(z.p)
- нереально (в таком виде, когда типы полей разные). Нельзя подставлять в цикле названия полей записи, и работать с ними. Можно заменить на
f.a := succ(f.a); f.b := succ(f.b)
Я ж говорю - почти полная переделка:

program errors (input,output);
type
zapis =
record
a: integer;
b: char;
end;
var
x, y: zapis; c: char;

function equal(left, right: zapis): boolean;
begin
equal := (left.a = right.a) and (left.b = right.b);
end;

procedure f(var z:zapis; var res: zapis);
begin
res.a := succ(z.a);
res.b := succ(z.b);
end;

begin
read ©;
with x do
begin
a:=ord(4); b:=c;
end;
y := x; if equal(x, y) then f(x, y);
with y do
writeln (a, ' ', x.a, ' ', x.b);
end.



Ты лучше расскажи, откуда этот бредовый код откопала? Смысл его в чем? Просто поизвращаться с записями?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


самовнушение всегда спасает.
*

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

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


спасибо Вам большое - пребольшое.
в книжке был записан и задания состояло в том, чтобы найти ошибки..


--------------------
думай дважды, чтоб не пожалеть однажды.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 24.01.2021 16:28
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name