Ամբողջ թվով անգլերեն բառերը


Դժվարության մակարդակ Դժվար
Հաճախակի հարցնում են Amazon facebook Microsoft Պատգամախոս
String

«Ամբողջը անգլերեն բառերին» խնդրում մենք տվել ենք ոչ-բացասական ամբողջ թիվ և առաջադրանքներ փոխարկել այդ ամբողջ թիվը իր թվային բառերի կամ մենք ստանում ենք համարի, ցանկացած թվի ներդրում, և մեր խնդիրն է ներկայացնել այդ թիվը a- ում: լարային ձև Տեսնենք մեկ օրինակ, «765» թիվը պետք է ներկայացվի որպես «յոթ հարյուր վաթսունհինգ»: Այսպիսով, մենք գործ ունենք գործելու համար յուրաքանչյուր կոնկրետ համարի հետ:

Օրինակ

Մուտք:

123

Արդյունք:

Հարյուր քսան երեք

Մուտք:

4517

Արդյունք:

չորս հազար հինգ հարյուր տասնյոթ

Inteանկացած ամբողջ թիվ իր թվային բառի ձևի վերածելու համար պետք է ծրագիր գրեք

Ալգորիթմ

  1. Հայտարարեք Long Integer փոփոխական և ստացեք մուտքագրում:
  2. Հայտարարել an դասավորություն մեկ վայրի համար և նախաստորագրիր բոլորում բառեր տեղադրիր դրանում, և մեկ այլ զանգված տասնյակների համար և նախաստորագրիր տասնյակ տեղերով բառերը, ինչպես գրված է ծածկագրով:
  3. Այդ թվի շահաբաժինը փոխանցեք համապատասխան լարով այն գործառույթին, որը կարող է ստանալ միավորներ և տասնյակ բառեր և ավելացնել այն ժամանակավոր տողում:
  4. Վերադարձեք այդ ժամանակավոր տողը:
  5. Ֆունկցիան կարող է աշխատել մեկի վրա, իսկ տասնյակ վայրեր կարող են զանգվածի համար համապատասխան բառեր ստանալ դրա համար և պահպանել դրանք տողի արդյունքում:
  6. Եվ այն կշարունակի կցել լարը, մինչև որ չգա մեկի համարը:
  7. Եվ մենք ստանում ենք մի թվի ելք, որը ներկայացնում է որպես լար:

բացատրություն

Մեր հիմնական գաղափարն է սկսել առավելագույն արժեքից: Այսպիսով հայտարարված է երկու զանգված, որոնցում մեկը պահում է բոլոր բառերը, որոնք 20-ից պակաս են: Եվ մեկը, որը պահում է բոլոր արժեքները, որոնցում պահվում են տասի բոլոր բազմապատիկները, որոնք 100-ից պակաս են, ինչպես գրված է ծածկագրով:

Այսպիսով, մենք դրա միջով կանցնենք մի օրինակով:

Մուտքը տրվում է որպես 56543

Մենք մուտքագրում ենք և փոխանցում ենք այն getWords մեր գործառույթին, որտեղ մենք հայտարարում ենք տողի արդյունքը և պատրաստվում ենք բաժանել շահաբաժին: Այսպիսով, նախ այն անցնելու է, որը թիվը բաժանում է 10000000-ի, և մենք շահաբաժին ենք ստանում, քանի որ 0. 0 անցնում է լարը կրրով: Դա կգա «Բառեր» գործառույթում, որտեղ ստուգում է 0-ըth տասնյակների և մի տեղ, որտեղ նա ոչինչ չի գտնում և այժմ վերադառնում է դատարկ տեմպով:

Այսպիսով, հիմա այն պատրաստվում է փոխանցել այն թիվը, որը բաժանում է թիվը 100000-ի վրա և մոդուլայինը `100-ի հետ, և մենք շահաբաժին ենք ստանում, քանի որ այժմ 0 լարը անցնում է լարային լախով: Այն կգա «Բառեր» գործառույթում, որտեղ ստուգում է 0-ըth տասնյակների և վայրերի տեղը ոչինչ չի գտնում և այժմ վերադառնում է դատարկ տեմպով:

Այսպիսով, այժմ այն ​​անցնելու է թիվ, որը թիվը բաժանում է 1000-ի և մոդուլային 100-ի հետ, և մենք շահաբաժին ենք ստանում որպես 0, 56 անցում հազար լարի հետ: Այն կգա «Բառեր» գործառույթում, որտեղ շահաբաժինը կվերցնի 5-ի, իսկ մնացածը ՝ 6-ի, լարային փոխանցման դեպքում ՝ հազար, սրանք բոլորը պահվում են ժամանակավոր տողի վրա, որը «հիսուն վեց հազար» է, և այն վերադարձվում է արդյունքում:

Այժմ այն ​​կփոխանցի այն թիվը, որը բաժանում է թիվը 100-ի և մոդուլային 10-ի հետ, և մենք շահաբաժին ենք ստանում, քանի որ 5. 5 անց հարյուր տողով այժմ: Այն կգա «Բառեր» գործառույթով, որտեղ շահաբաժինը կվերցնի 5-ի: Իսկ մնացորդները `0-ը, լարով անցած հարյուրը, այնպես որ զանգվածը որոնելուց հետո և այն ավելացնելով ժամանակավոր լարում, կդառնան« հիսունվեց հազար հինգ հարյուր »:

Այժմ բլոկը ստուգելուց հետո այն կտպագրվի «և», և նորից: Այն անցնելու է 100-ով և 43-ով անցնող մոդուլային համարը: Եվ մենք շահաբաժին ենք ստանում որպես 4, իսկ մնացածը `3, որը պահվում է ժամանակավոր տողի մեջ: Տրված համարի և տերմինի բառերը պարզելուց հետո արդյունքի է վերադառնում:

Եվ հիմա արդյունքը կդառնա «հիսունվեց հազար հինգ հարյուր քառասուն երեք»:

Իրականացման

C ++ ծրագիր ամբողջ թվից անգլերեն բառերի համար

#include <iostream>
using namespace std;

string ones_place[] = { "", "one ", "two ", "three ", "four ",
                        "five ", "six ", "seven ", "eight ",
                        "nine ", "ten ", "eleven ", "twelve ",
                        "thirteen ", "fourteen ", "fifteen ",
                        "sixteen ", "seventeen ", "eighteen ",
                        "nineteen "
                      };

string tens_place[] = { "", "", "twenty ", "thirty ", "forty ",
                        "fifty ", "sixty ", "seventy ", "eighty ",
                        "ninety "
                      };

string Words(int num, string s)
{
    string temp = "";
    if (num > 19)
    {
        temp += tens_place[num / 10] + ones_place[num % 10];
    }
    else
    {
        temp += ones_place[num];
    }
    if (num)
    {
        temp += s;
    }
    return temp;
}

string getWords(long number)
{
    string result;
    result += Words((number / 10000000), "crore ");

    result += Words(((number / 100000) % 100), "lakh ");

    result += Words(((number / 1000) % 100), "thousand ");

    result += Words(((number / 100) % 10), "hundred ");

    if (number> 100 && number % 100)
    {
        result += "and ";
    }
    result += Words((number % 100), "");

    return result;
}
int main()
{
    cout << getWords(4517) << endl;
    return 0;
}
four thousand five hundred and seventeen

Java ծրագիր ամբողջ թվից անգլերեն բառերի համար

import java.text.DecimalFormat;

public class Integer_to_words {

  private static final String[] tens_names = {
    "", " ten", " twenty",
    " thirty", " forty", " fifty", " sixty", " seventy", " eighty",
    " ninety"
  };

  private static final String[] num_Names = {
    "", " one", " two", " three",
    " four", " five", " six", " seven", " eight", " nine", " ten",
    " eleven", " twelve", " thirteen", " fourteen", " fifteen",
    " sixteen", " seventeen", " eighteen", " nineteen"
  };

  private static String Upto_one_thousand(int number) {
    String soFar;

    if (number % 100<20) {
      soFar = num_Names[number % 100];
      number /= 100;
    } else {
      soFar = num_Names[number % 10];
      number /= 10;

      soFar = tens_names[number % 10] + soFar;
      number /= 10;
    }
    if (number == 0)
      return soFar;
    return num_Names[number] + " hundred" + soFar;
  }

  public static String convert(long number) {
    // 0 to 999 999 999 999
    if (number == 0) {
      return "zero";
    }

    String snumber = Long.toString(number);

    // pad with "0"
    String mask = "000000000000";
    DecimalFormat df = new DecimalFormat(mask);
    snumber = df.format(number);

    // XXXnnnnnnnnn
    int billions = Integer.parseInt(snumber.substring(0, 3));
    // nnnXXXnnnnnn
    int millions = Integer.parseInt(snumber.substring(3, 6));
    // nnnnnnXXXnnn
    int hundredThousands = Integer.parseInt(snumber.substring(6, 9));
    // nnnnnnnnnXXX
    int thousands = Integer.parseInt(snumber.substring(9, 12));

    String tradBillions;
    switch (billions) {
      case 0:
        tradBillions = "";
        break;
      case 1:
        tradBillions = Upto_one_thousand(billions) + " billion ";
        break;
      default:
        tradBillions = Upto_one_thousand(billions) + " billion ";
    }
    String result = tradBillions;

    String tradMillions;
    switch (millions) {
      case 0:
        tradMillions = "";
        break;
      case 1:
        tradMillions = Upto_one_thousand(millions) + " million ";
        break;
      default:
        tradMillions = Upto_one_thousand(millions) + " million ";
    }
    result = result + tradMillions;

    String tradHundredThousands;
    switch (hundredThousands) {
      case 0:
        tradHundredThousands = "";
        break;
      case 1:
        tradHundredThousands = "one thousand ";
        break;
      default:
        tradHundredThousands = Upto_one_thousand(hundredThousands) +
          " thousand ";
    }
    result = result + tradHundredThousands;

    String tradThousand;
    tradThousand = Upto_one_thousand(thousands);
    result = result + tradThousand;

    // remove extra spaces!
    return result.replaceAll("^\\s+", "").replaceAll("\\b\\s{2,}\\b", " ");
  }

  public static void main(String[] args) {
    System.out.println(convert(4517));
  }
}
four thousand five hundred seventeen

Բարդության վերլուծություն ամբողջ անգլերենից անգլերեն բառերի համար

Timeամանակի բարդություն

Օղակն աշխատում է կայուն ժամանակի համար, ուստի բարդությունը կլինի Ո (1)

Օժանդակ տարածություն

Օժանդակ տարածությունն է Ո (1) քանի որ լրացուցիչ տարածք չի պահանջվում: