Structs, unions, vetores, strings II
Contato
- Jean Paulo Martins (jeanmartins utfpr edu br)
- Sala 105, Bloco S (UTFPR - Campus Pato Branco)
Conteúdo
Revisão da aula anterior
-
Material sobre linguagem C (IME-USP)
-
LEIA LIVROS SOBRE PROGRAMAÇÃO!
- Argumentos de entrada:
argc
eargv[]
- Redirecionamento de entrada à
scanf
- Transformando strings:
atoi
,atol
,atof
: - Revisar a idéia de organização de memória:
struct
vsvetor
Structs
Uma struct
pode ser heterogênea e conter diversos tipos de dados ao mesmo tempo:
- Usar o fato do char nome não estar no fim, para ilustrar a estrutura de memória da structs
#define MAX_STR 100
struct Pessoa {
// Tamanho variável deve ficar no fim da struct.
char nome[MAX_STR];
long cpf;
int idade;
};
Definindo tipos com typedef
- Implementar exemplos simples
typedef int Inteiro;
typedef char* String;
- Retornar ao exemplo de pessoas
#define MAX_STR 100
typedef struct {
char nome[MAX_STR]; // Tamanho variável deve ficar no fim da struct.
long cpf;
int idade;
} Pessoa;
Exercícios durante a aula
1. Manipulação de structs e funções
- Criar um vetor de structs Pessoa:
struct Pessoa p[100]
- Ler informações das pessoas de um arquivo, por meio de
scanf
e redirecionamento - Implementar uma função que imprima todos os nomes das pessoas em
p
- Implementar uma função que imprima todas as idades das pessoas em
p
- Implementar uma função que retorne a média de idade das pessoas em
p
- Implementar uma função que retorne o desvio padrão da idades das pessoas em
p
Ler as informações iterativamente por scanf e armazenar em cada struct.
Implementar uma função que receba o vetor de structs e retorne a média de idade.
float media_idade(struct Pessoa p[] );
float desvio_padrao_idade(struct Pessoa p[]);
void print_idades(struct Pessoa p[]);
void print_nomes(struct Pessoa p[]);