Escolar Documentos
Profissional Documentos
Cultura Documentos
Leia atentamente as questões e responda objectivamente (apenas o que lhe é pedido). Neste teste não é permitido
consultar os textos de apoio, colega, celular ou a qualquer outra fonte.
Cotação Perguntas
Dada a estrutura pessoa, com atributos, id, nome completo e idade, considere as
funções abaixo e responda as questões.
Typedef struct pessoa{ Typedef struct no{
int Id, Pessoa pessoa;
char nome[100], Struct * no próximo;
int idade }No
}Pessoa
}
//pop, funcao usada para remover o elemento top da pilha
No * pop (No **pilha){
No * p=*pilha;
if(*pilha==NULL) return NULL;
*pilha=(*pilha)->proximo;
p->proximo=NULL;
return p;
}
//funcao usada para duplicar uma pilha
No * duplicarPilha(No **pilha){
No * nova=NULL;
}
*pilha=aux;
return nova;
}
2. Escreva a uma função para remover segunda pessoa mais velha da pilha
//remover a segunda pessoa mais velha pilha
//1- identificar a pessoa mais velha
//2- identificar a segunda pessoa mais velh
//3 elimnar a segunda pessoa mais velha
No *segundoMaisVelho(No **pilha){
No * pt = duplicarPilha(pilha);
No * maisnovo=maisNovo(pilha);
No *maisvelho=maisVelho(pilha);
No * val,*segundomaisVelho;
Bool primeira=true;
while(pt){
val=pop(&pt);
if(primeira==true){
segundomaisVelho=maisnovo;
primeira=false;
printf("*");
}
else{
printf(".");
{
if((val->p.idade>segundomaisVelho->p.idade)&&(val-
>p.idade!=maisvelho->p.idade))
segundomaisVelho=val;
}
}
}
return segundomaisVelho;
}
No *maisNovo(No **pilha){
No * pt = duplicarPilha(pilha);
No *maisVelhoo=pt;
No * val;
while(pt){
while(pt){
val=pop(&pt);
if(val->p.idade>maisVelhoo->p.idade)
maisVelhoo=val;
}
return maisVelhoo;
}
3. Escrever uma função que devolve o número de repetições de pessoas com idade
igual a pessoa mais velha.
//contador de pessoas com idade igual a mais velho
int contadorDeMaisVelhos(No **pilha){
int total=0;
No * pt = duplicarPilha(pilha);
int max_idade = maisVelho(&pt)->p.idade;
No * val;
while(pt){
val=pop(&pt);
if(val->p.idade==max_idade) total++;
}
return total;
}
4. Escrever uma função que remove tods as pessoa que tenha idades
correspondentes a números primos na pilha.
Bool ehPrimo(int num) {
int i, quantDivisores = 0;
for(i = 1; i <= num; i++) {
if (num%i==0) {
quantDivisores++;
}
}
if (quantDivisores == 2)
{
return true;
} else
{
return false;
}