Programa em C: Abreviar nomes

278 palavras 2 páginas
#include
/* Simples rotina para limpar um vetor de caracteres, a partir do indice inicio */ void limpaString(char s[], int inicio)
{
while(s[inicio]) { s[inicio] = '\0'; inicio++; }
}
int main()
{
char nome[41]; int i, j, k, ehPreposicao, palavras, invalido; do { do { printf("\nColoque um nome COMPLETO para ser abreviado: "); gets(nome);

i = 0; /* Esta variavel vai conter o inicio de cada palavra */ invalido = 0; /* o nome e valido ate encontrarmos algo invalido */ palavras = 0; /* Total de palavras */ while(nome[i] && !invalido) { /* Esse laco vai acontecer na primeira letra de cada palavra */ j = 0; ehPreposicao = 1; while(nome[i + j] && nome[i + j] != ' ') { if(j == 0 && nome[i + j] != 'd') ehPreposicao = 0; else if(j == 1 && nome[i + j] != 'a' && nome[i + j] != 'e' && nome[i + j] != 'o') ehPreposicao = 0; else if(j == 2 && nome[i + j] != 's') ehPreposicao = 0; else if(j == 4) ehPreposicao = 0; j++; } /* Se a primeira letra nao for maiuscula na palavra, nome invalido */ if(!ehPreposicao && (nome[i] < 65 || nome[i] > 90)) invalido = 1; else { /* Condicoes para abreviar uma palavra: - Nao e a primeira palavra (prenome), - Nao e a ultima palavra (sobrenome), - Nao e preposicao */ if(i > 0 && nome[i + j] && !ehPreposicao) { nome[i + 1] = '.'; /* Adicionamos o ponto */ k = i + j; while(nome[k]) { /* Coloca o restante da string para tras */ nome[k - j + 2] = nome[k]; k++; } limpaString(nome, k - j + 2); /* Limpa o excesso da string */ i += 3; } else i += j + 1; if(!ehPreposicao) palavras++; } } if(invalido || palavras < 2) { if(invalido == 1) printf("Letra inicial %c da palavra DEVE ser MAIUSCULA", nome[i]); else if(palavras < 2) printf("O nome digitado deve ter no minimo prenome e sobrenome");

Relacionados

  • Como fazer um computador funcionar
    1193 palavras | 5 páginas
  • Programação Básica
    614 palavras | 3 páginas
  • Informatica
    687 palavras | 3 páginas
  • Revisão 02 - Programação estruturada
    632 palavras | 3 páginas
  • portugues
    5668 palavras | 23 páginas
  • Lista simplesmente encadeada
    897 palavras | 4 páginas
  • Webdesign
    3712 palavras | 15 páginas
  • dfghjkl
    990 palavras | 4 páginas
  • Contabilidad
    2420 palavras | 10 páginas
  • Java
    1343 palavras | 6 páginas