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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Zer0
4 / 4 / 1
Регистрация: 27.10.2010
Сообщений: 114
#1

Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими - C++

23.04.2011, 10:55. Просмотров 1295. Ответов 11
Метки нет (Все метки)

Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими .Если непонятно то визуально выглядит так:
введите данные:
abdtTfgTGY
данные изменены:
ABDTTfgtgy

 Комментарий модератора 
Именуйте темы осмысленно. Название темы должно максимально полно отражать ее содержимое.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2011, 10:55     Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими
Посмотрите здесь:
C++ Дана строка символов. Определить количество слов состоящих из четырех букв
C++ Дана строка символов. Подсчитать самую длинную последовательность подряд идущих букв а.
Дана строка символов, состоящая из букв и цифр. Удалить из строки все цифры C++
Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков «+» и «–». Выделить подстроку, которая соответствует записи вещественного числа C++
C++ Дана строка. Подсчитать, сколько в ней букв r, k, t
C++ Дана строка подсчитать количество латинских букв
C++ Дана строка. Подсчитать, сколько в ней букв r, k, t
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
2299 / 1669 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
23.04.2011, 11:05     Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <algorithm>
#include <cctype>
#include <iostream>
#include <string>
 
char toUpper(char character) {
  return std::toupper(character);
}
 
char toLower(char character) {
  return std::tolower(character);
}
 
int main() {
  std::string text = "abdtTfgTGY";
 
  std::transform(text.begin()    , text.begin() + 5, text.begin()    , toUpper);
  std::transform(text.begin() + 5, text.end()      , text.begin() + 5, toLower);
 
  std::cout << text << std::endl;
}
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
23.04.2011, 11:35     Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими #3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <ctype.h>
 
void transform(char * buf, size_t size, int (*func)(int)){
    while ( size-- ){
        *buf = (char)func(*buf);
        ++buf;
    }
}
 
int main(void){
    char str[] = "abdtTfgTGY";
    
    printf("Before: %s\n", str);
    transform(str, 5, toupper);
    transform(str + 5, 5, tolower);
    printf("After:  %s\n", str);
    
    return 0;
}
Zer0
4 / 4 / 1
Регистрация: 27.10.2010
Сообщений: 114
18.05.2011, 03:29  [ТС]     Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими #4
Цитата Сообщение от easybudda Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <ctype.h>
 
void transform(char * buf, size_t size, int (*func)(int)){
    while ( size-- ){
        *buf = (char)func(*buf);
        ++buf;
    }
}
 
int main(void){
    char str[] = "abdtTfgTGY";
    
    printf("Before: %s\n", str);
    transform(str, 5, toupper);
    transform(str + 5, 5, tolower);
    printf("After:  %s\n", str);
    
    return 0;
}
Спасибо но мне надо попроще как то, вот то что я сам написал:
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
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <ctype.h>
#include <locale>
using namespace std;
int main()
{
    int e, i,k;
        char a[5];
        cout<<"vvedite stroky\n";
        cin>>a;
        k=strlen(a);
       e = strlen(a)/2;
       for ( i=0; i<e; i++){
           if(isupper(a[i])){
          a[i]=tolower(a[i]);
      }
         else
             a[i]=toupper(a[i]);
         for (e+1;e<k; e++){
                 a[e]=toupper(a[e]);
             cout<<a[i];
             cout<<a[e];
          cin>>a;
        return 0;
    }
     }
      }
Надо строку вводить с клавиатуры, левую часть строки инвертировать,а правую инвертировать только в большие символы. Не могу понять где моя ошибка, инвертирует только 1 символ левой строки и 1 символ правой строки.
kazak
3033 / 2354 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
18.05.2011, 03:53     Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими #5
С фигурными скобками разберись.
Zer0
4 / 4 / 1
Регистрация: 27.10.2010
Сообщений: 114
18.05.2011, 04:29  [ТС]     Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими #6
Цитата Сообщение от kazak Посмотреть сообщение
С фигурными скобками разберись.
Да вроде нормально все, суть не в скобках а в том что прога инвертирует 1-ый символ левой строки и 1-символ правой строки .
kazak
3033 / 2354 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
18.05.2011, 07:08     Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими #7
Не вроде, и совсем не нормально. Плюс еще пара косяков есть, но пока разберись со скобками.
dampir_sanek
150 / 148 / 21
Регистрация: 09.02.2010
Сообщений: 407
18.05.2011, 07:31     Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими #8
Zer0, держи
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 <stdio.h>
#include <string.h>
#include <iostream>
#include <ctype.h>
 
using namespace std;
 
int main()
{
    int e, i,k;
    char a[256];
    cout<<"vvedite stroky\n";
    cin>>a;
    k = strlen(a);
    e = (int) strlen(a)/2;
    for ( i=0; i<e; i++)
        if(!isupper(a[i]))
            a[i]=toupper(a[i]);
 
    for (; e<k; e++)
        a[e]=tolower(a[e]);
 
    cout << a;
    getchar();
    return 0;
}
Zer0
4 / 4 / 1
Регистрация: 27.10.2010
Сообщений: 114
18.05.2011, 09:57  [ТС]     Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими #9
Цитата Сообщение от dampir_sanek Посмотреть сообщение
Zer0, держи
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 <stdio.h>
#include <string.h>
#include <iostream>
#include <ctype.h>
 
using namespace std;
 
int main()
{
    int e, i,k;
    char a[256];
    cout<<"vvedite stroky\n";
    cin>>a;
    k = strlen(a);
    e = (int) strlen(a)/2;
    for ( i=0; i<e; i++)
        if(!isupper(a[i]))
            a[i]=toupper(a[i]);
 
    for (; e<k; e++)
        a[e]=tolower(a[e]);
 
    cout << a;
    getchar();
    return 0;
}
Спасибо,но она немного не доделана вот доделанный вариант:
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
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <ctype.h>
 
using namespace std;
 
int main()
{
    int e, i,k;
    char a[200];
    cout<<"vvedite stroky\n";
    cin>>a;
    k = strlen(a);
    e = (int) strlen(a)/2;
    for ( i=0; i<e; i++)
        if(!isupper(a[i]))
            a[i]=toupper(a[i]);
else
    a[i]=tolower(a[i]);
    for (; e<k; e++)
        a[e]=toupper(a[e]);
    cout << a;
    getchar();
    cin>>a;
    return 0;
}
kazak
3033 / 2354 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
18.05.2011, 11:52     Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими #10
Цитата Сообщение от Zer0 Посмотреть сообщение
C++
1
2
3
4
if(!isupper(a[i]))
   a[i]=toupper(a[i]);
else
   a[i]=tolower(a[i]);
Переведу на русский:
Если символ a[i] находится в верхнем регистре, то
перевести его в верхний регистр
иначе (если символ a[i] находится в нижнем регистре)
перевести его в нижний
CyBOSSeR
Эксперт C++
2299 / 1669 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
18.05.2011, 14:38     Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими #11
kazak, там ! перед is_upper.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2011, 14:42     Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими
Еще ссылки по теме:
дана строка подсчитать сколько в ней букв Р, к, т. C++
C++ Подсчитать, сколько было введено: латинских прописных букв, кириллических прописных букв, цифр, знаков переноса, прочих символов.
Дана строка. Подсчитать количество букв, содержащихся в строке C++
C++ Дана строка. Подсчитать количество букв K в последнем ее слове
Дана строка.Подсчитать в ней количество вхождений букв f,k,t. C++

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

Или воспользуйтесь поиском по форуму:
kazak
3033 / 2354 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
18.05.2011, 14:42     Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими #12
Недоглядел)
Yandex
Объявления
18.05.2011, 14:42     Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими
Ответ Создать тему
Опции темы

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