Ir ao conteúdo

Posts recomendados

Postado

Escreva um programa para ler uma quantidade indeterminada de dupla de dados. O primeiro elemento da dupla é um dos seguintes caracteres: 'M','m', 'F' ou 'f' (não é necessário validar). O segundo é uma palavra de até 30 caracteres (considere que ela pode conter hífen). Converta cada palavra lida para maiúscula ou minúscula conforme o primeiro caractere (da dupla) informado seja 'M' (Maiúscula) ou 'm' (Minúscula). Imprimir cada palavra após a conversão. O programa termina quando o primeiro caractere informado (da dupla) for 'F' ou 'f'.

Poderiam me dizer o que estou fazendo de errado no código abaixo? quando eu coloco M ou m ele volta pra primeira opção.

 

#include <stdio.h>
#include <string.h>

main(){
	char pal[30], aux[1];

	for( ; ; ){
		printf("Digite M para transformar palavras em maiusculo, m para transformar palavras em minusculo e F ou f para encerrar o programa: \n");
		scanf("%s", &aux[1]);
	    if (aux[1]== 'F'||aux[1]== 'f'){
			break;
		}
		else if(aux[1]== 'M'){
			printf("Digite uma palavra (de ate 30 caracteres): \n");
			fgets(pal,30,stdin); 
			strupr(pal);
			printf("%s \n", pal);  
		}else if(aux[1]== 'm'){
			printf("Digite uma palavra (de ate 30 caracteres): \n");
			fgets(pal,30,stdin); 
			strlwr(pal);
			printf("%s \n", pal);  
		}
	}
}

 

Postado

@Helio Junnior Sartor Dalmolin    erros de syntaxes ,   apenas um caractere  é hum char sem dimensões ,   você pode converter as letras manualmente sem usar nenhuma função nem biblioteca ,  apenas adicionando ou subtraindo o  valor 32 que separa uma das outras , e seu código poderia ser assim  :

#include <stdio.h>
#include <string.h>
int main()
{
    char pal[30], aux, c;
    int i;
    for( ; ; )
    {
        printf("Digite M para transformar palavras em maiusculo ,\n");
        printf("m para transformar palavras em minusculo e F ou f\n");
        printf("para encerrar o programa: ");
        scanf("%c", & aux );
        while(c = fgetc(stdin) != '\n' );  // limpar o buffer do teclado senão erros
        if( aux == 'F' || aux == 'f' )
        {
            break;
        }
        else
        {
            printf("Digite uma palavra (de ate 30 caracteres): ");
            fgets(pal,30,stdin);
            if(aux == 'M')
            {
                printf("com a funcao strupr -> %s\n",strupr(pal));
                for(i=0; pal[i] != '\0'; i++)
                    if( pal[i] > 96 && pal[i] < 123 )
                        pal[i] = pal[i] - 32;
                printf("Manualmente => A Palavra em Maiusculas -> %s\n", pal);
            }
            else
            {
                if(aux == 'm')
                {
                    printf("com a funcao strlwr -> %s\n",strlwr(pal));
                    for(i=0; pal[i] != '\0'; i++)
                        if( pal[i] > 64 && pal[i] < 91 )
                            pal[i] = pal[i] + 32;
                    printf("Manualmente => A Palavra em Minusculas -> %s\n", pal);
                }
            }
        }
    }
	return 0;
}

 

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...