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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2012, 21:33   #1
aleko05
Пользователь
 
Регистрация: 25.09.2012
Сообщений: 11
По умолчанию Объясните часть программы

Задали написать программу для возведения х в степень у и проверить её в двоичной системе
т.к сам пока не очень в этом понимаю и написать программу с 0 не смог, скинули готовую. Немного оптимизировал её, рассмотрев исключительную ситуацию, но кусок, где происходит само возведение в степень, не понимаю.
1) каким образом идет проверка в двоичной системе?
2) в какой конкретной строке происходит возведение х в степень у?
3) почему при возведение х=0 в степень у меня помимо 0 выводится на экран '1' ?
Код:
Program St;
var x,s,p:real;
    y,z,c:integer;
begin
     write ('x=');
     readln(x);
     write ('y=');
     readln(y);
     begin
     if x=0 then
                if y>0 then
                           writeln('0')
                       else
                           writeln('Неопределенность')
            else

                z:=abs(y);
                p:=x;
                s:=1;
            repeat
                c:= z mod 2;
                z:= z div 2;
                if c=1 then
                           s:=s*p;
                           p:=p*p;
                until
                 z<=0;
     end;
     if y<0 then
                writeln (1/s)
            else
                writeln (s);
end.
Заранее благодарен.

Последний раз редактировалось aleko05; 23.10.2012 в 21:36.
aleko05 вне форума Ответить с цитированием
Старый 23.10.2012, 21:55   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

3) почему при возведение х=0 в степень у меня помимо 0 выводится на экран '1' ?
Вначале срабатывает этот код:
Код:
if x=0 then
   if y>0 then
      writeln('0')
   else
      writeln('Неопределенность')
else
   z:=abs(y);
а затем:
Код:
s:=1;
и
Код:
if y<0 then
   writeln (1/s)
else
   writeln (s);
(Тут только основные моменты отмечены).
2) в какой конкретной строке происходит возведение х в степень у?
А конкретной строки и нет
Есть только набор строк.

И по смыслу, второй begin стоит не в том месте...
Он вроде должен быть тут:
Код:
 ...
  else
  begin
      z:=abs(y);
      p:=x;
      ...
  end;

Как-то так ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 23.10.2012, 22:03   #3
aleko05
Пользователь
 
Регистрация: 25.09.2012
Сообщений: 11
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
3) почему при возведение х=0 в степень у меня помимо 0 выводится на экран '1' ?
Вначале срабатывает этот код:
Код:
if x=0 then
   if y>0 then
      writeln('0')
   else
      writeln('Неопределенность')
else
   z:=abs(y);
а затем:
Код:
s:=1;
и
Код:
if y<0 then
   writeln (1/s)
else
   writeln (s);
как это исправить, не подскажете?


Цитата:
Есть только набор строк
это значит, что код настолько ужасен, или я себя накручиваю?
aleko05 вне форума Ответить с цитированием
Старый 23.10.2012, 22:20   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Цитата:
как это исправить, не подскажете?
Например:
Код:
if x=0 then
begin
  if y>0 then
     writeln('0')
  else
     writeln('Неопределенность');
  Exit;
end
else
begin
...
...
end;
Цитата:
это значит, что код настолько ужасен, или я себя накручиваю?
Ну, вроде такой алгоритм выбран...


Как-то так ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните часть кода (Delphi) Начинающий програм Помощь студентам 2 29.03.2012 20:49
объясните содержание программы lexa1493 Помощь студентам 0 31.01.2012 10:26
Объясните код программы vadym.miller Общие вопросы C/C++ 3 12.11.2011 16:27
Объясните код программы С++ PAREN_DEFO C++ Builder 2 21.03.2011 13:54