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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.09.2013, 20:48   #1
Марина22
 
Регистрация: 23.12.2012
Сообщений: 4
По умолчанию паскаль ABC. Помогит доработать программы

Помогите пожалуйста с составлением программы
1. Дан правильный n-угольник и угол между диагоналями, найти S и P
, считая, что радиус вписаной окружности может быть больше 5 , но меньше 1.
Формулы я вывести смогла, а с написанием программы проблемы
Цитата:
tg=l1/r
l1=tg*r
n^2=r^2+l^2
n=sqrt(r*r+l*l)
l=2*l1
a=a1/a2
p=(n+n+l)/2
S=sqrt(p(p-n),(p-n)(p-l)
P=n*l
Если формулы вывела не правильно не ругайтесь, пожалуйста
2. С клавиатуры вводиться целое десятеричное (x), вывести на экран двоичную запись числа(m)
вот программа, которую составила
Код:
var x,c,m,i: integer;
begin
read(x);
i:=1;
while (x>0) do;
begin
c:= x mod 2;
m:= m+c*1;
i:=i*10;
x:= x div 2;
end;
writeln(m);
end.
вроде работает. Проблема в том, что до меня никак не доходит, как по тому же принципу составить программу, где нужно из десятеричной перевести в различные системы счисления
Если поможете буду очень благодарна

Последний раз редактировалось Stilet; 12.09.2013 в 21:41.
Марина22 вне форума Ответить с цитированием
Старый 12.09.2013, 21:46   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
С клавиатуры вводиться целое десятеричное (x), вывести на экран двоичную запись числа(m)
Код:
var x,i:integer;s:string[32];
begin
 readln(x);
 for i:=32 downto 1 do begin
  if (x and 1) then s[i]:='1' else s[i]:='0';
  x:=x shr 1;
 end;
 write(s); readln;
end.
Не проверял.
Цитата:
Формулы я вывести смогла
Ох что-то мне в них не нравится...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.09.2013, 22:06   #3
Марина22
 
Регистрация: 23.12.2012
Сообщений: 4
По умолчанию

Спасибо большое! Формулы могут быть и не правильными, нам нужно было использовать формулу герона, возможно я намудрила
Марина22 вне форума Ответить с цитированием
Старый 12.09.2013, 22:26   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
var x,i:integer;s:string[32];
begin
 readln(x);
 for i:=32 downto 1 do begin
  if (x and 1) then s[i]:='1' else s[i]:='0';
  x:=x shr 1;
 end;
 write(s); readln;
end.
Гениально! Пошел добавлять в свою коллекцию..
Только я прально понимаю, что if (x and 1) then должно быть if (x and 1) = 1
Poma][a вне форума Ответить с цитированием
Старый 12.09.2013, 22:56   #5
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Я думаю, что ни
Код:
(x and 1)
ни
Код:
(x and 1) = 1
Работать не будут
Вадим Мошев вне форума Ответить с цитированием
Старый 12.09.2013, 23:05   #6
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Ты прав.. Есть идеи как это преодолеть?
Poma][a вне форума Ответить с цитированием
Старый 12.09.2013, 23:25   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
(x and 1) = 1
Работать не будут
достаточно дописать в начале либо
Код:
s[0] := #32;
либо
Код:
s := '                               ';
и будет работать!

кстати.
TurboProfessional (с) TurboPower Software 1987
модуль TPSTRING.PAS
Код:
  function BinaryL(L : LongInt) : string;
    {-Return binary string for LongInt}
  var
    I : LongInt;
    N : Byte;
  begin
    N := 1;
    BinaryL[0] := #32;
    for I := 31 downto 0 do begin
      BinaryL[N] := Digits[Ord(L and LongInt(1 shl I) <> 0)]; {0 or 1}
      Inc(N);
    end;
  end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.09.2013, 00:11   #8
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
достаточно дописать в начале либо
А почему же без этой строчки не работает?
P.S. Всех с наступившим
Poma][a вне форума Ответить с цитированием
Старый 13.09.2013, 00:42   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
А почему же без этой строчки не работает?
дык изначально то строка нулевой длины. Потом пиши в неё что хочешь, длина строки от этого НЕ МЕНЯЕТСЯ!

Цитата:
P.S. Всех с наступившим
Взаимно!!
С Днём программиста!
Ура, господа/товарищи!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.09.2013, 08:26   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

От докопались...
Код:
var x,i:integer;s:array[1..32] of char;
begin
 readln(x);
 for i:=32 downto 1 do begin
  if (x and 1)=1 then s[i]:='1' else s[i]:='0';
  x:=x shr 1;
 end;
 write(s); readln;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Портал партнерской программы - доработать valdest PHP 1 14.02.2013 08:16
ABC Pascal. graphABC. доработать программу. TDub Помощь студентам 0 23.12.2011 18:44
Доработать код программы. С++ andygarcia86 Помощь студентам 0 14.11.2011 20:32
C++.Доработать 2 программы Eliviel Помощь студентам 4 26.12.2010 12:25
доработать кусочек программы Алёна Помощь студентам 1 21.05.2007 13:07