Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2014, 16:07   #1
adrenalin142
Пользователь
 
Регистрация: 26.04.2014
Сообщений: 20
По умолчанию Проблема с функциями(Pascal)

Люди вот такая задачка:

Спроектировать и реализовать на Паскале программу, которая в
режиме диалога опрашивает пользователя о продолжении работы и, в
случае подтверждения выполняет следующие действия:
- вводит данные в поля переменной типа "запись" с клавиатуры
терминала;
- выводит данные из полей переменной типа "запись" на уст-
ройство отображения.
Разработать программы для следующих вариантов записей:

- type figure = (rectangle, triangle, circle);
r = record
x,y : real;
case kind : figure of
rectangle : (hight, weight : real);
triangle : (size1, size2, angle : real);
circle : (radius : real);
end


Худо-бедно написал програмку:

Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Windows;

type figure = (rectangle, triangle, circle);
     r = record
         x,y : real;
         case kind : figure of
         rectangle : (height, width : real);
         triangle  : (size1, size2, angle : real);
         circle    : (radius : real);
         end;
procedure Readr(var x:r);
var k:integer;
begin
  repeat
    writeln('Enter figure');
    Writeln('0-rectangle');
    Writeln('1-triangle');
    Writeln('2-circle');
    write('Figure:');
    readln(k);
  until k in [0..2];
  with x do
  begin
    kind:=figure(k);
    if kind=rectangle then
      begin
        Writeln('rectangle');
        write('x=');
        readln(x);
        write('y=');
        readln(y);
        write('h=');
        readln(height);
        write('w=');
        readln(width);
      end
    else if kind=triangle then
   begin
     Writeln('triangle');
     write('x=');
     readln(x);
     write('y=');
     readln(y);
     write('size1=');
     readln(size1);
     write('size2=');
     readln(size2);
     repeat
       write('angle(0..180)=');
       readln(angle)
     until(angle>0)and(angle<180)
   end
  else
   begin
     Writeln('circle');
     write('x=');
     readln(x);
     write('y=');
     readln(y);
     write('radius=');
     readln(radius);
   end
 end;
end;
procedure Writer(x:r);
begin
with x do
 begin
  if kind=rectangle then
   begin
     Writeln('rectangle');
     writeln('x=',x:0:2);
     Writeln('y=',y:0:2);
     writeln('h=',height:0:2);
     writeln('w=',width:0:2);
   end
  else if kind=triangle then
   begin
     Writeln('triangle');
     writeln('x=',x:0:2);
     Writeln('y=',y:0:2);
     writeln('size1=',size1:0:2);
     Writeln('size2=',size2:0:2);
     writeln('angle=',angle:0:2)
   end
  else
   begin
     Writeln('circle');
     writeln('x=',x:0:2);
     Writeln('y=',y:0:2);
     writeln('radius=',radius:0:2);
   end
 end;
end;


var a:r;
    c:char;
begin
  repeat
    Readr(a);
    Writeln;
    WriteR(a);
    writeln('continue - (Enter/n): ');
    readln(c);
  until c <>#13 ;
  readln;

end.
Но, вот в чем проблемка, в процедуре Readr нужно сделать так, чтобы подсказка какая цифра какой фигуре соответствует писалась не "в ручную", а определялась самой процедурой. Прошу вашей помощи, форумчане как решить эту проблему, или может наведите на мысль.
adrenalin142 вне форума Ответить с цитированием
Старый 06.10.2014, 16:25   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Код:
type figure = (rectangle, triangle, circle);
{ как тебе такой массивчик? }
const FigNames: array[figure] of string = ('Прямаугольнег', 'Триугольнег', 'Акружнасть');
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 06.10.2014, 19:23   #3
adrenalin142
Пользователь
 
Регистрация: 26.04.2014
Сообщений: 20
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Код:
type figure = (rectangle, triangle, circle);
{ как тебе такой массивчик? }
const FigNames: array[figure] of string = ('Прямаугольнег', 'Триугольнег', 'Акружнасть');
Уважаемый, вы похоже не внимательно прочли суть моей проблемы, т.к. мне требуется изменить саму процедуру Readr, и массив тут совершенно не нужен.
adrenalin142 вне форума Ответить с цитированием
Старый 06.10.2014, 19:32   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Уважаемый, вы похоже не внимательно прочли суть моей проблемы
А ты похоже даже не попытался вникнуть с суть ответа.
Поясню:
Код:
const FigNames: array[0..2] of string = ('Прямаугольнег', 'Триугольнег', 'Акружнасть');
Тебе предлагается пронумеровать кодами фигуры используя массив.
Тогда:
Код:
for i:=Low(FigNames) to High(FigNames) do
  writeln(i:5,FigNames[i]:20);
Выведет тебе и код фигуры и наименование.

min@y™, я автору попытался в цифрах изобразить твою идею чтоб ему было понятнее...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.10.2014, 19:47   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
min@y™, я автору попытался в цифрах изобразить твою идею чтоб ему было понятнее...
я понял, спасибо, братан, а то я домой пришёл и в одеяло завернулся, заболел чото, знобило. щас получше стало, вроде - полез в интернеты прям под одеялом.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с функциями PinkPink Qt и кроссплатформенное программирование С/С++ 1 29.03.2012 00:01
задача с функциями (Pascal) Вероника_94 Помощь студентам 1 20.02.2012 09:19
Си проблема с функциями( blain Помощь студентам 6 02.02.2012 14:44
Работа с функциями Pascal Harrr Помощь студентам 1 17.05.2010 22:26
проблема с функциями world12_tk Помощь студентам 6 03.03.2009 19:34