Programa em C para abreviar nomes

1. Programa em C para abreviar nomes

Gabriel Ramos
gabrielzin44

(usa Ubuntu)

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:
Albert Einstein -> Einstein, A.
Napoleão Bonaparte -> Bonaparte, N.
Franklin Delano Roosevelt -> Roosevelt, F.D.
O problema é que na hora de printar o nome abreviando o ele ta imprimindo um espaço em branco.
segue o código 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;
}



  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts