Рубрики

Программа для преобразования заданного числа в слова

Напишите код для преобразования данного числа в слова. Например, если в качестве входных данных указано «1234», выходные данные должны быть «одна тысяча двести тридцать четыре».

Ниже приводится реализация для того же. Код поддерживает числа до 4 цифр, т. Е. Числа от 0 до 9999. Идея заключается в создании массивов, которые хранят отдельные части выходных строк. Один массив используется для однозначных цифр, один для чисел от 10 до 19, один для 20, 30, 40, 50 и т. Д., А другой для степеней 10.
Данное число разделено на две части: первые две цифры и последние две цифры, и эти две части печатаются отдельно.

С

/ * C программа для печати заданного числа словами. Программа обрабатывает
цифры от 0 до 9999 * /
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

  
/ * Функция, которая печатает данное число в словах * /

void convert_to_words(char *num)

{

    int len = strlen(num); // Получить количество цифр в данном номере

  

    / * Базовые случаи * /

    if (len == 0) {

        fprintf(stderr, "empty string\n");

        return;

    }

    if (len > 4) {

        fprintf(stderr, "Length more than 4 is not supported\n");

        return;

    }

  

    / * Первая строка не используется, это сделать

        индексирование массива просто * /

    char *single_digits[] = { "zero", "one", "two"

                               "three", "four","five"

                               "six", "seven", "eight", "nine"};

  

    / * Первая строка не используется, это сделать

        индексирование массива просто * /

    char *two_digits[] = {"", "ten", "eleven", "twelve"

                               "thirteen", "fourteen",

                               "fifteen", "sixteen"

                               "seventeen", "eighteen", "nineteen"};

  

    / * Первые две строки не используются, они должны сделать

        индексирование массива просто * /

    char *tens_multiple[] = {"", "", "twenty", "thirty", "forty", "fifty",

                            "sixty", "seventy", "eighty", "ninety"};

  

    char *tens_power[] = {"hundred", "thousand"};

  

    / * Используется только для целей отладки * /

    printf("\n%s: ", num);

  

    / * Для однозначного числа * /

    if (len == 1) {

        printf("%s\n", single_digits[*num - '0']);

        return;

    }

  

    / * Повторять, пока num не равен '/ 0' * /

    while (*num != '\0') {

  

        / * Путь кода для первых 2 цифр * /

        if (len >= 3) {

            if (*num -'0' != 0) {

                printf("%s ", single_digits[*num - '0']);

                printf("%s ", tens_power[len-3]); // здесь длина может быть 3 или 4

            }

            --len;

        }

  

        / * Путь кода для последних 2 цифр * /

        else {

            / * Нужно явно обработать 10-19. Сумма двух цифр

            используется в качестве индекса массива строк "two_digits" * /

            if (*num == '1') {

                int sum = *num - '0' + *(num + 1)- '0';

                printf("%s\n", two_digits[sum]);

                return;

            }

  

            / * Нужно явно обработать 20 * /

            else if (*num == '2' && *(num + 1) == '0') {

                printf("twenty\n");

                return;

            }

  

            / * Остальные двухзначные числа, т. Е. От 21 до 99 * /

            else {

                int i = *num - '0';

                printf("%s ", i? tens_multiple[i]: "");

                ++num;

                if (*num != '0')

                    printf("%s ", single_digits[*num - '0']);

            }

        }

        ++num;

    }

}

  
/ * Программа драйвера для проверки вышеуказанной функции * /

int main(void)

{

    convert_to_words("9923");

    convert_to_words("523");

    convert_to_words("89");

    convert_to_words("8989");

  

    return 0;

}

Джава

// Java-программа для печати заданного числа в словах.
// программа обрабатывает числа от 0 до 9999

  

class GFG

{
// Функция, которая печатает
// заданное число в словах

static void convert_to_words(char[] num)

{

    // Получить количество цифр

    // в данном номере

    int len = num.length; 

  

    // Базовые случаи

    if (len == 0

    {

        System.out.println("empty string");

        return;

    }

    if (len > 4

    {

        System.out.println("Length more than 4 is not supported");

        return;

    }

  

    / * Первая строка не используется, это сделать

        индексирование массива просто * /

    String[] single_digits = new String[]{ "zero", "one"

                                        "two", "three", "four",

                                        "five", "six", "seven"

                                            "eight", "nine"};

  

    / * Первая строка не используется, это сделать

        индексирование массива просто * /

    String[] two_digits = new String[]{"", "ten", "eleven", "twelve"

                                        "thirteen", "fourteen",

                                        "fifteen", "sixteen", "seventeen",

                                        "eighteen", "nineteen"};

  

    / * Первые две строки не используются, они упрощают индексацию массива * /

    String[] tens_multiple = new String[]{"", "", "twenty", "thirty", "forty"

                                            "fifty","sixty", "seventy"

                                            "eighty", "ninety"};

  

    String[] tens_power = new String[] {"hundred", "thousand"};

  

    / * Используется только для целей отладки * /

    System.out.print(String.valueOf(num)+": ");

  

    / * Для однозначного числа * /

    if (len == 1

    {

        System.out.println(single_digits[num[0] - '0']);

        return;

    }

  

    / * Повторять пока num

        это не '/ 0' * /

    int x = 0;

    while (x < num.length) 

    {

  

        / * Путь кода для первых 2 цифр * /

        if (len >= 3)

        {

            if (num[x]-'0' != 0)

            {

                System.out.print(single_digits[num[x] - '0']+" ");

                System.out.print(tens_power[len - 3]+" "); 

                // здесь длина может быть 3 или 4

            }

            --len;

        }

  

        / * Путь кода для последних 2 цифр * /

        else

        {

            / * Нужно явно обработать

            10-19. Сумма двух цифр

            используется в качестве индекса "two_digits"

            массив строк * /

            if (num[x] - '0' == 1

            {

                int sum = num[x] - '0'

                    num[x] - '0';

                System.out.println(two_digits[sum]);

                return;

            }

  

            / * Нужно явно обработать 20 * /

            else if (num[x] - '0' == 2 && 

                    num[x + 1] - '0' == 0)

            {

                System.out.println("twenty");

                return;

            }

  

            / * Остальные две цифры

            числа от 21 до 99 *

            else

            {

                int i = (num[x] - '0');

                if(i > 0)

                System.out.print(tens_multiple[i]+" ");

                else

                System.out.print("");

                ++x;

                if (num[x] - '0' != 0)

                    System.out.println(single_digits[num[x] - '0']);

            }

        }

        ++x;

    }

}

  
// Код драйвера

public static void main(String[] args)

{

convert_to_words("9923".toCharArray());

convert_to_words("523".toCharArray());

convert_to_words("89".toCharArray());

convert_to_words("8989".toCharArray());

}
}
// Этот код добавлен
// Митхун Кумар

python3

# Программа Python для печати заданного числа в
# слова. Программа обрабатывает номера
№ от 0 до 9999

  
# Функция, которая печатает
# номер в словах

def convert_to_words(num):

      

    # Получить количество цифр

    # в данном номере

    l = len(num); 

  

    # Базовые случаи

    if (l == 0):

        print("empty string");

        return;

  

    if (l > 4):

        print("Length more than 4 is not supported");

        return;

  

    # Первая строка не используется,

    # сделать индексирование массива простым

    single_digits = ["zero", "one", "two", "three"

                     "four", "five", "six", "seven"

                     "eight", "nine"];

  

    # Первая строка не используется,

    # сделать индексирование массива простым

    two_digits = ["", "ten", "eleven", "twelve", 

                  "thirteen", "fourteen", "fifteen"

                  "sixteen", "seventeen", "eighteen",

                  "nineteen"];

  

    # Первые две строки не используются,

    # они должны упростить индексацию массива

    tens_multiple = ["", "", "twenty", "thirty", "forty",

                     "fifty", "sixty", "seventy", "eighty"

                     "ninety"];

  

    tens_power = ["hundred", "thousand"];

  

    # Используется только для целей отладки

    print(num, ":", end = " ");

  

    # Для однозначного числа

    if (l == 1): 

        print(single_digits[ord(num[0]) - '0']);

        return;

  

    # Итерировать, пока num не равен / 0

    x = 0;

    while (x < len(num)): 

          

        # Путь к коду для первых 2 цифр

        if (l >= 3):

            if (ord(num[x]) - 48 != 0):

                print(single_digits[ord(num[x]) - 48], 

                                           end = " ");

                print(tens_power[l - 3], end = " "); 

                # здесь длина может быть 3 или 4

                  

            l -= 1;

              

        # Путь кода для последних 2 цифр

        else:

              

            # Нужно явно обработать

            № 10-19. Сумма двух цифр

            # используется как индекс "two_digits"

            # массив строк

            if (ord(num[x]) - 48 == 1): 

                sum = (ord(num[x]) - 48 + 

                       ord(num[x]) - 48);

                print(two_digits[sum]);

                return;

  

            # Надо явно обрабатывать 20

            elif (ord(num[x]) - 48 == 2 and 

                  ord(num[x + 1]) - 48 == 0):

                print("twenty");

                return;

                  

            # Остальные две цифры

            число чисел от 21 до 99

            else:

                i = ord(num[x]) - 48;

                if(i > 0):

                    print(tens_multiple[i], end = " ");

                else:

                    print("", end = "");

                x += 1;

                if(ord(num[x]) - 48 != 0):

                    print(single_digits[ord(num[x]) - 48]);

        x += 1;

  
Код водителя

convert_to_words("9923");

convert_to_words("523");

convert_to_words("89");

convert_to_words("8989");

  
# Этот код добавлен
# Митхун Кумар

C #

// C # программа для печати заданного
// число в словах. Программа
// обрабатывает числа от 0 до 9999

using System;

  

class GFG 


// Функция, которая печатает
// заданное число в словах

static void convert_to_words(char[] num) 

    // Получить количество цифр

    // в данном номере

    int len = num.Length; 

  

    // Базовые случаи

    if (len == 0) 

    

        Console.WriteLine("empty string"); 

        return

    

    if (len > 4) 

    

        Console.WriteLine("Length more than "

                          "4 is not supported"); 

        return

    

  

    / * Первая строка не используется,

       это сделать индексирование массива простым * /

    string[] single_digits = new string[]{ "zero", "one", "two"

                                           "three", "four", "five"

                                           "six", "seven", "eight"

                                           "nine"}; 

  

    / * Первая строка не используется,

       это сделать индексирование массива простым * /

    string[] two_digits = new string[]{"", "ten", "eleven", "twelve"

                                       "thirteen", "fourteen"

                                       "fifteen", "sixteen", "seventeen"

                                       "eighteen", "nineteen"}; 

  

    / * Первые две строки не используются,

       они должны упростить индексацию массива * /

    string[] tens_multiple = new string[]{"", "", "twenty", "thirty"

                                          "forty", "fifty","sixty"

                                          "seventy", "eighty", "ninety"}; 

  

    string[] tens_power = new string[] {"hundred", "thousand"}; 

  

    / * Используется только для целей отладки * /

    Console.Write((new string(num)) + ": "); 

  

    / * Для однозначного числа * /

    if (len == 1) 

    

        Console.WriteLine(single_digits[num[0] - '0']); 

        return

    

  

    / * Повторять пока num

        это не '/ 0' * /

    int x = 0; 

    while (x < num.Length) 

    

  

        / * Путь кода для первых 2 цифр * /

        if (len >= 3) 

        

            if (num[x]-'0' != 0) 

            

                Console.Write(single_digits[num[x] - '0'] + " "); 

                Console.Write(tens_power[len - 3] + " "); 

                  

                // здесь длина может быть 3 или 4

            

            --len; 

        

  

        / * Путь кода для последних 2 цифр * /

        else

        

            / * Нужно явно обработать

            10-19. Сумма двух цифр

            используется в качестве индекса "two_digits"

            массив строк * /

            if (num[x] - '0' == 1) 

            

                int sum = num[x] - '0'

                          num[x] - '0'

                Console.WriteLine(two_digits[sum]); 

                return

            

  

            / * Нужно явно обработать 20 * /

            else if (num[x] - '0' == 2 && 

                     num[x + 1] - '0' == 0) 

            

                Console.WriteLine("twenty"); 

                return

            

  

            / * Остальные две цифры

            числа от 21 до 99 *

            else

            

                int i = (num[x] - '0'); 

                if(i > 0) 

                Console.Write(tens_multiple[i] + " "); 

                else

                Console.Write(""); 

                ++x; 

                if (num[x] - '0' != 0) 

                    Console.WriteLine(single_digits[num[x] - '0']); 

            

        

        ++x; 

    

  
// Код драйвера

public static void Main() 

    convert_to_words("9923".ToCharArray()); 

    convert_to_words("523".ToCharArray()); 

    convert_to_words("89".ToCharArray()); 

    convert_to_words("8989".ToCharArray()); 


  
// Этот код добавлен
// Mits

PHP

<?php
// PHP программа для печати заданного
// число в словах.
// программа обрабатывает числа
// от 0 до 9999

  
// Функция, которая печатает
// заданное число в словах

function convert_to_words($num)

{

    // Получить количество цифр

    // в данном номере

    $len = strlen($num); 

  

    // Базовые случаи

    if ($len == 0) 

    {

        echo "empty string\n";

        return;

    }

    if ($len > 4) 

    {

        echo "Length more than 4 "

               "is not supported\n";

        return;

    }

  

    / * Первая строка не используется,

    это сделать индексирование массива простым * /

    $single_digits = array("zero", "one", "two"

                           "three", "four", "five"

                           "six", "seven", "eight"

                                           "nine");

  

    / * Первая строка не используется,

    это сделать индексирование массива простым * /

    $two_digits = array("", "ten", "eleven", "twelve"

                        "thirteen", "fourteen", "fifteen"

                        "sixteen", "seventeen", "eighteen"

                                               "nineteen");

  

    / * Первые две строки не используются,

    они должны упростить индексацию массива * /

    $tens_multiple = array("", "", "twenty", "thirty"

                           "forty", "fifty", "sixty"

                           "seventy", "eighty", "ninety");

  

    $tens_power = array("hundred", "thousand");

  

    / * Используется только для целей отладки * /

    echo $num.": ";

  

    / * Для однозначного числа * /

    if ($len == 1) 

    {

        echo $single_digits[$num[0] - '0'] . " \n";

        return;

    }

  

    / * Повторять пока num

        это не '/ 0' * /

    $x = 0;

    while ($x < strlen($num)) 

    {

  

        / * Путь кода для первых 2 цифр * /

        if ($len >= 3)

        {

            if ($num[$x]-'0' != 0)

            {

                echo $single_digits[$num[$x] - '0'] . " ";

                echo $tens_power[$len - 3] . " "

                // здесь длина может быть 3 или 4

            }

            --$len;

        }

  

        / * Путь кода для последних 2 цифр * /

        else 

        {

            / * Нужно явно обработать

            10-19. Сумма двух цифр

            используется в качестве индекса "two_digits"

            массив строк * /

            if ($num[$x] - '0' == 1) 

            {

                $sum = $num[$x] - '0'

                       $num[$x] - '0';

                echo $two_digits[$sum] . " \n";

                return;

            }

  

            / * Нужно явно обработать 20 * /

            else if ($num[$x] - '0' == 2 && 

                     $num[$x + 1] - '0' == 0)

            {

                echo "twenty\n";

                return;

            }

  

            / * Остальные две цифры

            числа от 21 до 99 *

            else 

            {

                $i = $num[$x] - '0';

                if($i > 0)

                echo $tens_multiple[$i] . " ";

                else

                echo "";

                ++$x;

                if ($num[$x] - '0' != 0)

                    echo $single_digits[$num[$x] - 

                                     '0'] . " \n";

            }

        }

        ++$x;

    }

}

  
// Код драйвера

convert_to_words("9923");

convert_to_words("523");

convert_to_words("89");

convert_to_words("8989");

  
// Этот код добавлен
// Митхун Кумар
?>


Выход:

9923: nine thousand nine hundred twenty three
523: five hundred twenty three
89: eighty nine
8989: eight thousand nine hundred eighty nine

Эта статья составлена Нарендрой Кангралкар . Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Программа для преобразования заданного числа в слова

0.00 (0%) 0 votes