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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2012, 19:28   #1
daniil-640
 
Регистрация: 30.05.2012
Сообщений: 5
По умолчанию Дописать программу на Pascal ABC

Код:
 var
    i,res,j,k,l: integer;
    s,ch:string;
function power (x,pow:integer):integer;
var res: integer;
begin
    res := 1;
    while (pow > 0) do
    begin
        if (pow and 1 = 1) then res := res * x;
        x := x + x;
        pow := pow shr 1;
    end;
    power := res;
end;
Begin
 writeln('pruvwedite prumer dvou4Hogo koga s y4etom maks dopystumogo 4usla v uspolzyemoi konfugyracuu kompa');
 for i:=1 to 1 do read(ch);  l:=length(ch);
 if l<>16 then
    begin
        while k<> 2 do
             begin
     write('Poprobyite eshe raz, 4usel dolzhHo BbIt 16!'); read(ch); l:=length(ch);
 if l=16 then break;
     k:=k+1
     end;
              end;
    res:=0;
    j:=length(ch);
    for i:=1 to 16 do
        if (ch[i]='1') then
            res:=res+power(2,j-i);
            if l=16 then
    writeln('4uslo ravHo = ',res);
End.
программа анализирует, если введено 16-ти значное двоичное число, то программа переводит двоичное число в десятичное, но проблема в том что переводит не правильно, подскажите в чем ошибка,
зы. когда ввожу допустим 1111111111111111 это = 65535, но выводит всего 2295, помогите исправить в чем ошибка в функции
daniil-640 вне форума Ответить с цитированием
Старый 08.06.2012, 19:54   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Код:
var
  k, i, res: integer;
  s: string;

begin
  writeln('pruvwedite prumer dvou4Hogo koga s y4etom maks dopystumogo 4usla v uspolzyemoi konfugyracuu kompa');
  k := 0;
  readln(s);
  while(length (s) <> 16) and (k < 3) do
  begin
    write('Poprobyite eshe raz, 4usel dolzhHo BbIt 16!');
    inc(k);
    readln(s);
  end;
  if length(s) = 16 then
  begin
    res := 0;
    for i := 1 to 16 do
      res := res * 2 + ord(s[i]) - ord('0');
    writeln('4uslo ravHo = ', res);
    readln;
  end;
end.
Но никакого анализа того, что это действительно двоичное число, нет.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу на Pascal ABC daniil-640 Помощь студентам 0 31.05.2012 13:50
Дописать программу на Pascal ABC daniil-640 Помощь студентам 3 30.05.2012 15:32
Рисование объемных фигур (Программу пишу в Pascal ABC) House M.D. Помощь студентам 0 25.02.2012 20:54
Программы в Pascal, среда pascal ABC. Лабораторные работы Одинокая Волчица Фриланс 8 10.02.2012 20:09
ABC Pascal. graphABC. доработать программу. TDub Помощь студентам 0 23.12.2011 18:44