Sie sind auf Seite 1von 2

Universidade Federal de Pernambuco - UFPE

Centro de Informática - CIn


Centro Integrado de Tecnologia da Informação - CITi
PEC - Programa Expresso de Capacitação
Módulo C
Instrutor: Allan Lima - http://allanlima.wordpress.com

1) Qual o exato tipo dos literais exibidos abaixo: (1.0)

a. 10.0 const double


b. -4L const long
c. 074 const int
d. 0x74 const int

2) Um sistema para automação de telemarketing precisa alocar diversos tipos de


dados em um array para representar seus usuários, conforme mostrado a seguir:

typedef struct {
char *nome;
int numeroHorasTrabalho;
}Atendente;

typedef struct {
char *nome;
int numeroHorasTrabalho;
struct Atendentes *subordinados;
int numeroSubordinados;
}GerenteDeGrupo;

typedef struct {
char *nome;
char *senha;
}Administrador;

Crie uma maneira de representar estes dados na memória de forma mais eficiente,
Para que em seguida seja implementada uma função que recebe um array de
Usuários e um inteiro para indicar o tamanho do array, esta função deverá imprimir
todos os dados dos usuários de acordo com seus tipos. (6.0)

typedef struct {
union {
Atendente atendente;
GerenteDeGrupo gerente;
Administrador administrador;
}dados;

enum TipoUsuario tipo;


}Usuario;

void logar(Usuario *usuario) {


int i;

switch (usuario->tipo) {
case (Atend):
printf("ATENDENTE\n");
printf("Nome: %s\nHoras de Trabalho: %d\n",
usuario->dados.atendente.nome,
usuario->dados.atendente.numeroHorasTrabalho);
break;
case (Gerente):
printf("GERENTE\n");
printf("Nome: %s\nHoras de Trabalho: %d\n",
usuario->dados.gerente.nome,
usuario->dados.gerente.numeroHorasTrabalho);
printf("Subordinados: ");
for (i = 0; i <
usuario->dados.gerente.numeroSubordinados;
i++) {

printf("%s ",
usuario->dados.gerente.subordinados[i].nome);
}

printf("\n");
break;
case (Admin):
printf("ADMINISTRADOR DO SISTEMA\n");
printf("Nome: %s\nSenha: %s\n",
usuario->dados.administrador.nome,
usuario->dados.administrador.senha);
break;

default:
printf("TIPO INVALIDO\n");
break;

3) Como você alocaria e depois liberaria memória para um Usuário? (3.0)


Usuario *usr = (Usuario *) malloc(sizeof(Usuario));

free(usr);

Das könnte Ihnen auch gefallen