Converter caracteres que não forem letras em espaço em branco

1. Converter caracteres que não forem letras em espaço em branco

Cleiton Silva
cleitonsilva11

(usa Ubuntu)

Enviado em 02/11/2019 - 13:38h

Preciso criar um programa em C que converta um vetor de 32 caracteres (recebidos do usuário), e os caracteres que não forem letras devem ser convertidos em espaço em branco mostrando no final o vetor resultante e a quantidade de espaços em branco. Como seria para fazer usando apenas a biblioteca 'stdio.h'?


  


2. Re: Converter caracteres que não forem letras em espaço em branco

Paulo
paulo1205

(usa Ubuntu)

Enviado em 05/11/2019 - 04:01h

Você pode assumir que o conjunto de caracteres é ASCII (ou alguma extensão dele)? Se sim, pode levar em consideração os seguintes fatos:

  • o tipo char do C não representa apenas caracteres, mas é também um tipo aritmético, do mesmo modo que int, de modo que faz sentido pensar em ordenação de caracteres (com base no seu valor numérico correspondente) e em operações aritméticas e de comparação entre eles;

  • letras maiúsculas estão dispostas em ordem alfabética e adjacentes uma à outra na tabela de símbolos, de modo que você pode ter certeza de que 'A'+1=='B' ou que 'Z'-'A'==25;

  • a mesma coisa vale para letras minúsculas (e.g. 'a'+1=='b', 'b'+1=='c' e assim por diante);

  • letras maiúsculas e minúsculas são caracteres diferentes, mas existe uma distância fixa entre cada letra maiúscula e sua correspondente minúscula (e.g. 'a'-'A'=='e'-'E').

Então, para saber se um caráter é uma letra, você pode ver se ele pertence a um intervalo que começa em 'A' e termina em 'Z' (ou naquele que começa em 'a' e termina em 'z').


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


3. Re: Converter caracteres que não forem letras em espaço em branco

Ismael Felipe Ferreira dos santos
IsmaelSantos

(usa Ubuntu)

Enviado em 10/11/2019 - 20:06h

Baseado na resposta do sr. paulo1205 fiz um exemplo:

/* 
Autor: Ismael Felipe Ferreira dos Santos
Instituto de Fisica,
Universidade Federal de Alagoas
E-mail: ismaellxd@gmail.com
Copyright © 2019 MIT LICENCE
GIT: https://ismaeldamiao.blogspot.com/fisicacomputacional
Objetivo: Responder um topico VOL
Escrito em: 10 de Novembro de 2019
*/
#include<stdio.h>

int main(){
int tamanho = 100;
char Frase[tamanho] = "Principium1sapientiae2timor3Domini,4et5scientia6sanctorum7prudentia.";

for(int i = 0; i < tamanho; ++i){
if((Frase[i]>='A' && Frase[i] <= 'Z') || (Frase[i]>='a' && Frase[i] <= 'z')){
printf("%c", Frase[i]);
}else{
printf(" ");
}
}
printf("\n");
return 0;
}


Saída
Principium sapientiae timor Domini  et scientia sanctorum prudentia  







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts