Ir ao conteúdo

Posts recomendados

Postado
#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
Postado

@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
Postado

 @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.

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...