Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
2 / 2 / 1
Регистрация: 01.10.2014
Сообщений: 66

Осуществить ввод переменной без константы

16.09.2015, 09:47. Показов 1157. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, собственно сабж, короче, нужно осуществить ввод переменной a непосредственно в консоле, перед осуществлением программы, т.е. использовать ее не константой, а вводить перед использованием программы самостоятельно

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
program Converter_p_10;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows,
  UP_To_10 in 'UP_To_10.pas';
var conv: Tp_To_10;
begin
  SetConsoleCP(1251);
  SetConsoleOutPutCP(1251);
  conv:= TP_To_10.Create(10); //Ïðèìåð èñïîëüçîâàíèÿ êîíñòðóêòîðà TP_To_10.Create
                            //ïî óìîë÷àíèþ
  writeln(conv.p); //Ïðèìåð èñïîëüçîâàíèÿ Getter Fp ñâîéñòâà p
  conv.p:= 16; //Ïðèìåð èñïîëüçîâàíèÿ Setter SetP ñâîéñòâà p
  writeln(conv.p); //Ïðèìåð èñïîëüçîâàíèÿ Getter Fp ñâîéñòâà p
  writeln(conv.PCharToInt('a')); //Ïðîâåðêà TP_To_10.PCharToInt
  writeln(conv.PCharToInt('A')); //Ïðîâåðêà TP_To_10.PCharToInt
  writeln('Ïåðåâîä öåëîé ÷àñòè: ', conv.PIntTo10('A5'):6:2); //Ïðîâåðêà TP_To_10.PIntTo10
  writeln('Ïåðåâîä äðîáíîé ÷àñòè: ', conv.PFracTo10('E'):6:4); //Ïðîâåðêà TP_To_10.PCharTo10
  writeln('Ïåðåâîä äåéñòâèòåëüíîãî ÷èñëà: ', conv.DoTransfer('-A5,E'):6:4); //Ïðîâåðêà TP_To_10.DoTransfer
  readln;
end.




Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
unit UP_To_10;
 
interface
uses
  Classes,
  SysUtils;
//------------------------------------------------------------------------------
const
DevSystVal = 16; //Ñèñòåìà ñ÷èñëåíèÿ ïî óìîë÷àíèþ
a = 10; //×èñëî äåñÿòü â 16-÷íîé ñèñòåìå ñ÷èñëåíèÿ
zero = 0; //×èñëî 0
first = 1; //×èñëî 1
Minus = '-'; //Ñèìâîë '-'
CommaSign = ','; //Ñèìâîë ','
NullString = ''; //Ïóñòàÿ ñòðîêà
//------------------------------------------------------------------------------
type
//------------------------------------------------------------------------------
TBase = 2..16;//Òèï äàííûõ äëÿ îñíîâàíèÿ ñèñòåìû ñ÷èñëåíèÿ
TP_To_10 = class //Ïðåîáðàçîâàòåëü ÷èñëà èç ñ. ñ÷. ñ îñíîâàíèåì p â äåñèòè÷íîå
private
  Fp: TBase; //Îñíîâàíèå ñ. ñ÷.
  function GetP():Tbase; //Âîçâðàùàåò çíà÷åíèå ïîëÿ Fp
  procedure SetP(new: TBase); //Óñòàíàâëèâàåò îñíîâàíèå ñèñòåìû ñ÷èñëåíèÿ
public
  property p: TBase read GetP write SetP; //×òåíèå è çàïèñü îñíîâàíèÿ ñ. ñ÷.
  constructor Create(p:TBase = DevSystVal); //Ñîçäàåò îáúåêò è èíèöèèðóåò ïîëå Fp
  function PCharToInt(PChar: char):integer; //Ïðåîáðàçîâàòåëü ñèìâîëà â öåëîå
  function PIntTo10 (PIntString: string): extended; //Ïðåîáðàçîâàòåëü ñòðîêè â öåëîå
  function PFracTo10 (PFracString: string): extended; //Ïðåîáðàçîâàòåëü ñòðîêè â äðîáü
  function DoTransfer(PNumberString: string):extended; //Ïðåîáðàçîâàòåëü ñòðîêè â ÷èñëî
end;
//------------------------------------------------------------------------------
implementation
  constructor TP_To_10.Create(p:TBase = DevSystVal); //Ïî óìîë÷àíèþ ñ.ñ÷ = 16
  begin
    Fp:= p;
  end;
//------------------------------------------------------------------------------
  function TP_To_10.GetP():Tbase;
  begin
    result:= Fp;
  end;
//------------------------------------------------------------------------------
  procedure TP_To_10.SetP(new:TBase);
  begin
    Fp:= new;
  end;
//------------------------------------------------------------------------------
  function TP_To_10.PCharToInt(PChar: char):integer;
  begin
    result:= zero; //Èíèöèàëèçàöèÿ ðåçóëüòàòà
    case PChar of
      '0'..'9': result:= ord(PChar)-ord('0');
      'a'..'f': result:= ord(PChar)-ord('a')+a;
      'A'..'F': result:= ord(PChar)-ord('A')+a;
    end;
  end;
//------------------------------------------------------------------------------
  function TP_To_10.PIntTo10 (PIntString: string): extended;
  var
    i: integer; //Ñ÷åò÷èê öèêëà
    PowerP: extended; //Ñòåïåíü âîçâåäåíèÿ îñíîâàíèÿ ñèñòåìû ñ÷èñëåíèÿ
  begin
    result:= zero; //Èíèöèàëèçàöèÿ ðåçóëüòàòà
    if PIntString <> NullString then //Óñëîâèå ïðîâåðêè ñòðîêè íà íàëè÷èå ñèìâîëîâ
      begin
        for i:= zero to length(PIntString) do
          begin
            PowerP:= length(PIntString)-i;
            result:=result + PCharToInt(PIntString[i])*int(exp(PowerP*ln(Fp)));
          end;
      end;
  end;
//------------------------------------------------------------------------------
  function TP_To_10.PFracTo10 (PFracString: string): extended;
  var
    i: integer; //Ñ÷åò÷èê öèêëà
  begin
    result:= zero; //Èíèöèàëèçàöèÿ ðåçóëüòàòà
    if PFracString <> NullString then //Óñëîâèå ïðîâåðêè ñòðîêè íà íàëè÷èå ñèìâîëîâ
      begin
        for i:= length(PFracString) downto zero do //Îáðàòíûé ñ÷åò÷èê
          begin
            result:= result + PCharToInt(PFracString[i])*(exp((-i)*ln(Fp)));
          end;
      end;
  end;
//------------------------------------------------------------------------------
  function TP_To_10.DoTransfer(PNumberString: string):extended;
  var
    i: integer;
    MinusExists: boolean;
    IntPartOfPNumberString,FracPartOfPNumberString: string;
  begin
    MinusExists:= False;
    if PNumberString[first] = Minus then //Ïðîâåðêà óñëîâèÿ íàëè÷èÿ ìèíóñà
      begin
        Delete(PNumberString,first,1);
        MinusExists:= True;
      end;
    for i:= first to length(PNumberString) do
      begin
        if PNumberString[i] = CommaSign then
          begin
            IntPartOfPNumberString:= Copy(PNumberString, first, i-1);
            FracPartOfPNumberString:= Copy(PNumberString, i+1, length(PNumberString)-i);
          end;
      end;
    result:= PIntTo10(IntPartOfPNumberString) + PFracTo10(FracPartOfPNumberString);
    if MinusExists = True then result:= result*(-1); //Äîìíîæåíèå íà ìèíóñ
  end;
//------------------------------------------------------------------------------
end.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.09.2015, 09:47
Ответы с готовыми решениями:

Из константы переделать в ввод с клавиатуры
const _group: group = (,, ,, ,); Сделайте так чтобы вместо этой константы,...

Отличие переменной от типизированной константы
Собственно, весь вопрос в сабже. Объясните, пожалуйста :) (только не надо ссылками на сторонние источники отвечать)

Какие есть аналоги у переменной/константы, содержащей сегодняшнюю дату (now)?
Например, есть ли какие-то переменные, хранящие завтрашнюю дату? Вчерашнюю дату, и т.д.? Или есть только now?

4
 Аватар для Immo
692 / 509 / 238
Регистрация: 02.10.2012
Сообщений: 1,741
16.09.2015, 10:26
если я тебя правильно понял, ты хочешь запустить программу из консоли и в качестве параметра указать ей значение переменной?
..\myprogram.exe -X и получить этот икс?
тогда при запуске
Delphi
1
X:=ParamStr(1);
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
16.09.2015, 10:53
yury911, При копировании кода, содержащего кириллицу, переключайте раскладку клавы на русскую.
0
2 / 2 / 1
Регистрация: 01.10.2014
Сообщений: 66
17.09.2015, 10:07  [ТС]
Переписал код! Сейчас у меня выводится перевод целой части отдельно от дробной! Как можно реализовать совместный вывод целой и дробной части? Не могу разобраться, проблемы с типами переменной.
Код следующий:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
program Converter_p_10;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows,
  UP_To_10 in 'UP_To_10.pas';
var conv: Tp_To_10;
s,d:string;
begin
  SetConsoleCP(1251);
  SetConsoleOutPutCP(1251);
  conv:= TP_To_10.Create(); //Пример использования конструктора TP_To_10.Create
                            //по умолчанию
  writeln(conv.p); //Пример использования Getter Fp свойства p
  conv.p:= 16; //Пример использования Setter SetP свойства p
  writeln(conv.p); //Пример использования Getter Fp свойства p
  writeln(conv.PCharToInt('a')); //Проверка TP_To_10.PCharToInt
  writeln(conv.PCharToInt('A')); //Проверка TP_To_10.PCharToInt
  Writeln('введите целую часть числа');
  Readln(s);
  writeln('Перевод целой части: ', conv.PIntTo10(s):6:2); //Проверка TP_To_10.PIntTo10
  Writeln('введите дробную часть числа');
  Readln(d);
  writeln('Перевод дробной части: ', conv.PFracTo10(d):6:4); //Проверка TP_To_10.PCharTo10
 
  readln;
end.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
17.09.2015, 10:51
Лучший ответ Сообщение было отмечено yury911 как решение

Решение

Вводить число нужно не по частям, а целиком, выделять целую и дробную части, переводить их в новую СС в строку и вывод
Delphi
1
write(cel,'.',drob);
Посмотрите эту тему.
Перевод в различные системы счисления
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.09.2015, 10:51
Помогаю со студенческими работами здесь

Осуществить ввод последовательности целых чисел
Осуществить ввод последовательности целых чисел , определить третье положительно число и подсчитать кол-во цифр в нем. Последовательность...

Каким образом можно осуществить ввод переменных в цикле
Каким образом можно осуществить ввод переменных в цикле, с последующей записью в одну переменную? У меня есть цикл for, который в...

Ввод константы
Имеется массив. Нужно чтоб пользователь вводил его размер, но для этого нужно чтоб переменная была константой. Вопрос как сделать так чтоб...

Вызов константы класса по имени из переменной
Как вызвать константу класса по имени из переменной? class Dir { const PIC='pictures'; const CODE='core'; const...

Получить имя константы или переменной
В одном из моих разрабатавемемых компонентов есть следующий набор: Public Enum CSIDL_RU = &amp;H30 = &amp;H1A =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru