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

В исходную строку добавьте после каждого символа его номер по порядку в алфавите - C++

Восстановить пароль Регистрация
 
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 1
21.06.2014, 14:14     В исходную строку добавьте после каждого символа его номер по порядку в алфавите #1
В исходную строку добавьте после каждого символа его номер по порядку в алфавите.
Я сравниваю строку со строкой алфавита и если символы равны,то индекс преобразую в строку и копирую в вспомогающую строку сам символ и номер.
При abc работает выводит a1b1c1 при большем количестве символов abcdefgklmn выводт kkkkkkkkkkkkkkkkkkkkkk
Помогите пожалуйста!
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
#include <stdio.h>
#include <conio.h>
#include < stdlib.h>
#include <string.h>
 
void main()
{
    clrscr();
 char str[100];
 char str2[100];
 char strmain[]="abcdefghijklmnopqrstuvwxyz";
 int k=0;
    printf("Enter string  ");
    scanf("%s",&str);
    for(int i=0 ;i< strlen(str); i++) {
    for(int j=0 ;j< strlen(strmain); j++) {
            if(str[i]==strmain[j]) {
                str2[k]=str[i];
                k++;
                char h[2];
                sprintf(h,"%d",j+1);
                if(j+1<10) {
                str2[k]=h[0];
                k++;
                }
            else
                {
                str2[k]=h[0];
                k++;
                str2[k]=h[1];
                k++;
                }
            }
    }
    }
    strcpy(str,str2);
    printf("%s",str);
     getch ();  
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2014, 14:14     В исходную строку добавьте после каждого символа его номер по порядку в алфавите
Посмотрите здесь:

Разработать рекурсивную функцию, которая после каждого вхождения символа a в строку s добавляет символ b C++
C++ Функция, определяющая позицию самого первого вхождения заданного символа в исходную строку
Дана строка символов и некоторый символ sym. Сформируйте новую строку, вставив после каждого вхождения символа sym запятую. C++
В исходную строку добавьте после каждого символа его номер по порядку в алфавите C++
C++ Дан символ C и строки S, S0. После каждого вхождения символа C в строку S вставить строку S0
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
21.06.2014, 15:31     В исходную строку добавьте после каждого символа его номер по порядку в алфавите #2
Цитата Сообщение от DmitryM5 Посмотреть сообщение
При abc работает выводит a1b1c1
Так должно же выводить a1b2c3
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
#include <iostream>
#include <string>
#include <sstream>
#include <conio.h>
 
int main()
{
    std::string str, abc("abcdefghijklmnopqrstuvwxyz");
    std::cout << "Type string: "; getline(std::cin, str);
    for(unsigned i = 0; i < str.size(); i++)
    {
        unsigned found = abc.find(str[i]);
        std::string temp;
        temp = str[i];          
        std::ostringstream convert; 
        convert << found + 1;             
        temp += convert.str();
        str.replace(i, 1, temp);
        i += temp.size() - 1;
    }
    
    std::cout << str;
    
    std::cout << "\nOperation succeeded\n";
    getch();
    return 0;
}
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 1
21.06.2014, 19:24  [ТС]     В исходную строку добавьте после каждого символа его номер по порядку в алфавите #3
Добавлено через 3 часа 16 минут
ой ошибся a1b2c3...
up

Добавлено через 19 минут
GuGo1991 спасибо конечно,но я пишу на Borland'e и там нету половины функций и методов как у вас в коде.
Поэтому бы хотелось найти ошибки у себя...
Вот обновленный код,ошибка в том что если номер буквы в алфафите >=10 то берется первая цифра (1) и пишется в вспомогательную строку,а почему то вторая(0) игнорируется...То есть с двузначными номерами символов алфавита проблема.Прошу помощи.

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
#include <stdio.h>
#include <conio.h>
#include < stdlib.h>
#include <string.h>
 
void main()
{
    clrscr();
 char str[100];
 char str2[100];
 char strmain[]="abcdefghijklmnopqrstuvwxyz";
 
 int k=0;
    printf("Enter string  ");
    scanf("%s",&str);
    for(int i=0 ;i< strlen(str); i++) {
    for(int j=0 ;j< strlen(strmain); j++) {
            if(str[i]==strmain[j]) {
                str2[k]=str[i];
                k++;
                char h[2];
                sprintf(h,"%d",j+1);
                if(j+1<10) {
                str2[k]=h[0];
                k++;
                break;
                }
            else
                {
                str2[k]=h[0];
                k++;
                str2[k]=h[1];
                k++;
                break;
                }
            }
    }
    }
    strcpy(str,str2);
    printf("%s",str);
     getch ();  
}
tehnar5
31 / 31 / 12
Регистрация: 03.05.2011
Сообщений: 84
21.06.2014, 19:27     В исходную строку добавьте после каждого символа его номер по порядку в алфавите #4
Цитата Сообщение от DmitryM5 Посмотреть сообщение
scanf("%s",&str);
Вот это надо заменить на
C++
1
scanf("%s", str)
, то будет лучше.
И еще - строку str имеет смысл вначале заполнить нулями:
C++
1
for (int i = 0; i < 100; i++) str[i] = 0;
Так как, в противном случае, в ней может оказаться все что угодно и может выводиться какой-то мусор вместо нужного
BatonPro
30 / 30 / 24
Регистрация: 21.06.2014
Сообщений: 81
21.06.2014, 20:08     В исходную строку добавьте после каждого символа его номер по порядку в алфавите #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Строка h должна иметь длину 3 символа, т.к. функция sprintf автоматически записывает 0 в конец строки.
C++
1
char h[3];
Также следует перед
C++
1
strcpy(str,str2);
записать 0 в конец строки str2 (индекс k, после выхода из цикла будет указывать на конец строки )
C++
1
str2[k]=0;
Yandex
Объявления
21.06.2014, 20:08     В исходную строку добавьте после каждого символа его номер по порядку в алфавите
Ответ Создать тему
Опции темы

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