Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
linberg
0 / 0 / 1
Регистрация: 10.11.2013
Сообщений: 24
1

обработка строки. Рядом с каждым символом написать какое-либо количество таких же символов

21.12.2013, 19:06. Просмотров 601. Ответов 12
Метки нет (Все метки)

Добрый вечер!
суть задания, нужно каким-либо образом сделать так, что бы в строке рядом с каждой буквой записалось какое-нибудь количество таких же букв.
например, Hello world! -> HHHeeelllooo wwwooorrrlllddd
с удовольствием выслушаю ваши идеи и предложения !)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2013, 19:06
Ответы с готовыми решениями:

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

Количество пар рядом стоящих одинаковых символов строки
Задание на 7 лабораторную работу Написать программу, которая принимает от...

Строки. Произвести над каждым символом операцию побитового И
Ввести в консоли строку из пяти символов, а затем произвести над каждым...

Произвести над каждым символом строки операцию побитового И, со вторым операндом равным 11010111.
Ввести в консоли строку из пяти символов, а затем произвести над каждым...

Сгенерировать две произвольные строки и определить, является ли какое-либо слово первой строки частью второй строки
Сгенерировать две произвольные строки и определить, является ли какое-либо...

12
Yanush
159 / 156 / 61
Регистрация: 28.09.2013
Сообщений: 288
Завершенные тесты: 1
21.12.2013, 23:21 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
#include <iostream>
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    char str[128];
    memset(&str, 0, sizeof(str));
 
    char *newStr = nullptr;
    
    std::cout << "Введите строку; ";
    std::cin.get(str, 128);
 
    int len = 0;
 
    int dNum;
 
    std::cout << "Введите число дублирования символов: ";
    std::cin >> dNum;
 
    dNum = dNum > 5 ? 5 : dNum;
 
    len = strlen(str) * dNum;
 
    std::cout << "Каждый символ в строке будет дублироваться " << dNum << " раз\n";
 
    newStr = new char[len + 1];
 
    int i = 0;
 
    for (int j = 0; j < len; j += dNum)
    {
        for (int k = 0; k < dNum; k++)
            newStr[j + k] = str[i];
        i++;
    }
    newStr[len] = '\0';
    std::cout << newStr << "\n";
 
    delete [] newStr;
 
    system("pause");
    return 0;
}
1
linberg
0 / 0 / 1
Регистрация: 10.11.2013
Сообщений: 24
22.12.2013, 15:28  [ТС] 3
ааааа, у меня ничего не работает -____- :С
0
Yanush
159 / 156 / 61
Регистрация: 28.09.2013
Сообщений: 288
Завершенные тесты: 1
22.12.2013, 16:26 4
Что пишет? (какие ошибки)
0
linberg
0 / 0 / 1
Регистрация: 10.11.2013
Сообщений: 24
22.12.2013, 20:42  [ТС] 5
он не пишет ошибки, он выводит черный экран. у меня в программе перед эти нужно посчитать количество символов в строке, программа считает, а дальше ничего не делает :С, там в конце как раз ваш способ... я его переделывала пол дня, так и не заработал

черт, в конце не совсем ваше, там как я понимаю цикл в цикле, и видимо ( голова уже совсем не соображает) я решила сделать что-то похожее


#include <iostream>
#include <string>
#include "work_4.h"
using namespace std;
int main()
{
char tmp [80];
char* pS; // Объявление указателя под строку tmp
cout <<"Please, enter string " << endl;
do // Начало цикла, в котором будут вводиться и обрабатываться строки
{
cin.getline(tmp,80); // Ввод строки
pS = new char [ strlen(tmp) + 1]; // Выделение памяти под строку и нулевой байт
strcpy_s (pS, strlen(tmp) + 1, tmp); // Копирование строки в pS

if( isdigit(*pS)) // Проверка условия: если цифра ,
break; //то строки больше не вводятся
{
int count = strlen (pS) ;
cout << " Sum of elements = " << count << endl ;
return 0 ;
delete [] pS ;
}

for (int i(0); pS[i]; i++)
for (int j(0); j < 100; j++)
cout << pS [i] << endl;
}while (true);

delete [] pS;
system("pause");
return 0;
}
0
MicM
824 / 483 / 324
Регистрация: 29.12.2009
Сообщений: 1,106
Завершенные тесты: 1
22.12.2013, 21:08 6
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
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
 
int main()
{
    std::string str,tmp;
    srand (time(NULL));
    std::cout <<"Stroka = ";
    getline (std::cin, str);
    int i = 0;
    int k = rand()%4 + 1;
    while (i<str.size())
    {
        tmp.erase (0,tmp.size());
        for (int j=1; j<=k; j++)
            tmp.append (1,str[i]);
        str.insert(i+1,tmp);
        i+=k+1;
    }
    std::cout <<str <<std::endl;
    return 0;
}
0
linberg
0 / 0 / 1
Регистрация: 10.11.2013
Сообщений: 24
22.12.2013, 21:12  [ТС] 7
как -то уж очень намудрено тут.... :С я еще таких способов не знаю
0
Yanush
159 / 156 / 61
Регистрация: 28.09.2013
Сообщений: 288
Завершенные тесты: 1
22.12.2013, 21:27 8
Вот результат у меня =(
1
Миниатюры
обработка строки. Рядом с каждым символом написать какое-либо количество таких же символов  
linberg
0 / 0 / 1
Регистрация: 10.11.2013
Сообщений: 24
22.12.2013, 21:36  [ТС] 9
эх ( буду дальше разбираться :3 может получится

Добавлено через 1 минуту
а можно как-нибудь эти строчки

C++
1
2
memset(&str, 0, sizeof(str));
  char *newStr = nullptr;
заменить на более простой язык?
просто мы такое еще не проходили и не совсем понимаю что это.
0
Yanush
159 / 156 / 61
Регистрация: 28.09.2013
Сообщений: 288
Завершенные тесты: 1
22.12.2013, 21:45 10
Если убирать эту строчку - char *newStr = nullptr; то придется создать char newStr[?]; а размер указать заранее самый максимальный, т.к. неизвестно по сколько раз будет дублироваться каждый символ пока не введено кол-во.
Тогда это newStr = new char[len + 1]; и это delete [] newStr; нужно будет убрать.
А эта функция - memset(&str, 0, sizeof(str)); - удаляет "мусор" из массива, чтобы потом не было разных непонятных символов.
1
MicM
824 / 483 / 324
Регистрация: 29.12.2009
Сообщений: 1,106
Завершенные тесты: 1
22.12.2013, 21:46 11
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
#include <iostream>
#include <cstring>
 
const int n = 128;
 
int main()
{
    char str[n],tmp[n];
    std::cin.get (str,n);
    int i,k = 2,j = 0;
    for (i=0; i<strlen(str); i++)
    {
        tmp[j] = str[i];
        j+=k+1;
    }
    tmp[j] = '\0';
    for (i=1; i<strlen(tmp); i+=k+1)
    {
        for (j=i; j<i+k; j++)
            tmp[j] = tmp[i-1];
    }
    strcpy (str,tmp);
    std::cout <<tmp <<std::endl;
    return 0;
}
1
linberg
0 / 0 / 1
Регистрация: 10.11.2013
Сообщений: 24
22.12.2013, 21:48  [ТС] 12
спасибо ^^ теперь стало понятней ))
0
linberg
0 / 0 / 1
Регистрация: 10.11.2013
Сообщений: 24
22.12.2013, 21:56  [ТС] 13
спасибо вам большое!
но....
может у меня MVS сломалась...
выводит вот что
0
Миниатюры
обработка строки. Рядом с каждым символом написать какое-либо количество таких же символов  
22.12.2013, 21:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2013, 21:56

Либо удваивая одиночные, либо заменяя сдвоенные одним символом, привести строку к заданному виду
Помогите решить эту задачу, я написал решение, но оно получилось огромным (73...

Дана строка. Показать номера символов, совпадающих с последним символом строки
Дана строка. Показать номера символов, совпадающих с последним символом строки.

Написать программу, удаляющую из строки заданное пользователем количество символов, начиная с заданной позиции
Доброго времени суток, уважаемые форумчане. Просьба помочь написать программу,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru