#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <locale.h>
#define tam 3
typedef struct
{
char nome[50];
int idade ;
} pessoa ;
int main()
{
setlocale(LC_ALL, "");
pessoa humana[ tam ]; /// é o vetor que tem posições , e não a struct
int velho = 0,ID_velho,ID_novo,
tm=0, novo = 200, i;
for (i = 0; i < tam; i++)
{
printf("Entre com o nome: ");
fgets(humana[i].nome, 50, stdin); /// pega todos os caracteres digitados ate no maximo
/// a qtd "50" menos 1 que é 49 , pois ele reserva
/// uma posição para o finalizador de string '\0' ,
/// e se digitar menos de 49 ele pega também o newline
fflush(stdin); /// em alguns compiladores funciona sem esses
setbuf(stdin, NULL); /// mas no visual studio precisa
tm = strlen(humana[i].nome);
printf("tam = %d\n", tm);
for (int w = 0; w < tm+1; w++)
{
printf("%d ", w);
if(humana[i].nome[w] != '\n' && humana[i].nome[w] != '\0' )
printf("%c\n", humana[i].nome[w]);
if (humana[i].nome[w] == '\n')
{
printf("eh barra ene !\n");
}
else
{
if (humana[i].nome[w] == '\0')
{
printf("eh barra zero !\n");
}
}
}
humana[i].nome[strlen(humana[i].nome) - 1 ] = '\0';/// remover o newLine que foi
printf("Entre com a idade:"); /// pego pelo fgets por colocar o '\0' que sinaliza o
scanf("%d", &humana[i].idade); /// final da stringsenao ao escrever essas string's ele
/// vai pular uma linha automaticamente
fflush(stdin); /// em alguns compiladores funciona sem esses
setbuf(stdin, NULL); /// mas no visual studio precisa
if (i == 0)
{
ID_velho = humana[i].idade; /// inicializa essas variáveis
ID_novo = humana[i].idade; /// com o primeiro valor inserido pelo usuario
}
}
for (int i = 0; i < tam; i++) /// percorrer todos os elementos do vetor
{
if (humana[i].idade > ID_velho) /// se a idade desse for maior que a do anterior
{
velho = i; /// Marca a posição dessa idade maior
ID_velho = humana[i].idade; /// armazena na variaveL ID_velho o valor dessa maior idade
} /// encontrada ate aqUi
if (humana[i].idade < ID_novo) /// se a idade desse for menor que a do anterior
{
novo = i; /// Marca a posição dessa idade menor
ID_novo = humana[i].idade; /// armazena na variaveL ID_novo o valor dessa menor idade
} /// encontrada ate aqUi
} /// se forem iguais , não precisa fazer nada
/// e deixa do jeito que está
printf("\nO mais velho é %s com %d anos . \n\
\rO mais novo é %s com %d anos .\n\n",
humana[velho].nome, humana[velho].idade ,
humana[novo ].nome, humana[novo].idade );
return 0;
}