2013-02-10 2 views
-3

Я написал этот код в C++преобразования в верхний и нижний регистр в C++

#include <iostream> 
    using namespace std; 

    char convert1 (char x[]) 
    { 
    for (int i =0; i<5;i++) 
    { 
    if (i/2 ==0) 
    x[i] =tolower(x[i]); 
    else 
    x[i] = toupper(x[i]); 

    return x[i]; 

} 
    } 

    int main() 
    { 
     char z[] = "REDCA"; 
     cout<<convert1(z); 
     return 0; 
    } 

он будет работать, но он всегда печатать только небольшой случай первого письма Р., но я хочу, чтобы напечатать полное слово как это rEdCa

так, как я могу изменить его, пожалуйста

+0

Возможный дубликат [написать функцию в C++ для преобразования строки в верхний и нижний регистр] (http://stackoverflow.com/questions/14802305/write-a-function-in-c-to-convert-string- в верхнем и нижнем регистре) – ildjarn

ответ

3

Вы хотите if(i%2 == 0) вместо if(i/2 == 0) (вероятно, опечатка).

Кроме того, вы возвращаетесь только x[i], который является одним char. Лучшая идея будет использовать std::string вместо char *, но вы можете сделать эту работу с char *. (Я не буду предоставлять полный код, как мы установили в вашем предыдущем вопросе, это ваше задание, и вы должны это сделать, а не нас.)

+0

ОК, но он все еще печатает только первую букву не все слово –

+0

ok спасибо, я решил проблему –

1

Возвращаемое значение convert1 - char. Итак, cout << convert1(x) видит char, и таким образом вы просто получите первый r.

Вы, вероятно, хотите что-то вроде этого:

template<size_t S> 
char const* convert1(char (&x)[S]) 
{ 
    for(int i = 0; i < S; ++i) 
    { 
     if(i%2 ==0) { 
      x[i] = tolower(x[i]); 
     } else { 
      x[i] = toupper(x[i]); 
     } 
    } 

    return x; 
} 

Хотите лучше использовать std::string.

+0

ОК и в чем решение –

+1

@Ahmed Ваше задание, ваша работа. Использование этого сайта для получения полных решений для домашней работы - обман. – us2012

+0

ok спасибо, я решил проблему –

Смежные вопросы