Informática, perguntado por lazarojcs, 1 ano atrás

Crie um programa em C semelhante que, a partir do nome completo de uma pessoa, informe ao usuário o último sobrenome.
Recomenda-se que você primeiro encontre em qual índice inicia o último sobrenome e em qual índice ele termina. Para saber em qual índice o último sobrenome termina, talvez seja útil saber o tamanho do array. Sabendo esses índices, crie um novo array e copie o conteúdo de um array para o outro, iniciando no índice inicial e indo até o índice final do sobrenome. Por fim, mostre o último sobrenome ao usuário.
Seu programa deve cumprir alguns requisitos:
• o nome completo deve ser específico, como a variável nome do programa visto nesta unidade. Inclusive, você pode usar o mesmo valor para a variável;
• o último sobrenome deve ser guardado em outra variável. No fim do código da função main, uma chamada à função printf deve informar ao usuário esse sobrenome;
• o código responsável por copiar o último sobrenome para outra string deve ficar numa nova função, não na main.
Por exemplo, na string "Maria da Silva", o programa informaria ao usuário como dado de saída a string "Silva".

Dica: reutilize as funções acha_indices e tamanho vistas nesta unidade. Elas não precisam sofrer nenhuma alteração para serem usadas no seu programa.
Releia as unidades sobre manipulação de literais e uso de funções se tiver dúvidas.

Anexos:

Soluções para a tarefa

Respondido por Index
2
Depois de um quase 2 dias eu consegui fazer o seu algoritmo.

Para achar o último sobrenome eu considerei o seguinte: o último sobrenome começa depois do último espaço em branco e termina quando atinge o final do vetor.

Segue abaixo o algoritmo
Anexos:

Index: Fiz no Falcon C++
Index: Se der bug, você pode colocar um printf("Sobrenome: %c", sobrenome[i]); em baixo da linha sobrenome[i] = nome[i];
Index: desconsidera esse meu último comentário
Index: o código correto é printf("%c",sobrenome[i]);
Index: char * copiar (int indiceInicial, int indiceFinal, char nome[50]) {
for(int i = indiceInicial; i <= indiceFinal; i++) {
sobrenome[i] = nome[i];
printf("%c\n", sobrenome[i]);
}
return sobrenome;
}
Respondido por DennisRitchie
3
A resolução está em anexo.

Anexos:
Perguntas interessantes