Ir para conteúdo
Fórum Script Brasil
  • 0

ajuda com STRING


radical78

Pergunta

Preciso de ajudar com este exercicio...

1) Criar um programa que faça a leitura de um nome completo e formate o nome conforme o modelo abaixo:

Exemplo 01: Entrada: Tiago - Ramão Benitez - Soares Saída: SOARES, Tiago Ramao Benitez

Exemplo 02: Entrada: THIAGO,jUliO%YaFuSSo Saída: YAFUSSO, Thiago Julio 

O programa deve: • Considerar somente letras do nome; • Remover espaços em excesso; • Substituir caracteres acentuados pelo seu respectivo caracter, sem acento.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

vou por o código aqui. Está bem comentado, mas realmente só tem uma forma de se fazer isso, e é praticando muito com manipulação de strings. Não espere seu professor passar exercícios, comece a praticar muito com strings, passe uma frase de minúscula a maiúsculas, intercale letras tipo AeIoU, etc, invente exercícios e tente resolve-los, só assim você será capaz de dominar a linguagem, se ficar esperando o professor passar exercícios vai ficar com carências. Por exemplo você pode buscar isso para lhe ajudar no google: "exercícios de manipulação de strings em C"

#include<stdio.h>
#include <ctype.h>//isalpha

int main(){
    
    char frase[100] = "Tiago - Ramão Benitez - Soares"; // Implementar a entrada por scanf vc >_<
    
    
    
    
    char vogalSem[]="aeioua", vogalCom[]="áéíóúã"; //precisa complementar para mais acentos tipo ê, ô etc
    
    int i,j;
    
    //Elimina acentos (Troca 'á' por 'a' ou 'ã' por 'a'). 
    //Explicação: Se a letra analizada coincidir com algumas das acentuadas que estão no vetor vogalCom, troca essa letra pela que está na mesma posição, porem do vetor vogalSem
    for (i=0;frase[i]!='\0';i++){
        for(j=0;j<sizeof(vogalCom);j++){
            if(vogalCom[j]==frase[i]) frase[i]=vogalSem[j];
        }
    }
    
    //troca tudo o que não for letras por espaços
	//Explicação: Se a letra analizada não(!) for uma das que estão no alfabeto troca a letra por um espaço
    for ( i=0; frase[i]!='\0' ; i++ ) {
        if ( !isalpha(frase[i]) ){
            frase[i]=' ';
        }
    }
    
    //Separamos a frase em uma matriz de 3 palavras(sem espaços pois são apenas 3 palavras e não uma frase)
    char palavra[3][100];
    sscanf(frase,"%s %s %s", palavra[0], palavra[1], palavra[2] );
    
  	//Agora precisamos dar formato para a saida pela tela:
  
    //apelido paterno em maiuscula
    for (i=0; palavra[2][i]!='\0' ;i++ ) { putchar( toupper(palavra[2][i]) ); }
    
    putchar(' '); //Imprime um espaço
  
  //nome em minuscula
    for (i=0; palavra[0][i]!='\0' ;i++ ) { putchar( tolower(palavra[0][i]) ); }    
    
    putchar(' '); //Imprime um espaço
  
    //apelido materno em minuscula
    for (i=0; palavra[1][i]!='\0' ;i++ ) { putchar( tolower(palavra[1][i]) ); }      
    

    getchar();//pausa
    return 0;
}


Isso aqui é praticar, praticar e mais praticar, não há outra forma. Sorte!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...