Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
8-1159857051
AlexLines
2006-10-03 10:30
2007.06.17
Как воспроизводить видеофайлы в Mpeg2


2-1173950118
Mishenka
2007-03-15 12:15
2007.06.17
Работа с MySql


2-1180076046
Gentos
2007-05-25 10:54
2007.06.17
Интерполяция функции


8-1159858140
T54
2006-10-03 10:49
2007.06.17
DVD и MPEG4


1-1177069735
nali
2007-04-20 15:48
2007.06.17
Прозрачность в TImage





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский