Разработка функции toLower / toUppercase - PullRequest
0 голосов
/ 31 марта 2020

Я предполагаю разработать функцию, которая получает char *, возвращает новый char (он не должен разделять память с этим, который он дал) и конвертирует lowerCase tu UpperCase и наоборот. Я понял, что должен добавить символ '\ 0' (на новом char *, называемом 'retorno'), как только я закончу sh, повторяя на char *, заданном функцией ('palabra'). Вывод, который я получаю, является мусором; пример токового выхода:

Prueba Invertir Case de palabra 1 -> ERROR salida incorrecta
    Parametros de entrada: 
    Se esperaba: 
    Se recibio:  Э§§§§нннcЙtp
----------------------------------------------
Prueba Invertir Case de palabra 2 -> ERROR salida incorrecta
    Parametros de entrada: hola
    Se esperaba: HOLA
    Se recibio:  ЭЭЭЭЭ§§§§
----------------------------------------------
Prueba Invertir Case de palabra 3 -> ERROR salida incorrecta
    Parametros de entrada: Write in C
    Se esperaba: wRITE IN c
    Se recibio:  ЭЭЭЭЭЭЭЭЭЭЭ§§§§

Это мой код, вопрос в том, КАК МОЖЕТ ДОБАВИТЬ этот символ \ 0 в "retorno"? Это единственная проблема, с которой я сталкиваюсь ???

char* invertirCase(char* palabra)
{

    char* retorno = new char[largo(palabra)+1];

    int i = 0;
    while (palabra[i] != '\0') {

        if (palabra[i]>= 'A' && (palabra[i] )<= 'Z') {
            palabra[i] += 32;
        }

        if (palabra[i] >= 'a' && palabra[i] <= 'z') {
            palabra[i] -= 32;
        }
        i++;

    }
    retorno [i] = '\0';
    return retorno;

}

Я разработал полностью решение, и теперь оно сработало! Если кто-то предложит улучшения, то будет более чем приветствоваться!

int i = 0;
char c;
do
{
  c = palabra[i];
  if( c >= 'A' && c <= 'Z' )
    c += 'a' - 'A';
  else if( c >= 'a' && c <= 'z' )
    c -= 'a' - 'A';

  retorno[i] = c;
  i++;
} while( c != '\0');`

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

Решение, которое сработало, было: char * invertirCase (char * palabra) {// Возврат строки в случайном порядке.

0 голосов
/ 31 марта 2020

Он верит в суши go. Si esta función 'lar go (palabra)' вычисляется в продольном направлении, входит в состав go debe ser el siguiente:

        char* invertirCase(char* palabra)
       {

       char* retorno = new char[largo(palabra)+1];
       int i = 0;
       while (palabra[i] != '\0') {

           if (palabra[i]>= 'A' && (palabra[i] )<= 'Z') {
               retorno [i]=palabra[i] + 32;
             }

           else if (palabra[i] >= 'a' && palabra[i] <= 'z') {
                retorno [i]= palabra[i] - 32;
             }
           else
                retorno [i]= palabra[i] ;

           i++;

       }
       return retorno;

       }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...