Ir ao conteúdo
  • Cadastre-se

C algoritmo que informe ultimo sobrenome


jpaulofsa

Posts recomendados

#include <stdio.h>
#include <stdlib.h>

void acha_indices(int posições[], char string[], char caractere)
{
	int indice, posinicial_indice, posfinal_indice;
 	indice = 0;
 	posinicial_indice = 0;
 	posfinal_indice = 0;
 	while (string[indice] != '\0'){
 		if (string[indice] == caractere){
 		posições[posinicial_indice] = indice;
 		posinicial_indice = posinicial_indice + 1;
 		posfinal_indice = posfinal_indice + 1;
		}
 		indice = indice + 1;
 	}
 	posições[posinicial_indice] = -1;
 }

int main(void)
{
 	int indice;
 	char nome[30];
 	char ultimo_sobrenome[15];
 	char espaco_branco = ' ';
 	int posições[30];
 	printf("digite seu nome completo com os espacos e sem acentos. \n");
 	scanf("%s", nome);
	acha_indices(posições,nome,espaco_branco);
 	indice = 0;
 	while(posições[indice] == '\0'){
 		posições[indice] = espaco_branco - '\0';
	 printf("seu ultimo sobrenome e %d \n", posições[indice]);
 	 indice = indice + 1;
 	}
 	system("pause");
 	return 0;
}

Boa noite, caros colegas.

preciso criar um algoritmo em que o usuário informe o nome completo e o programa informa como dado de saída o ultimo sobrenome. estou batendo cabeça para saber como informar ao programa para pesquisar onde o índice se inicia e onde termina o índice do último sobrenome e então informar ao usuário através de um novo array que recebe o último sobrenome.

alguém poderia colaborar. 

sou iniciante.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@jpaulofsa      no c / c++ não pode usar cedilha nem acentos nas variáveis,  e mudei algumas variáveis de lugar colocando no inicio para elas ser global que podem ser acessadas de qualquer parte do programa .   então para saber qual o ultimo nome pode pegar o tamanho da string usando strlen  e ir verificando cada letra do fim para o começo até encontrar um espaço em branco e aí está o seu ultimo sobrenome, para imprimir vá imprimindo cada letra dessa posição até o fim .

   aqui está seu código com algumas modificações :

#include <stdio.h>
#include <stdlib.h>
int posições[30],fim,indice;
void acha_indices(int posições[], char string[],char nom[50], char caractere)
{
	int i,posinicial_indice, posfinal_indice;
 	indice = 0;
 	posinicial_indice = 0;
 	posfinal_indice = 0;
 	fim=strlen(string);
 	indice=fim-1;
 	while (string[indice] != ' '){
		indice--;
 	}
 	posições[0]=indice;
 }

int main(void)
{
 	char nome[30];
 	char ultimo_sobrenome[15];
 	char espaco_branco = ' ';
 	printf("digite seu nome completo com os espacos e sem acentos. \n");
 	setbuf(stdin,NULL);
   	gets(nome);
	acha_indices(posições,nome,nome,espaco_branco);
 	printf("seu ultimo sobrenome Comeca Na Posicao %d e eh ", posições[0]);
 	while(nome[indice] != '\0'){
	    printf("%c",nome[indice]);
        indice++;
 	}
 	printf("\n\n");
 	system("pause");
 	return 0;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

 @devair1010 muito obrigado, excelente. acredito que com o que já tinha visto não conseguiria chegar aí sozinho. a cedilha e os acentos foi falha mesmo, já sabia e as corrigir. o programa rodou legal só acusou uma falha de sintaxe na linha: fim=strlen(string); mas declarei a biblioteca #include <string.h> e resolveu. muito obrigado mesmo.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!