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

Перевести строчные буквы строки в прописные - C++

Восстановить пароль Регистрация
 
nutius
0 / 0 / 0
Регистрация: 01.06.2011
Сообщений: 60
21.03.2013, 11:48     Перевести строчные буквы строки в прописные #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
#include <iostream>
#include <string>
 
using namespace std;
void main(){
 
    char* p;
    char old_mas [100];
    char new_mas [100];
    *new_mas=0;
    gets (old_mas);
    p= strtok (old_mas, " ");
   
    while (p!='\0')
    {
 
        new_mas=strupr(p);
        
        strtok (NULL," ");
    }
 
    puts (new_mas);
            
 
    system("pause");
 
}
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
21.03.2013, 12:04     Перевести строчные буквы строки в прописные #2
Цитата Сообщение от nutius Посмотреть сообщение
строчные в прописные
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <algorithm>
#include <iterator>
#include <iostream>
#include <cstring>
 
int main ()
{
   std::string string = "fsafsaAAfafafaAAAfa";
   for (auto &currSym: string)
      currSym = toupper(currSym);
   std::copy(string.begin(), string.end(), std::ostream_iterator <char> (std::cout));
   
   return 0;
}
nutius
0 / 0 / 0
Регистрация: 01.06.2011
Сообщений: 60
21.03.2013, 13:58  [ТС]     Перевести строчные буквы строки в прописные #3
Спасибо, но мне надо понять, какая в моем коде ошибка...
Natrofl
2 / 2 / 0
Регистрация: 29.12.2012
Сообщений: 6
21.03.2013, 14:33     Перевести строчные буквы строки в прописные #4
Цитата Сообщение от nutius Посмотреть сообщение
Спасибо, но мне надо понять, какая в моем коде ошибка...
Привет, почитайте еще про строки и функцию strupr. Ошибка в том, что вы пытались, присвоить массиву - строку. Присваивать нужно одному элементу массива - один символ строки.
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
#include <iostream>
#include <cstring>
 
using namespace std;
void main()
{
 
    char* p;
    char old_mas [100];
//    char new_mas [100];
 //   *new_mas = 0;
 
    gets(old_mas);
//  std::cin.getline(old_mas, 100, '\n');
    strupr(old_mas);
 
 
//    p = strtok (old_mas, " ");
   
//    while (p != '\0')
//    { 
 //       strupr(p);
        
 //       strtok (NULL," ");
//    } 
  
    puts (old_mas);
            
 
    system("pause");
}
Leshak
259 / 235 / 40
Регистрация: 10.12.2011
Сообщений: 513
21.03.2013, 14:41     Перевести строчные буквы строки в прописные #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Прошу не обижаться. Разкоментировал как мог Но первый вам предложенный вариант таки изящней, ну и второй -_-
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
/* библиотеку стринг подключать необязательно так как вы работаете с Си строками */
 
/* простарнство имен тоже не советую подключать */
void main(){
 
    /* char* p;  смысл с указателя здесь ровно на ноль */
    char mas [100]; /* один массив таки лишиний ;) */
    /* *new_mas=0; присваиваем первому элементу символьного массива значение 0, опять же, смысл ?)*/
    std::cin.getline(mas);
     /* указатель на первый пробел ( разделитель )p= strtok (old_mas, " "); но опять же, смысл ?)  /*
   
    
     /* зачем вам было проверять в отдельности каждое слово? не знаю =) */
    for ( int i = 0 ; i < sizeof(mas) ; i++ ){
        if ( mas[i] <= 'z' && string[i] >= 'a' ) mas[i]= toupper(mas[i]);
    }
        
    std::cout<<mas<<"\n";
            
    system("pause");
Yandex
Объявления
21.03.2013, 14:41     Перевести строчные буквы строки в прописные
Ответ Создать тему
Опции темы

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