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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2011, 23:45   #1
Елеша
Новичок
Джуниор
 
Регистрация: 06.04.2011
Сообщений: 1
Печаль Не могу найти ошибку в программе.

Дело в том, что программа не осуществляет перевод чисел из различных позиционных систем счисления на Паскале. Помогите найти ошибку.

Вот основная программа:
Код:
  program kursovoi_proekt;
  uses CRT,Unit1;
  const a: string[36] = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  var
    n: real;
    rez, s, s2, s3, s4: string;
    ind:char;

    t,cc,  cc2, k, l, t2: integer;
    label 1;
    
  begin
  ClrScr;
  1:repeat
    write('Из какой будем системы счисления будем переводить: ');
    readln(cc2);
    write('Введите систему счисления, в которую хотите перевести: ');
    readln(cc);
  until (cc2 in [2..36]) and (cc in [2..36]);


  repeat
   write('ввод числа в ', cc2, '-й системе счисления: ');
   readln(s);
   s4:=s;
   if not proverka(cc2,s2) or not proverka(cc2,s3) then
    write('Некорректное число. Повторите ')
  until proverka(cc2,s2) and proverka(cc2,s3);

  if cc2 = 10 then
  begin
    if ((n - round(int(n))) = 0) then
      rez := Cel(n, cc)
    else
      rez := Cel(n, cc);
  end

  else
  begin
    if t2=0 then
      rez := Cel(ToDec(s3, cc2), cc)
    else
      rez := Cel(ToDec(s2, cc2), cc);
  end;
  writeln('Число ',s4,',указанное в ',cc2,'-ой системе счисления, в ',cc,'-й системе счисления:=',rez);
  begin
  writeln('Продолжить? Y/N');
  readln(ind);
  case ind of
  'Y': goto 1;
  'N':  exit;
end;
end;
end.

А вот модуль, в который вынесены все процедуры и функции:
Код:
 unit unit1;
  
  interface

  function ToDec(ss2: string; cc: byte): integer;
  function Cel(d: real; c: integer): string;
  function proverka(c:integer;s:string):boolean;
  
  implementation
  
  {функция для перевода из любой СС в 10-ю}
  function ToDec(ss2: string; cc: byte): integer;
  const a: string[36] = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  var i, n, sum: integer;
  begin
  sum := 0;
  n := length(ss2);
  for i := 1 to n do
  begin
    dec(n);
    sum := sum + round((pos(ss2[i], a) - 1) * exp(ln(cc) * n));
  end;
  ToDec := sum;
  end;
  
  {функция для перевода числа из 10-й в любую сс}
  function Cel(d: real; c: integer): string;
  const a: string[36] = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  var
  s: string;
  n2: integer;
  begin
  n2 := round(int(d));
  s := '';
  repeat
    s := ((a[n2 mod c + 1]) + s);
    n2 := n2 div c;
  until (n2 = 0);
  Cel := s;
  end;
  
   {функция для проверки может ли быть это число в заданной системе счисления}
  function proverka(c:integer;s:string):boolean;
  const a: string[36] = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  var
  i,kol,j:integer;
  begin
  kol:=0;
  for i:=1 to c do
  begin
   for j:=1 to length(s) do
   if s[j]=a[i] then
   inc(kol);
  end;
    if kol=length(s) then
    proverka:=true
    else
  proverka:=false;
  end;
  end.
Елеша вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу найти ошибку в программе. Прошу помощи Chaplen89 Общие вопросы Delphi 0 27.10.2009 17:31
Не могу найти ошибку в программе lioshenka Общие вопросы C/C++ 5 24.08.2009 11:38
Не могу найти ошибку в программе Dawystrik Общие вопросы Delphi 9 19.03.2009 21:19
Паскаль, не могу найти ошибку в программе Julinja Помощь студентам 2 17.11.2008 20:42