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

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

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

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

20.09.2013, 09:08. Просмотров 3246. Ответов 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 символа теряются, как их вернуть?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2013, 09:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сдвиг символов строки вправо (C++):

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

Где и когда уместно применять операции << (сдвиг влево) и >> (сдвиг вправо)? - C++
Кто может привести пример , когда нужно использовать операции: 1) &lt;&lt; сдвиг влево 2) &gt;&gt; сдвиг вправо

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Tulosba
:)
Эксперт С++
4395 / 3238 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
20.09.2013, 10:36 #2
Есть стандартный алгоритм std::rotate
Возможная реализация по ссылке http://www.cplusplus.com/reference/algorithm/rotate/
0
zss
Модератор
Эксперт С++
6380 / 5945 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
20.09.2013, 10:48 #3
Цитата Сообщение от Нубик_я Посмотреть сообщение
беда в том, что первые 2 символа теряются, как их вернуть?
запомните их в промежуточной переменной, а потом вставьте в хвост.
0
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");
}
0
Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 480
Записей в блоге: 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");
}
0
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();
      }
     }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2014, 22:09
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.10.2014, 22:09
Ответ Создать тему
Опции темы

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