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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.63
Нубик_я
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 22
#1

Сдвиг символов строки вправо - C++

20.09.2013, 09:08. Просмотров 3123. Ответов 5
Метки нет (Все метки)

собственно задача - сдвинуть строку на 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
void main()
{
    char a[66];
    char b[66];
    char l,c,y;
    int i=0;
    setlocale(LC_ALL,"");
    for (l='А'; l<='я'; l++)
    {
        a[i]=l;
        i++;
    }
    i=0;
    c='А';
    for (i=0;i<=66;i++)
    {
        y=c+2;
        b[i]=y;
        c++;
    }   
    cout<<b<<endl;
    system("pause");
}
беда в том, что первые 2 символа теряются, как их вернуть?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2013, 09:08     Сдвиг символов строки вправо
Посмотрите здесь:

Сдвиг строки вправо - C++
Нужно написать программу по наследованию которая измеряет длину строки и сдвигает строку в право на один символ. Программа выдает следующую...

Сдвиг числа вправо - C++
Помогите, мне нужно реализовать машинный алгоритм умножения чисел. Первое число нужно сдвигать постоянно вправо и выводить на экран. Данный...

Циклический сдвиг вправо - C++
Нужно сделать цеклический сдвиг машинного слова на 1 байт влево, через union и через побитовые операции. Вот так я пишу побитовый сдвиг ...

Сдвиг массива вправо на K позиций - C++
Даны натуральные числа N, K и массив из N целых чисел. Требуется, не используя дополнительные массивы, циклически сдвинуть элементы...

круговой сдвиг массива вправо - C++
Напишите программу которая принимает двухмерный массив целых чисел и количество сдвигов и выполняет круговой сдвиг массива вправо. ...

Побитовый сдвиг влево и вправо - C++
Что выполнится быстрее - сдвиг влево или сдвиг вправо? И как замерить время выполнения каждой из операций в коде? Добавлено через 2...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
20.09.2013, 10:36     Сдвиг символов строки вправо #2
Есть стандартный алгоритм std::rotate
Возможная реализация по ссылке http://www.cplusplus.com/reference/algorithm/rotate/
zss
Модератор
Эксперт С++
6322 / 5906 / 1913
Регистрация: 18.12.2011
Сообщений: 15,189
Завершенные тесты: 1
20.09.2013, 10:48     Сдвиг символов строки вправо #3
Цитата Сообщение от Нубик_я Посмотреть сообщение
беда в том, что первые 2 символа теряются, как их вернуть?
запомните их в промежуточной переменной, а потом вставьте в хвост.
lipnev
60 / 60 / 1
Регистрация: 14.09.2013
Сообщений: 145
20.09.2013, 11:12     Сдвиг символов строки вправо #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 <clocale>
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"");
    char a[64];
    int i=0;
    for (char l='А'; l<='я'; l++)
    {
        a[i]=l;
        i++;
    }
    cout<<a<<endl;
    for (i=63;i>1;i--)
    {
        a[i]=a[i-2];
    }
    a[0]=a[1]=' ';
 
    cout<<a<<endl;
    system("pause");
}
Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 478
Записей в блоге: 1
20.09.2013, 11:26     Сдвиг символов строки вправо #5
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
#include <clocale>
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
void main()
{
    setlocale(LC_ALL,"");
    char a[67]; //не забываем про символ конца строки
    char b[3];
    int i=0;
    for (char l='А'; l<='я'; l++)
    {
        a[i]=l;
        i++;
    }
     a[66]=0; //или a[66]='\0';
    cout<<a<<endl;
    b[0]=a[64];
    b[1]=a[65];
    b[2]=0;
    for (i=65;i>1;i--)
    {
        a[i]=a[i-2];
    }
    a[0]=b[0];
   a[1]=b[1];
 
    cout<<a<<endl;
    system("pause");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2014, 22:09     Сдвиг символов строки вправо
Еще ссылки по теме:

Циклический сдвиг массива вправо - C++
дан двумерный массив MxN нужно осуществить поэлементный сдвиг вправо на 1 элемент

Сдвиг элементов массива вправо - C++
Добрый вечер всем. У меня возник такой вопрос. Можно ли сдвинуть элементы массива вправо на одну позицию, при это цикл начинать не с...

Одномерный массив. Циклический сдвиг вправо - C++
Дан массив A размера N и целое число K (1 ≤ K ≤ 4, K &lt; N). Осущест- вить циклический сдвиг элементов массива вправо на K позиций (при...

Сдвиг элементов вектора на единицу вправо - C++
Как можно сдвинуть элементы вектора на единицу вправо? Знаю можно записать вот так, но это для массива. Мне бы что-то похожее на это,...

Сдвиг элементов вправо на один символ - C++
Дано некоторое слово. Написать функцию, которая возвращает слово, полученное из исходного в результате сдвига его элементов вправо на один...

Циклический сдвиг массива влево и вправо - C++
Нужно реализовать циклический сдвиг массива влево и вправо! Например есть массив int- {121605}? mass_len=6, нужно чтобы после сдвига...


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

Или воспользуйтесь поиском по форуму:
strcmp75
0 / 0 / 0
Регистрация: 04.10.2014
Сообщений: 28
04.10.2014, 22:09     Сдвиг символов строки вправо #6
Всем добрый день. Срочно нужна помощь. Кто подскажет, как выполнить такое задание?
"Ввести строки s1 и s2. Три последних символа строки s2 удалить, вставить в середину строки s1 и в полученной строке заменить все символы 'E' на 'EE'."
Вот моя программа, но работает она из рук вон неправильно - выводит только первые символы строки s1 после обработки. Вывод промежуточных результатов и конечных строк пока не делал. Помогите, очень срочно, сам уже две недели тружусь и ничего не выходит
Работаю в Borland C++ версия 3.1.
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
void main()
{const int max = 61;
 char s1[max+3], s2[max], cpy_s2[3];
 int i = 0;
 clrscr();
 printf("Vvedite stroku s1:\n");
 gets(s1);
 printf("Vvedite stroku s2:\n");
 gets(s2);
 int lens1 = strlen(s1); //zapis znachenia dliny stroki s1
 int lens2 = strlen(s2); //i s2
 if((lens2<3)||(lens1==0)||(lens2==0))
   {printf("\nOshibka vvoda strok!");
    printf("\nNazhmite Enter dla vixoda");
    getch();
   }
 else
     {
     {for(i = lens2-3; i<=lens2; i++) //cikl na poisk poslednix 3-x simvolov v "s2"
     {cpy_s2[i] = s2[i]; //kopirovanie 3-x simvolov v otdelniy massiv
      s2[i] = '\0'; //"udalenie" 3-x simvolov iz na4alnoi stroki "s2"
     }
     for(i = lens1/2; i<=lens1/2+3; i++)
    {s1[i+3] = s1[i];
    }
     for(i = lens1/2; i<=lens1/2+3; i++)
    {s1[i] = cpy_s2[i];
    }
    for(i = 0; i<=lens1; i++)
       {if(s1[i]=='E')
         s1[i] = 'EE';
       }
    printf("\nObrabotannaya stroka s1:\n");
    puts(s1);
    printf("Nazhmite Enter dla vixoda");
    getch();
      }
     }
}
Yandex
Объявления
04.10.2014, 22:09     Сдвиг символов строки вправо
Ответ Создать тему
Опции темы

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