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

Сформировать строку вдвое большей длины, где каждый символ дополняется пробелом - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Aleksei555
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 5
18.01.2012, 16:46     Сформировать строку вдвое большей длины, где каждый символ дополняется пробелом #1
Задание: ввести строку символов. Сформировать строку вдвое большей длины, где каждый символ предворяется пробелом. Вывести полученную строку.
Вот код программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <conio.h>
#include <iostream.h>
#include <string.h>
 
void main()
{
clrscr();
char x[100];
cout << "Input: ";
cin >> x;
for (int i=strlen(x)-1;i>=0;i--)
{
*(x+2*i+1)=*(x+i);
*(x+2*i)=' ';
}
for (int i=0;i<strlen(x)-1;i++)
{
cout << *(x+i);
}
getch();
}
Нужно переделать программу так чтобы каждый символ предворялся не пробелом, а его порядковым номером.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2012, 16:46     Сформировать строку вдвое большей длины, где каждый символ дополняется пробелом
Посмотрите здесь:

Преобразовать строку, удалив каждый символ «*» и повторив каждый символ, отличный от «*» C++
Преобразовать строку, удалив каждый символ * и удвоив каждый символ, отличный от * C++
C++ Ввести символьную строку. Распечатать каждый символ массива с новой строки
C++ Преобразовать строку, удалив каждый символ * и повторив каждый символ, отличный от *
Зашифровать строку Char, заменив каждый символ на его ASCII код C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
18.01.2012, 16:58     Сформировать строку вдвое большей длины, где каждый символ дополняется пробелом #2
Так?
C++
1
2
3
for ( int i = 0 ; s[i] ; ++i )
    std::cout << " " << s[i];
std::cout << std::endl;
-=ЮрА=-
Заблокирован
Автор FAQ
18.01.2012, 17:09     Сформировать строку вдвое большей длины, где каждый символ дополняется пробелом #3
Цитата Сообщение от Aleksei555 Посмотреть сообщение
Задание: ввести строку символов. Сформировать строку вдвое большей длины, где каждый символ предворяется пробелом. Вывести полученную строку.
- вот очень просто на плюсах
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstdlib>
using namespace std;
 
int main()
{
    char str[1024] = {0};//ГЃГіГґГҐГ° äëÿ ñòðîêè
    char buf[2048] = {0};//ГЃГіГґГҐГ° äëÿ ñòðîêè âäâîå áîëüøåé äëèГ*Г*Г»
    cout<<"Enter text\n";
    cin.getline(str,1024);
    long i, sLen = strlen(str);
    for(i = 0; i < sLen; i++)
    {
        buf[i*2]     = ' ';
        buf[i*2 + 1] = str[i];
    }
    cout<<"Transformed text\n"
        <<buf<<endl;
    system("pause");//ñòîï-òî÷êГ* - âìåñòî getch
    return 0;
}
Миниатюры
Сформировать строку вдвое большей длины, где каждый символ дополняется пробелом  
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
18.01.2012, 17:15     Сформировать строку вдвое большей длины, где каждый символ дополняется пробелом #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
Если править код, то:
#include <conio.h>
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
 
 
int main() {
 char x[100];
 cout << "Input: ";
 cin >> x;
 
 int temp= strlen(x)- 1;
 x[strlen(x)*2]= 0;
 
 for (int i=strlen(x)-1;i>=0;i--){
  *(x+ 2*i +1)= *(x+i);
  *(x+ 2*i)= (char)(abs(temp- i)+ 48);
 }
 printf ("%s\n", x);
 
 
 getch();
}
Добавлено через 42 секунды
Но ограничения для дураков необходимы всё же.
-=ЮрА=-
Заблокирован
Автор FAQ
18.01.2012, 17:21     Сформировать строку вдвое большей длины, где каждый символ дополняется пробелом #5
Вот вариант без буфера - преобразуем исходную строку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cstdlib>
using namespace std;
 
int main()
{
    char str[2024] = {0};//ГЃГіГґГҐГ° äëÿ ñòðîêè
    cout<<"Enter text(less than 1024 chars)\n";
    cin.getline(str,1024);
    long i, sLen = strlen(str);
    for(i = 0; i < 2*sLen; i += 2)
    {
        memmove(&str[i + 1], &str[i], sLen - i/2);
        str[i] = ' ';
    }
    cout<<"Transformed text\n"
        <<str<<endl;
    system("pause");//ñòîï-òî÷êГ* - âìåñòî getch
    return 0;
}
PS:Функционал аналогичен функционалу алгоритма выше...
Миниатюры
Сформировать строку вдвое большей длины, где каждый символ дополняется пробелом  
-=ЮрА=-
Заблокирован
Автор FAQ
18.01.2012, 17:29     Сформировать строку вдвое большей длины, где каждый символ дополняется пробелом #6
Цитата Сообщение от kravam Посмотреть сообщение
Ребята! Научите меня уже редактировать коды в сообщениях!
- нажми кнопку Правка, внеси коррективы, а затем нажми сохранить изменения. Редактировать можно первые 10 мин после выдачи поста, потом только через модера...
Миниатюры
Сформировать строку вдвое большей длины, где каждый символ дополняется пробелом  
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
18.01.2012, 17:34     Сформировать строку вдвое большей длины, где каждый символ дополняется пробелом #7
Цитата Сообщение от Aleksei555 Посмотреть сообщение
Нужно переделать программу так чтобы каждый символ предворялся не пробелом, а его порядковым номером.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <string.h>
#include <stddef.h>
 
int main()
{
    int i, n;
    char s1[51] = "", s2[150] = "";
    char* ps2 = s2;
 
    printf("string: ");
    scanf("%50[^\n]", s1);
 
    for(i = 0; s1[i] != '\0' ; ++i)
    {
        sprintf(ps2, "%d%c%n", i + 1, s1[i], &n);
        ps2+= n;
    }
 
    printf("result: %s", s2);
    return 0;
}
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
18.01.2012, 17:39     Сформировать строку вдвое большей длины, где каждый символ дополняется пробелом #8
-=ЮрА=-, у меня при редактировании кодов получается такая грязь:
Код C++
1
2
3
4
5
6
7
#include <stdio.h> int main () { //изменения
printf ("hello, word!\n"); getchar (); return 0; }


Добавлено через 58 секунд
И хоть ты тресни
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2012, 17:46     Сформировать строку вдвое большей длины, где каждый символ дополняется пробелом
Еще ссылки по теме:

C++ Преобразовать строку, удалив каждый символ "*" и повторив каждый символ, отличный от "*"
C++ Сформировать новую строку повторив каждый символ заданной строки дважды
C++ Сформировать строку вдвое большей длины

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
18.01.2012, 17:46     Сформировать строку вдвое большей длины, где каждый символ дополняется пробелом #9
Цитата Сообщение от kravam Посмотреть сообщение
у меня при редактировании кодов получается такая грязь:
- возможно что-то с яваскриптом у тебя или редактируешь цитаты, тут не знаю что ответить, спроси у админов...
Yandex
Объявления
18.01.2012, 17:46     Сформировать строку вдвое большей длины, где каждый символ дополняется пробелом
Ответ Создать тему
Опции темы

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