Форум: "Прочее";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];
ВнизСуществуют готовые ли решения перевода числа в прописной вариант Найти похожие ветки
← →
Kostafey © (2007-05-19 03:04) [0]Может вопрос и до орешника дотянет? :)
Нужно например 6572 превратить в "шесть тысячь пятьсот семьдесят два".
Ну лень же самому писать ;)
Велосипед, как известно, интересно изобретать только первый раз.
← →
Германн © (2007-05-19 03:47) [1]
> Существуют готовые ли решения перевода числа в прописной
> вариант
>
> Kostafey © (19.05.07 03:04)
>
> Может вопрос и до орешника дотянет? :)
>
Не, не дотянет. Орешник нынче заброшен и новых поступлений там не предвидется :(
А сей вопрос, имхо, должен пройти по другой категории! Тут "орехом" и не пахнет! Сформулируй его правильно.
← →
{RASkov} © (2007-05-19 03:51) [2]> [0] Kostafey © (19.05.07 03:04)
http://www.yandex.ru/yandsearch?rpt=rad&text=%F1%F3%EC%EC%E0+%EF%F0%EE%EF%E8%F1%FC%FE+%2BDelphi
← →
Sergey Masloff (2007-05-19 07:08) [3]Kostafey © (19.05.07 03:04)
>Велосипед, как известно, интересно изобретать только первый раз.
Ну так ты его уже изобрел? А чего не пользуешься?
Реализаций немеряно поисковиком за 2 минуты находятся.
А лучше сам напиши там и несложно но и интересно если самому алгоритм придумать.
← →
homm © (2007-05-19 07:23) [4]В 9-м кслаасе, где-то, на факультативе по программированияю такую задачку на Visual Basic решал :) Там правда еше рубли и копейки были.
← →
Kostafey © (2007-05-19 11:06) [5]> А сей вопрос, имхо, должен пройти по другой категории! Тут
> "орехом" и не пахнет! Сформулируй его правильно.
Эх, не получилось. :)
В орешник попасть - вопрос должен быть не то чтобы простой, но
главное глупый. Ладно, может в другой раз :)
> http://www.yandex.ru/yandsearch?rpt=rad&text=%F1%F3%EC%EC%E0+%EF%F0%EE%EF
> %E8%F1%FC%FE+%2BDelphi
Кстати, помогло. Гм. почему-то у меня не получилось запрос правильно сформулировать.
> [3] Sergey Masloff (19.05.07 07:08)
> А лучше сам напиши там и несложно но и интересно если самому
> алгоритм придумать.
Ну на счет лени я просто немного соврал - думал в кандадаты на орешник продвинуться :)).
На самом деле жутко некогда.
> В 9-м кслаасе, где-то, на факультативе по программированияю
> такую задачку на Visual Basic решал :) Там правда еше рубли
> и копейки были.
А кто ж спорил, что вопрос глупый?
Кстати, в 9-м кслассе такие задачки действительно интересно решать, а
сейчас просто не до этого.
← →
VirEx © (2007-05-19 11:14) [6]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
const //массивы константы
num0_9 :array[1..9]of string[6]=("один","два","три","четыре","пять","шесть","семь","восемь","девять");
num11_19 :array[1..9]of string[13]=("одиннадцать","двенадцать","тринадцать","четырнадцать","пятнадцать", "шестнадцать","семнадцать","восемьнадцать","девятьнадцать");
num10_90 :array[1..9]of string[11]=("десять","двадцать","тридцать","сорок","пятьдесят","шестьдесят","сем ьдесят","восемьдесят","девяносто");
num100_1000 :array[1..10]of string[9]=("сто","двести","триста","четыреста","пятьсот","шестьсот","семьсот","в осемьсот","девятьсот","тысяча");
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
{
IsFind
функция поиска подстроки subStr в строке MainStr (при этом учитываются пробелы по краям подстроки),
при успехе - возвратит true
например при MainStr:=" aaaa bcde fff ";
и subStr="bcde"; возвратит true
}
function IsFind(MainStr,subStr:string):boolean;
var
i:integer;
begin
result:=false;
i:=0;
while i<Length(MainStr) do begin
if copy(MainStr,i,length(SubStr)+2)=" "+SubStr+" " then result:=true;
inc(i);
end;
end;
var
i:integer;
str:string;
res:integer;
begin
res:=0;
str:=" "+Edit1.Text+" ";//заранее заключаем строку в пробелы по краям
//в цикле перебираем все значения массива цифр в строковом виде (high(num0_9) - вычисляет количество элементов в массиве)
//и если в исходной строке она встречается, увеличиваем результат на это число (т.е. на позицию этого элемента в массиве)
for i:=1 to high(num0_9) do
if IsFind(str,num0_9[i]) then res:=res+i;//единицы
for i:=1 to high(num10_90) do
if IsFind(str,num10_90[i]) then res:=res+i*10;//десятки
for i:=1 to high(num11_19) do
if IsFind(str,num11_19[i]) then res:=res+i+10;//диапазон чисел от 11 до 19
for i:=1 to high(num100_1000) do
if IsFind(str,num100_1000[i]) then res:=res+i*100;//сотни
Edit2.Text:=IntToStr(res);//вписываем в поле ввода результат предварительно переведя его в строковой тип
end;
procedure TForm1.Button2Click(Sender: TObject);
var
str:string;
begin
str:="";
randomize;//теперь генерация случайных чисел будет действительно случайной
//генерируем будет ли тысяча или нет
if (1-random(2))=1 then str:=num100_1000[10];
//генерируем будут ли сотни
if (1-random(2))=1 then str:=str+" "+num100_1000[9-random(9)];
//генерируем десятки
//т.к. есть различия в написании десятков, например можно написать
//слово "тринадцать" но нельзя написать "десять три" поэтому
//выбираем: либо генерировать "двадцать три" либо "пятнядцать"
case (2-random(3)) of
0: begin //генерация например "двадцать три"
str:=str+" "+num10_90[7-random(7)+1]; //выражение "7-random(7)+1" сделано для того чтобы не выпадало например "десять три", тоесть чтобы исключить слово "десять"
str:=str+" "+num0_9[8-random(8)];
end;
1: str:=str+" "+num11_19[8-random(8)]; //генерация например "тринадцать"
2: str:=str+" "+num0_9[8-random(8)];//генерация единиц
end;
Edit1.Text:=str; //вписываем в поле ввода
Form1.Button1.Click;//программно нажимаем кнопку перевода из строки в цифры
end;
end.object Form1: TForm1
Left = 192
Top = 107
Width = 490
Height = 375
Caption = "Form1"
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = "MS Sans Serif"
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Edit1: TEdit
Left = 8
Top = 24
Width = 201
Height = 21
TabOrder = 0
Text = #1090#1099#1089#1103#1095#1072" "#1074#1086#1089#1077#1084#1100#1089#1086#1090" "#1076#1077#1074#1103#1085#1086#1089#1090#1086" "#1090#1088#1080
end
object Edit2: TEdit
Left = 320
Top = 24
Width = 153
Height = 21
TabOrder = 2
end
object Button1: TButton
Left = 216
Top = 24
Width = 97
Height = 25
Caption = #1087#1077#1088#1077#1074#1077#1089#1090#1080" >>>"
TabOrder = 1
OnClick = Button1Click
end
object Button2: TButton
Left = 8
Top = 56
Width = 465
Height = 41
Caption = #1055#1086#1076#1086#1073#1088#1072#1090#1100" "#1089#1083#1091#1095#1072#1081#1085#1086#1077" "#1095#1080#1089#1083#1086" "#1080" "#1087#1077#1088#1077#1074#1077#1089#1090#1080" "#1074" "#1094#1080#1092#1088#1086#1074#1086#1081" "#1074#1080#1076
TabOrder = 3
OnClick = Button2Click
end
end
← →
Kostafey © (2007-05-19 13:25) [7]> [6] VirEx © (19.05.07 11:14)
Строку в число? ;)
← →
VirEx © (2007-05-19 13:44) [8]а. ну блин. я думаю разберешся, div и exception тебе в помощь
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.042 c