Académique Documents
Professionnel Documents
Culture Documents
Linguagem de Programao I
Professora Simoni Rangel de Freitas Oliveira
struct data{
int dia, mes, ano;
};
struct funcionario{
char nome[50];
double salario;
struct data nascimento;
}x;
Exemplo: altera_salario(x.salario);
Funo altera_salario
double altera_salario (double salario)
{
double novo_salario;
novo_salario= salario*1.1;
return novo_salario;
}
x.salario=altera_salario(x.salario);
A passagem de toda uma estrutura para uma funo pode ser feita por valor. Na
definio da funo o parmetro declarado deve ser do tipo da estrutura que est
sendo passada.
Exemplo:
1
UNIPLI
Linguagem de Programao I
Professora Simoni Rangel de Freitas Oliveira
Exemplo 1:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//Prottipo da funo
void imprime(struct funcionario p);
//Funo principal
int main()
{
int i;
struct funcionario x, y;
strcpy(x.nome,"Adriana Martins");
x.salario=500.00;
x.nascimento.dia=10;
x.nascimento.mes=5;
x.nascimento.ano=1982;
strcpy(y.nome,"Luciano Araujo de Lima");
y.salario=540.00;
y.nascimento.dia=23;
y.nascimento.mes=8;
y.nascimento.ano=1983;
puts("\nFuncionarios:\n");
imprime(x);
imprime(y);
system("pause");
return 0;
}
//Funo
void imprime(struct funcionario p)
{
puts(p.nome);
printf("Salario: %.2lf", p.salario);
printf("\nData de nascimento: %d/%d/%d\n\n", p.nascimento.dia,
p.nascimento.mes, p.nascimento.ano);
}
2
UNIPLI
Linguagem de Programao I
Professora Simoni Rangel de Freitas Oliveira
No programa do Exemplo 1,
as estruturas x e y so do tipo struct funcionrio
imprime(x); // passagem por valor
mprime(y); // passagem por valor
Sada:
Funcionarios:
Adriana Martins
Salario: 500.00
Data de nascimento: 10/5/1982
Sintaxe:
typedef tipo novo-nome;
Exemplos:
3
UNIPLI
Linguagem de Programao I
Professora Simoni Rangel de Freitas Oliveira
Exemplo 2:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 20
//Prottipo da funo
void imprime(Funcionario p[N], real media);
//Funo principal
int main()
{
inteiro i;
real m=0.0;
Funcionario x[N];
m=m/N;
puts("\nFuncionarios:\n");
imprime(x, m);
system("pause");
return 0;
}
4
UNIPLI
Linguagem de Programao I
Professora Simoni Rangel de Freitas Oliveira
//Funo
void imprime(Funcionario p[N], real media)
{
inteiro i;
for(i=0; i<N; i++)
{
puts(p[i].nome);
printf("Salario: R$%.2f", p[i].salario);
printf("\nData de nascimento: %d/%d/%d\n\n",
p[i].nascimento.dia,p[i].nascimento.mes, p[i].nascimento.ano );
}
printf(" Media de salario: R$%.2f\n", media);
}
Bibliografia