0 / 0 / 0
Регистрация: 30.05.2018
Сообщений: 2
1

Необходимо заменить числа (от 0 до 1000) в тексте на слова

30.05.2018, 19:21. Показов 1007. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот полное задание
Разработать программу которая в массиве строк заменяет все числа от 0 до 1000 числительными.

Добавлено через 1 минуту
получилось написать только функции которая меняет число на строку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <string.h>
using namespace std;
void zam(int k){
int n;
string s;
cin >> n;
if(n==1000){
    s="тысяча";
    }else{
    s="";
    switch(n/100){
        case 1:s="сто";break;
        case 2:s="двести";break;
        case 3:s="триста";break;
        case 4:s="четыреста";break;
        case 5:s="пятьсот";break;
        case 6:s="шестьсот";break;
        case 7:s="семьсот";break;
        case 8:s="восемьсот";break;
        case 9:s="девятьсот";break;
    }
    if(n >= 100 && n%100 >= 10){ s+=" ";}
    switch((n%100)/10){
        case 2:s=s+"двадцать";break;
        case 3:s=s+"тридцать";break;
        case 4:s=s+"сорок";break;
        case 5:s=s+"пятьдесят";break;
        case 6:s=s+"шестьдесят";break;
        case 7:s=s+"семьдесят";break;
        case 8:s=s+"восемьдесят";break;
        case 9:s=s+"девяносто";break;
    }
    if(n%100>=10&n%100<20){
        switch(n%100){
            case 10:s=s+"десять";break;
            case 11:s=s+"одиннадцать";break;
            case 12:s=s+"двенадцать";break;
            case 13:s=s+"тринадцать";break;
            case 14:s=s+"четырнадцать";break;
            case 15:s=s+"пятнадцать";break;
            case 16:s=s+"шестнадцать";break;
            case 17:s=s+"семнадцать";break;
            case 18:s=s+"восемнадцать";break;
            case 19:s=s+"девятнадцать";break;
        }
        }else{
        if(n%10 != 0 && (n % 100 >= 20 || n >= 100)){ s+=" ";}
            switch(n%10){
            case 1:s=s+"один";break;
            case 2:s=s+"два";break;
            case 3:s=s+"три";break;
            case 4:s=s+"четыре";break;
            case 5:s=s+"пять";break;
            case 6:s=s+"шесть";break;
            case 7:s=s+"семь";break;
            case 8:s=s+"восемь";break;
            case 9:s=s+"девять";break;
            }
        }
    }
cout << s << endl;}
int main(){
   
return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.05.2018, 19:21
Ответы с готовыми решениями:

Заменить в строке все слова-числа от 0 до 1000 их словесной записью
Решение такое. Но поскольку проходим строки, мне оно кажется неверным setlocale(LC_ALL, &quot;rus&quot;);...

В тексте слова заданной длины заменить указанной подстрокой, длина которой может не совпадать с длиной слова
В тексте слова заданной длины заменить указанной подстрокой, длина которой может не совпадать с...

В тексте слова заданной длины заменить указанной подстрокой, длина которой может не совпадать с длиной слова
Надо написать код для этой проги на Dev-C++ (если что версия 4.9.9.2) (консольное приложение), ума...

В тексте все слова заданной длины заменить указанной подстрокой, длина которой может не совпадать с длиной заменяемого слова
В процессе изучения C# столкнулась с одной задачей. Все бы ничего, но из-за требований к ее решению...

2
6 / 6 / 8
Регистрация: 22.05.2018
Сообщений: 18
30.05.2018, 20:20 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <string>
#include <iostream>
 
std::string num2str(unsigned int num)
{
  if(num > 1000) {
    return "больше 1000";
  }
 
  if(num == 1000) {
    return "тысяча";
  }
 
  const char* hundreds[10] = { "", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот" };
  std::string str = hundreds[num / 100];
  num -= num / 100 * 100;
 
  if(num > 19) {
    if(str.size()) {
      str.append(" ");
    }
 
    const char* tens[10] = { "", "", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто"};
    str.append(tens[num / 10]);
    num -= num / 10 * 10;
  }
 
  if(str.size() && num) {
    str.append(" ");
  }
  const char* units[20] = { "", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять", "десять", "одиннадцать", "двенадцать",
    "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать" };
  str.append(units[num]);
 
  return str;
}
 
int main() {
  setlocale(LC_ALL, "Russian");
 
  std::string text = "la-la-la-z! 145 la-la-la 978 la 12 la 1 la 9 la 96 la 14 la 100 la 20";
  std::cout << text << std::endl;
 
  for(size_t i = 0; i < text.size(); i++) {
    if(text[i] >= '0' && text[i] <= '9') {
      std::string num;
      size_t numPos = i;
 
      while(i < text.size() && text[i] >= '0' && text[i] <= '9') {
        num += text[i++];
      }
      text.replace(numPos, num.size(), num2str(stoi(num)));
    }
  }
 
  std::cout << text << std::endl;
  getchar();
 
  return 0;
}
0
17 / 12 / 10
Регистрация: 05.03.2016
Сообщений: 184
30.05.2018, 21:32 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <cstring>
#include <clocale>
#include <cctype>
#include <cstdio>
void func(char s[], int n) {
    int x;
    s[0] = '\0';
    if(n > 999) {
        strcpy(s, "Тысяча");
        n -= 1000;
        if(n) strcat(s, " ");
        else return;
    }
    x = (n / 100) % 10;
    if(x) {
        switch(x) {
            case 1: strcat(s, "сто");        break;
            case 2: strcat(s, "двести");  break;
            case 3: strcat(s, "триста");  break;
            case 4: strcat(s, "четыреста");    break;
            case 5: strcat(s, "пятьсот");    break;
            case 6: strcat(s, "шестьсот");  break;
            case 7: strcat(s, "семьсот");    break;
            case 8: strcat(s, "восемьсот");    break;
            case 9: strcat(s, "девятьсот");    break;
        }
        n %= 100;
        if(n) strcat(s, " ");
        else {
            s[0] = toupper(s[0]);
            return;
        }
    }
    x = n / 10;
    if(x > 1) {
        switch(x) {
            case 1: strcat(s, "десять");      break;
            case 2: strcat(s, "двадцать");      break;
            case 3: strcat(s, "тридцать");      break;
            case 4: strcat(s, "сорок");            break;
            case 5: strcat(s, "пятьдесят");        break;
            case 6: strcat(s, "шестьдесят");  break;
            case 7: strcat(s, "семьдесят");        break;
            case 8: strcat(s, "восемьдесят");    break;
            case 9: strcat(s, "девяносто");        break;
        }
        n %= 10;
        if(n) strcat(s, " ");
        else {
            s[0] = toupper(s[0]);
            return;
        };
    }
    else if(n > 9) {
        switch(n % 10) {
            case 0: strcat(s, "десять");      break;
            case 1: strcat(s, "одиннадцать");    break;
            case 2: strcat(s, "двенадцать");  break;
            case 3: strcat(s, "тринадцать");  break;
            case 4: strcat(s, "четырнадцать");  break;
            case 5: strcat(s, "пятнадцать");  break;
            case 6: strcat(s, "шестнадцать");    break;
            case 7: strcat(s, "семнадцать");  break;
            case 8: strcat(s, "восемнадцать");  break;
            case 9: strcat(s, "девятнадцать");  break;
        }
        s[0] = toupper(s[0]);
        return;
    }
    if(n == '\0') strcpy(s, "Ноль");
    switch(n) {
        case 1: strcat(s, "один");      break;
        case 2: strcat(s, "два");        break;
        case 3: strcat(s, "три");        break;
        case 4: strcat(s, "четыре");  break;
        case 5: strcat(s, "пять");      break;
        case 6: strcat(s, "шесть");        break;
        case 7: strcat(s, "семь");      break;
        case 8: strcat(s, "восемь");  break;
        case 9: strcat(s, "девять");  break;
    }
    s[0] = toupper(s[0]);
}
int main() {
    setlocale(LC_ALL,"Russian" );
    char s[128] = "";
    int n;
    scanf("%d", &n);
    func(s, n);
    printf("%s", s);
    
}
0
30.05.2018, 21:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.05.2018, 21:32
Помогаю со студенческими работами здесь

Необходимо вывести все числа от 1000 до 2000, которые делятся на 6
Подскажите с решением задачи на ассемблере. Необходимо вывести все числа от 1000 до 2000, которые...

Необходимо определить в тексте позицию последнего появления определённого слова
Пожалуйсто помогите решить задачку в прогремме Паскаль АВС: Дана строка символов. Необходимо...

В тексте слова заменить подстрокой
Здравствуйте, помогите пожалуйста с заданием. Желательно максимально просто. При выполнении...

Заменить слова в тексте. (Регулярные выражения)
Нужно заменить все слова old в тексте на new. Пробовал так, но такой способ &quot;заглатывает&quot;...

Заменить в тексте все слова he и He на George
Условие У Джорджа есть текст на английском языке, в котором он упоминается в третьем лице. Джордж...

Заменить одни слова в тексте на другие
Дан текст: Сегодня у Джонни большой день. Джонни исполняется шесть лет, и по этому случаю он...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru