Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Описание нового типа переменных в паскале


Автор: ausar 3.8.2007, 08:25
Мне необходимо описать новый тип переменной в Turbo Pascal
состоящей из слова и его длинны. После ввода слова нужно чтобы оно выводилось 
по описанному типу. Но гдето тут ошибка а где никак не могу понять.
Код

type zapis =record |постарался описать тип
slovo: string[20];    
simbols: integer;
end;
var s: string;
begin
writeln('Введите слово');
readln(s);
writeln('Введено слово  ',s,'  состоящее из ',length(s), ' знаков');
writeln('Приобразуем запись по указанному типу String-Lengt');
zapis.slovo:s
zapis.simbols:length(s)
writeln(zapis);
readln(s);
end.

Автор: volvo877 3.8.2007, 10:15
Цитата(ausar @  3.8.2007,  08:25 Найти цитируемый пост)
Но гдето тут ошибка

И даже не одна... Во-первых, нельзя присваивать что-либо типу, а нужно - переменной данного типа, т.е.,
Код

...
var Z: zapis;
...
Z.slovo:=s;
Z.simbols:=length(s);
...

А во-вторых, переменную типа Zapis нельзя распечатать с помощью WriteLn, так как это не стандартный для Паскаля тип. Лучше всего описать процедуру Print. Итого, твоя программа должна выглядеть примерно вот так:

Код

type
  zapis = record
    slovo: string[20];
    simbols: integer;
  end;

procedure print(X: zapis);
begin
  writeln(X.slovo, ' (', X.simbols, ')' );
end;

var
  s: string;
  z: zapis;
begin
  writeln('Введите слово');
  readln(s);
  writeln('Введено слово  ',s,'  состоящее из ',length(s), ' знаков');
  writeln('Приобразуем запись по указанному типу String-Lengt');
  z.slovo:=s;
  z.simbols:=length(s);

  print(z); // <--- 
  readln;

end.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)