Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.17;
Скачать: CL | DM;

Вниз

Существуют готовые ли решения перевода числа в прописной вариант   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.019 c
9-1153370196
aKirill.INFO
2006-07-20 08:36
2007.06.17
Несколько экранов


15-1179597858
Rawed
2007-05-19 22:04
2007.06.17
Часы в Windows постоянно сбиваются!!


1-1176964731
kukuikar
2007-04-19 10:38
2007.06.17
Проверить существует ли сетевой путь или с сети ли сервер


2-1180444102
Галинка
2007-05-29 17:08
2007.06.17
Панель инструментов "под кнопкой" панели инструментов.


15-1179914189
antonn (work)
2007-05-23 13:56
2007.06.17
Кетмар не пишет вирусы, не верьте