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

Сменя позиций букв - C++

Восстановить пароль Регистрация
 
R1se
0 / 0 / 0
Регистрация: 05.02.2012
Сообщений: 13
08.02.2012, 16:26     Сменя позиций букв #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
44
45
46
47
48
49
50
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
void changePosition(char str2[256])
{
    int q = strlen(str2);
    char r = str2[0];
    str2[0] = str2[q-1];
    str2[q-1] = r;
}
 
void str()
{
    char str[] = "Faculty of Information technology ";
    int a = strlen(str);
    char str2[256];
    int i,j;
    
    for(i=0,j=0;i<a;i++)
    {
        if(str[i]!=' ')
        {
            str2[j] = str[i];
            j++;
        }
        else if(str[i]==' ')
        {
            changePosition(str2);
            printf("%s ",str2);
            
            for(int i=0;i<=a;i++)
            {
                str2[i] = 0;
            }
            
            j=0;
        }
    }    
}
 
int main()
{
    str();
    printf("\n");
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
Работает, но есть косяки. Если стереть пробел после "Faculty of Information technology " теряется "technology". Так же, если указать перед " Faculty" пробел, швабра казябра сного получится.

Добавлено через 18 часов 33 минуты
задача актуальна
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2012, 16:26     Сменя позиций букв
Посмотрите здесь:

Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими C++
C++ Найти порядковые номера позиций
Строки - замена позиций букв в словах C++
C++ Ввести с клавиатуры целое число N. Используя рекурсию, распечатать сначала последовательность, состоящую из N букв 'А', а затем из N букв 'В'
В строке слов из букв латинского алфавита найти слова, в которых нет букв, которые повторяются. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
08.02.2012, 17:14     Сменя позиций букв #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
#include <iostream>
#include <string.h>
 
void str(char* text)
{
    int size = strlen(text);        
    int begin = -1;  
      
    for(int i = 0;i < size;++i)
    {
       if(begin == -1)
       {
          if(text[i]!=' ')begin = i;
       }
       else if(text[i]==' ')
       {
          std::swap(text[begin],text[i-1]);
          begin = -1;
       }
    }
    if(begin!=-1)std::swap(text[begin],text[size-1]);
    return;   
}
 
int main()
{
    char text[] = "  Faculty of Information technology";
    
    std::cout << text << std::endl;
    str(text);     
    std::cout << text << std::endl;
    return 0;
}
R1se
0 / 0 / 0
Регистрация: 05.02.2012
Сообщений: 13
08.02.2012, 20:54  [ТС]     Сменя позиций букв #3
Спасибо большоe и можно узнать о функции swap();?
И чем её заменить (swap не проходили, препод скажет переделывай).
P.S. Как до меня первый раз дошло, что swap(text[begin],text[i-1]); будет равно text[begin] = text[i-1];
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
08.02.2012, 22:07     Сменя позиций букв #4
Не совсем. Эта функция меняет местами значения переменных. Подобное вы делали в функции changePosition.
Иначе говоря std::swap(a,b) равносильно
C++
1
2
3
int c = a;
a = b;
b = c;
R1se
0 / 0 / 0
Регистрация: 05.02.2012
Сообщений: 13
08.02.2012, 22:25  [ТС]     Сменя позиций букв #5
Спасибо разобрался.
Yandex
Объявления
08.02.2012, 22:25     Сменя позиций букв
Ответ Создать тему
Опции темы

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