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

Добавить после каждой цифры 2 нуля - C++

Восстановить пароль Регистрация
 
prettynetty
2 / 2 / 1
Регистрация: 09.07.2012
Сообщений: 14
21.07.2012, 20:33     Добавить после каждой цифры 2 нуля #1
Строки. Добавить после каждой цифры 2 нуля.
например:
ввели: а1 б2 абв
получили: а100 б200 абв

на данный момент при одной цифре выдает верно+мусор, при двух и более цифрах выдает ересь.

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
#include <iostream>
#include <ctype.h>
#include <stdio.h>
#include <windows.h>
#include <math.h>
#include <string>
#include<conio.h>
using namespace std;
 
main(){
    SetConsoleOutputCP(1251);
    system("chcp 1251");
    char text[1024];
    char text2[1024], text3[1024];
    int  buk=0, jm, jmm, sl2, sl3, jmmm;
    long i,j,sLen;
 
    cout<<"Введите текст: ";
    fflush(stdin);
    gets(text);
    sLen = strlen(text);
 
    for(i=0; i<sLen; i++){
        switch(buk)
        {
        case 0:if(text[i]=='0' || text[i]=='1' || text[i]=='2' || text[i]=='3' || text[i]=='4' || 
        text[i]=='5' || text[i]=='6' || text[i]=='7' || text[i]=='8' || text[i]=='9' ){
        for(j=0; j<=i; j++)
        text2[j]=text[j];
        text2[j]='0';
        text2[j+1]='0';
        sl2=j+1+1;
        jm=j;
 
        for(jmmm=jm, jmm=0; jmmm<sLen; jmmm++, jmm++)
        text3[jmm]=text[jmmm];
        sl3=jmm;
 
 
        for(j=0; j<=sl2; j++)
            text[j]=text2[j];
        
        for(j=sl2, jm=0; jm<=sl3; j++, jm++)
            text[j]=text3[jm];
        
        buk=2;
            } break;
        case 1: buk--;break;
        case 2: buk--;break;
 
        }
    }
 
    cout<<"Текст после смены\n";
    cout<<text<<endl;
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.07.2012, 20:33     Добавить после каждой цифры 2 нуля
Посмотрите здесь:

Есть двумерный массив символов, в каждой строке находится номер, мне надо к каждой строке добавить "8029" как это сделать? C++
C++ Массив строк в с++. Вывести строки, в которых есть цифры. В каждой строке удалить все цифры
Даны три квадратные матрицы. Сформировать вектор, состоящий из минимальных элементов каждой матрицы, отличных от нуля C++
Массив (Сделать программу, которая после каждой цифры в тексте вставляет в скобках её текстовый эквивалент) C++
Определить количество элементов после первого нуля C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Intel~lect
 Аватар для Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
21.07.2012, 21:01     Добавить после каждой цифры 2 нуля #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
#include <iostream>
#include <windows.h>
 
using namespace std;
 
int main()
{
    SetConsoleCP(1251);  SetConsoleOutputCP(1251);
 
    char text[1024], text_res[1024];
 
    cout << "Введите текст: ";
    cin.getline(text, 1024);
 
    int j=0;
    for (int i=0; i<strlen(text); i++)
    {
        text_res[j++] = text[i];
 
        if (text[i]>='0' && text[i]<='9' )     // если цифра ...
        {
            text_res[j] = text_res[j+1] = '0';
            j += 2;
        }
    }
 
    text_res[j] = '\0';     // завершим строку
 
    cout << text_res << endl;
 
 
    system("pause");
    return 0;
}
Миниатюры
Добавить после каждой цифры 2 нуля  
Intel~lect
 Аватар для Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
21.07.2012, 21:24     Добавить после каждой цифры 2 нуля #3
Вместо этой строчки
C++
1
if (text[i]>='0' && text[i]<='9' )
можно вот так сделать:
C++
1
if ( isdigit(text[i]) )
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
22.07.2012, 00:09     Добавить после каждой цифры 2 нуля #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
 
std::string & add_00_after_digits(std::string & str){
    for ( size_t pos = str.find_first_of("0123456789"); pos != std::string::npos; pos = str.find_first_of("0123456789", pos + 3) )
        str.insert(pos + 1, "00");
    return str;
}
 
int main() {
    std::string str;
    
    while ( std::cout << "String: " && std::getline(std::cin, str) && ! str.empty() )
        std::cout << "Result: " << add_00_after_digits(str) << std::endl;
    
    return 0;
}
Yandex
Объявления
22.07.2012, 00:09     Добавить после каждой цифры 2 нуля
Ответ Создать тему
Опции темы

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