Enviado em 23/06/2019 - 19:34h
Preciso fazer um código que a primeira entrada seja o número de nomes que vou digitar e ele abrevia esses nomes como nos exemplos abaixo:
#include <stdio.h>
#include <string.h>
//Essa funcao remove as palavras indesejadas
void removerSubstring(char *s,const char *remover)
{
while((s = strstr(s,remover)) != NULL)
memmove(s, s + strlen(remover), 1 + strlen(s+strlen(remover)));
}
void abrevia(char *nome)
{
char aux [51];
int i,auxiliarult,j,ult,esp=0;
for (i=0;i<strlen(nome);i++) if (nome[i]==' ') esp++; //conta o nº de nomes
for (i=0;i<strlen(nome);i++)
{
j=0;
if (nome[i]==' ') j++;
ult=i+1; //posição do começo do último nome
}
for (i=0;i< strlen(nome)-(ult-1);i++) // passa o ultimo nome para um auxiliar
{
auxiliarult=ult;
aux[i]=nome[auxiliarult];
auxiliarult++;
}
int proxlivre=strlen(nome)-ult+2; //prox. posição livre no aux
aux[proxlivre]=','; // adiociona a virgula dps do nome
proxlivre++;
aux[proxlivre]=' '; // adiociona o espaço
proxlivre++;
aux[proxlivre]=nome[0]; // adiociona 1ª inicial
proxlivre++;
aux[proxlivre]='.';
proxlivre++;
aux[proxlivre]=' ';
proxlivre++;
for (i=0;i<ult;i++)
{
if (nome[i]==' ')
{
aux[proxlivre]=nome[i+1];
proxlivre++;
aux[proxlivre]='.';
proxlivre++;
}
}
printf ("%s",aux);
strcpy(nome,aux);
}
int main( void ){
int n,i;
char nome [51];
scanf ("%d",&n);
getchar();
for (i=1;i<=n;i++){
gets (nome);
removerSubstring(nome, "da "); //usamos a função para remover
removerSubstring(nome, "das ");// todas as palavras que devem
removerSubstring(nome, "de "); // ser ignoradas
removerSubstring(nome, "des ");
removerSubstring(nome, "do ");
removerSubstring(nome, "dos ");
abrevia(nome);
puts(nome);
}
return 0;
}
Agora temos uma assistente virtual no fórum!!! (246)
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Como eu faço para ativar o sistema de gestos do mousepad? (4)
NGNIX - Aplicar SNAT para evitar roteamento assimetrico (13)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta