Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 10.05.2017, 21:07   #1 (permalink)
DK2
Новичок
 
Регистрация: 10.05.2017
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Программа не выводит отрицательные числа и нули. Delphi

Калькулятор не выводит на дисплей отрицательные числа при нажатии на кнопку "Not", он просто оставляет дисплей пустым. А вот при сложении и вычитании выводит. Хотя мне надо чтоб и так и так выводил. Вот в этих функциях где то ошибка, что ему не нравится я не понимаю. Главная при сложении и вычитании выводит, а при использовании "Not" не хочет.
Код:
function CharToInt(Ch:char):integer;
begin //преобразование цифровой литеры в число
  case Ch of
    '0'..'9': Result:= Ord(Ch) - Ord('0');
    'A'..'F': Result:= Ord(Ch) - Ord('A') + 10;
     else Result:= 0;
  end;
end;
function IntToChar(N:integer):char;
begin //преобразование числа в цифровую литеру
  case N of
    0..9   : Result:= char(Ord('0') + N);
    10..15 : Result:= char(Ord('A') + N - 10);
    else Result:= '0';
  end;
end;
function StringToInt(const S: string; Radix: integer): integer;
var i: integer; //преобразуем цифровую строку S в число
   neg : boolean;
begin
  Result := 0;
  neg := false;
  if (Length(S)>0) and (S[1]='-') then neg := true;
  for i := 1 to Length(S) do
    Result := Result * Radix + CharToInt(S[i]);
  if neg then Result := -Result;
end;
function IntToString(N, Radix: integer): string;
var neg, zig : boolean;
begin //преобразуем число N в строку цифр
  neg:= N<0;
  zig:=N=0;
  N := abs(N);
  while abs(N) > 0 do begin
    Result := IntToChar(N mod Radix) + Result;
    N := N div Radix;
  end;
  if neg then Result := '-'+Result;
  if zig then Result := '0';
end;
DK2 вне форума   Ответить с цитированием

Старый 10.05.2017, 21:07
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Подскажу вам, что проблему можно решить прочитав схожие темы

Программа считывает двузначное число и выводит через пробел каждую цифру отдельно
ребят, есть ли программа которая выводит красивый звуковой спектр на раб.стол????
Программа выводит результат бесконечное число раз. Не ясна причина
Собственные числа на Delphi

Старый 10.05.2017, 21:57   #2 (permalink)
Николай_С
Радиоинженер
 
Аватар для Николай_С
 
Регистрация: 25.09.2012
Адрес: г.Дзержинск Нижегородской обл.
Сообщений: 25,300
Записей в дневнике: 7
Сказал(а) спасибо: 292
Поблагодарили 219 раз(а) в 70 сообщениях
Репутация: 110185
По умолчанию

Что-то не то с кодировкой. Русские буквы в виде кракозябриков.
Тут только функции, а где сама программа?

Думаю проблема не в программе, а в формате вывода на экран.
Николай_С вне форума   Ответить с цитированием
Старый 10.05.2017, 22:18   #3 (permalink)
DK2
Новичок
 
Регистрация: 10.05.2017
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Вот:
Calc.7z
DK2 вне форума   Ответить с цитированием
Старый 10.05.2017, 23:17   #4 (permalink)
Николай_С
Радиоинженер
 
Аватар для Николай_С
 
Регистрация: 25.09.2012
Адрес: г.Дзержинск Нижегородской обл.
Сообщений: 25,300
Записей в дневнике: 7
Сказал(а) спасибо: 292
Поблагодарили 219 раз(а) в 70 сообщениях
Репутация: 110185
По умолчанию

Цитата:
Сообщение от DK2 Посмотреть сообщение
при использовании "Not" не хочет.
Это всё потому, что NOT - логический бинарный оператор инверсии, а Вы его пытаетесь применить к десятичному числу, да еще добиться знака минус.
Ничего не выйдет.
Николай_С вне форума   Ответить с цитированием
Старый 10.05.2017, 23:20   #5 (permalink)
DK2
Новичок
 
Регистрация: 10.05.2017
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Так ведь в Калькуляторе Windows это возможно же
DK2 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 10.05.2017, 23:23   #6 (permalink)
Viewer
Banned
 
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
По умолчанию

Зачем эта "самопальщина"?
В Delphi, начиная с версии I, есть встроенные функции по переводу "туды-сюды".
Viewer вне форума   Ответить с цитированием
Старый 10.05.2017, 23:24   #7 (permalink)
DK2
Новичок
 
Регистрация: 10.05.2017
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Я их не знаю
DK2 вне форума   Ответить с цитированием
Старый 10.05.2017, 23:33   #8 (permalink)
Viewer
Banned
 
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
По умолчанию

Для этого есть справка, по англицки - Help.
Вы, свою задачу поясните, тогда и будет краткий и емкий ответ
Viewer вне форума   Ответить с цитированием
Старый 10.05.2017, 23:41   #9 (permalink)
DK2
Новичок
 
Регистрация: 10.05.2017
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Ладно, пофиг на этот Not, тогда вопрос таков как сделать так что бы при вводе одного числа и по нажатию на кнопку ROR или ROL производился циклический сдвиг вправо или влево в зависимости какая кнопка нажата. Только не надо мне писать операторы побитовых сдвигов.
DK2 вне форума   Ответить с цитированием
Старый 10.05.2017, 23:43   #10 (permalink)
Николай_С
Радиоинженер
 
Аватар для Николай_С
 
Регистрация: 25.09.2012
Адрес: г.Дзержинск Нижегородской обл.
Сообщений: 25,300
Записей в дневнике: 7
Сказал(а) спасибо: 292
Поблагодарили 219 раз(а) в 70 сообщениях
Репутация: 110185
По умолчанию

Цитата:
Сообщение от DK2 Посмотреть сообщение
Так ведь в Калькуляторе Windows это возможно же
Да калькулятор Windows значительно сложней чем кажется. Обратите внимание на то, что кнопки A, B, C, D, E, F недоступны в режиме "Dec", а в Вашем их использование даже при суммировании вызывает ошибку деления на ноль.
Цитата:
Сообщение от DK2 Посмотреть сообщение
как сделать так что бы при вводе одного числа и по нажатию на кнопку ROR или ROL производился циклический сдвиг вправо или влево в зависимости какая кнопка нажата.
Если речь про любую другую систему счисления, кроме двоичной, то никак - это не имеет смысла.

Последний раз редактировалось Николай_С; 10.05.2017 в 23:48
Николай_С вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 08:56.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.