Форум программистов, компьютерный форум CyberForum.ru

Дана строка S. На её основе создать новую строку символы, которая вместо цифр будет содержать их название. - C++

Восстановить пароль Регистрация
 
Admiral1
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 6
22.06.2012, 06:49     Дана строка S. На её основе создать новую строку символы, которая вместо цифр будет содержать их название. #1
Дана строка S. На её основе создать новую строку символы, которая вместо цифр будет содержать их название.Например. Для S=" слово1язык4параграф" новой строкой будет "словоодинязыкчетырех параграф,"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2012, 06:49     Дана строка S. На её основе создать новую строку символы, которая вместо цифр будет содержать их название.
Посмотрите здесь:

C++ Дана строка S. Создать новую строку, состоящую из символов S, распо- ложенных в обратном порядке.
C++ Дана строка S и натуральное число N. Создать новую строку, включив в нее все слова из N букв исходной строки
Дана строка символов из цифр от 0 до 9. Составить новую строку... C++
Создать третью строку, которая должна содержать символы, присутствующие одновременно в обеих исходных строках C++
C++ Создать строку, которая будет содержать набор символов содержащихся в файле
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
22.06.2012, 10:17     Дана строка S. На её основе создать новую строку символы, которая вместо цифр будет содержать их название. #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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
#include <locale.h>
 
int main()
{
    setlocale(LC_ALL,"Russian");
 
    static char str1[256] = "слово1язык4параграф";
 
    char* nums[10] = { "нуль", "один", "два", "три", "четыре", 
        "пять", "шесть", "семь", "восем", "девять" };
 
    char str2[256] = "\0"; int q = 0;
    for (int i = 0; str1[i] != '\0'; i++)
        if (str1[i] >= 'а' && str1[i] <= 'я') 
            str2[q++] = str1[i];
        else {
            int val = str1[i] - '0';
            strcat(str2, nums[val]);
            q+=strlen(nums[val]);
        }
 
    printf("%s\n",str2);
 
    _getch();
 
    return 0;
}
Admiral1
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 6
26.06.2012, 10:53  [ТС]     Дана строка S. На её основе создать новую строку символы, которая вместо цифр будет содержать их название. #3
Разобрать функции, которые реализуют алгоритмы задач из этого задания. Исходные данные для вычислений должны передаваться через список параметров, а результат - через имя функции?
Joeymax
883 / 278 / 39
Регистрация: 31.03.2012
Сообщений: 740
26.06.2012, 12:14     Дана строка S. На её основе создать новую строку символы, которая вместо цифр будет содержать их название. #4
Можно немножко переписать цикл и будет выводить в том числе и для других символов в строке. Например пробелов. Впрочем из сообщения ТС этого может и не быть
C++
1
2
3
4
5
6
7
8
9
char s[255] = "слово 1 язык 4 параграф";
char *n[10] = {"нуль", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять"};
for (int i=0; s[i] != '\0'; i++) {
  if (s[i] >= '0' && s[i] <= '9') {
    std::cout << n[s[i] - '0'];
  } else {
    std::cout << s[i];
  }
}
Aesonet
23 / 23 / 1
Регистрация: 04.04.2012
Сообщений: 119
26.06.2012, 12:15     Дана строка S. На её основе создать новую строку символы, которая вместо цифр будет содержать их название. #5
C++
1
int val = str1[i] - '0';
А что делает эта строка ?
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
26.06.2012, 18:28     Дана строка S. На её основе создать новую строку символы, которая вместо цифр будет содержать их название. #6
целочисленной переменной val присваивается значение str1[i] минус символ 0.
Yandex
Объявления
26.06.2012, 18:28     Дана строка S. На её основе создать новую строку символы, которая вместо цифр будет содержать их название.
Ответ Создать тему
Опции темы

Текущее время: 22:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru