Ir ao conteúdo

C++ Transformar chars minusculos em maiusculos?


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

@ArielBeaul   use o 

#include <ctype.h>

e um loop para percorrer todos os caracteres de cada palavra , e dentro do loop use o comando 

palavra[j][i] = toupper(palavra[j][i]);  // i é a variável do loop
                                         // j é a variável do primeiro Loop

 

Postado

@devair1010

#include <stdio.h>
#include <ctype.h>
int main(void) {
    char list[4][10] = {"alicate","martelo","papel","luva"};
    int i;

    for(i = 0; i < 10; i++)
        printf("%c", toupper(string[i]));

    return 0;
}

Tentei este código, porém n tive mt ideia de como continuar escrevendo ele, nao sei o que tá errado to be honest

  • Solução
Postado

@ArielBeaul    seu código corrigido :

 

#include <stdio.h>
#include <string.h>// precisa para usar strings e strlen q conta a qtd de caract
#include <ctype.h>
int main(void)
{
    char list[4][10] = { "abacate","laranja","banana","uva" };
    for (int j = 0; j < 4; j++)                    // é a qtd de linhas da matriz list
    {                                              // ou o mesmo que a qtd de palavras da matriz
        for (int i = 0; i < strlen(list[j]); i++)  // é a qtd de colunas da linha j da matriz 
                                                   // e o mesmo que a qtd de caracteres das palavras
        {
            //list[j][i] = toupper(list[j][i]);    // se quiser armazenar na matriz as maiúculas
            printf("%c", toupper(list[j][i]));
        }
        printf("\n");
    }
    return 0;
}

 

  • Curtir 1
  • Obrigado 1
Postado

@ArielBeaul Não recomendo usar ctype se é iniciante, até porque basta 1 loop varrendo a string e verificando se o caractere está dentro de certo intervalo. Aliás, se realmente é iniciante, seu professor provavelmente não aceitaria o código com funções desse cabeçalho.

É por meio desse tipo de exercício que somos introduzidos à tabela ASCII:

image.png.44d04a155ce5f8b2daf7b1ddf35e8e27.png

Mas enfim, faça o que achar certo :D

 

PS: está programando em C, mas criou o tópico referente à linguagem C++.

  • Curtir 1
  • Obrigado 1
Postado
3 horas atrás, ArielBeaul disse:

char list[4][10] = {"alicate","martelo","papel","luva"};

 

3 horas atrás, ArielBeaul disse:

Tentei este código, porém n tive mt ideia de como continuar escrevendo ele, nao sei o que tá errado to be honest

 

E como chegou até isso? De onde veio o 10? De onde veio a ideia em si?

 

Toda string em C termina com um zero e é isso que você usa para terminar seu loop para cada string

 

Para converter não precisa saber ou usar os códigos: as letras tem valores em sequência. `a` + 1 é ´b´, por exemplo. Então basta ver se está entre ´a´ e ´z´ e somar a diferença entre a letra que está lendo e ´a´. E somar a ´A´.

 

Ex: sua letra é ´f´. ´f´ - ´a´ vale 5. É a sexta letra final. E quanto será ´A´ + 5? ´F´. Só isso... Converteu para maiuscula  

  • Curtir 1
Postado

Outra forma de resolver é como o @Lucca Rodrigues comentou acima com a tabela ASCII fazendo operações em cada caractere da string. Para passar uma letra para maiúscula é só tirar 32 (ou a - A).

 

#include <stdio.h>

char *maiuscula(char *palavra){
    char *p = palavra;
    while(*p){
        if(*p >= 'a' && *p <= 'z'){
            *p -= ('a' - 'A'); 
        }
        p += 1;
    }
    return palavra;
}

int main(){
    char list[4][10] = {
        "alicate", "martelo", "papel", "luva"
    };    
    
    for(int i = 0; i < 4; i += 1){
        printf("%s\n", maiuscula(list[i]));
    }
    return 0;
}

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...