GBC014 – Programação Procedimental
Assunto: Função
Aula Prática
Atividade 1
Versão: 1.0-2013
Faça um programa que leia um número do tipo inteiro e elabore uma função que receba esse
valor como parâmetro e retorne 0 se o número for par ou 1 se o número for ímpar.
Atividade 2
Faça um programa que leia uma data (DD/MM/AAAA, passe para uma função que reajuste esta
data em cinco dias. Deve ser verificado o número de dias (máximo 31 dias para os meses 1, 3, 5,
7, 8 e 10), meses (fevereiro com 28 ou 29 dias) e, se necessário a modificação no ano.
Atividade 3
Faça uma função que receba como argumento os valores dos lados de um triângulo, a função
deverá retornar 0 se triângulo for equilátero, 1 se for isósceles ou 2 se for escaleno.
Atividade 4
Faça uma função que desenhe linhas de caracteres na tela, a função receberá como argumento o
tipo de caractere e o número de linhas que deverá imprimir.
Atividade 5
Faça um programa que tenha um menu de conversão de reais (R$) para dolares (US$) e US$ para
R$, cada conversão devera ter uma função que receba o valor e retorne o valor convertido.
Atividade 6
Faça um programa que peça um número para calcular o fatorial. O programa deve ter uma função
que verifique se a entrada é valida ( maior que 0 ) e se não for fique repetindo, esta função deve
utilizar passagem de parâmetro por referencia. Outra função para calcular o fatorial ( passagem
de parâmetro por valor ).
1
http://www.manfred.com.br/index.php/ads/estrutura-de-dados/81-aula-02-lista-de-exercicios-01-sobre-funcoes-e
m-c-ansi
bs.:
- Todas as codificações deveram ser realizadas em C ANSI e deve ser coladas em baixo de cada
questão.
- A entrega desta atividade será até o dia 11/08/2011, por email do professor.
1.
Faça um programa que leia um número, passe este número como parâmetro para uma
função que retorne 0 se o número for par ou 1 se o número for ímpar.
#include <stdio.h>
int valida(int n);
int main(void){
int numero;
// entrada de dados
printf("Digite um numero: ");
scanf("%i",&numero);
fflush(stdin);
// chamada da função valida
switch (valida(numero)){
case 0:
printf("E Par!");
break;
2
case 1:
printf("E Impar!");
break;
}
if (valida(numero)==0){
printf("E Par!");
}else if (valida(numero)==1){
printf("E Impar!");
}
getch();
return 0;
}
int valida(int n){
// processo
if ((n%2)==0){
return 0;
}else{
return 1;
}
}
2. Escreva uma função que receba como argumento o ano e retorne 1 se for ano bissexto ou 0
se não for um ano bissexto.
3.
Faça uma função que desenhe linhas de caracteres na tela, a função receberá como
argumento o tipo de caractere e o número de linhas que deverá imprimir.
#include <stdio.h>
/* prototipo da funçào imprime caracter na tela */
void imprimeCaractere (int n, char c);
int main (void){
3
/* variáveis locais da funçào principal */
int nLinha;
char tCaractere;
/* entrada dos dados nLinha e tCaractere */
printf("Digite o numero de linhas: ");
scanf("%i",&nLinha);
fflush(stdin);
printf("Digite o tipo caractere : ");
scanf("%c",&tCaractere);
fflush(stdin);
/* chamada da função imprimeCaractere */
imprimeCaractere(nLinha,tCaractere);
/* um pause para ver o resultado do programa */
getch();
return 0;
}
/* funçào imprime caracter na tela */
void imprimeCaractere (int n, char c){
/* variáveis locais da função imprimeCaractere */
int i, j;
/* impressão das linhas em tela */
printf("\n");
for (j=0;j<n;j++){
for (i=0;i<79;i++){
printf("%c",c);
}
printf("\n");
}
}
4
4. Faça um programa que tenha um menu de conversão de R$ para US$ e US$ para R$, cada
conversão devera ter uma função que receba o valor e retorne o valor convertido
5.
Fazer um programa que possibilite várias opções de cálculos a partir de um menu. O
programa chamará a função correspondente a cada cálculo.
[ a ] S = 1/1 + 3/2 + 5/3+........+ 99/50
[ b ] S = 1/1 - 2/2 + 3/3 -..........- 10/10
[ c ] S = 1000/1 - 997/2 + 994/3.........
[ d ] S = 480/10 - 475/11 + 470/12 - .......
[ f ] FIM
Obs.: Nas opções [c] e [d] fazer os cálculos para os 20 primeiros termos.
#include <stdio.h>
/* prototipo das função fA,fB,fC,fD,fF */
void fA (void);
void fB (void);
void fC (void);
void fD (void);
void fF (void);
int main (void){
char op;
do{
system("cls");
printf("[ a ] S = 1/1 + 3/2 + 5/3+........+ 99/50\n");
printf("[ b ] S = 1/1 - 2/2 + 3/3 -..........- 10/10\n");
printf("[ c ] S = 1000/1 - 997/2 + 994/3.........\n");
printf("[ d ] S = 480/10 - 475/11 + 470/12 - .......\n");
printf("[ f ] FIM\n");
printf("\nDigite a opcao: ");
scanf("%c",&op);
fflush(stdin);
switch (op){
case 'a':
fA();
5
break;
case 'b':
fB();
break;
case 'c':
fC();
break;
case 'd':
fD();
break;
case 'f':
fF();
break;
default:
printf("\nERRO! Opcao invalida.");
getch();
break;
}
}while( op!='f' );
}
void fA (void){
int i,j;
float s=0;
system("cls");
printf("S = 1/1 + 3/2 + 5/3+........+ 99/50\n");
for (i=1,j=1;i<=99,j<=50;i+=2,j++){
s=s+i/j;
}
printf("S = %f",s);
getch();
}
void fB (void){
int i;
float s=0;
6
system("cls");
printf("S = 1/1 - 2/2 + 3/3 -..........- 10/10\n");
for (i=1;i<=10;i++){
if ((i%2)==0){
s=s-i/i;
}else{
s=s+i/i;
}
}
printf("S = %f",s);
getch();
}
void fC (void){
int i,j, cont=1;
float s=0;
system("cls");
printf("1000/1 - 997/2 + 994/3.........\n");
for (i=1000,j=1;i>=1;i-=3,j++){
if ((i%2)==0){
s=s+i/j;
}else{
s=s-i/j
;
}
cont=cont+1;
if (cont==20){
break;
}
}
printf("S = %f",s);
getch();
}
void fD (void){
int i,j, cont=1;
7
float s=0;
system("cls");
printf("S = 480/10 - 475/11 + 470/12 - .......\n");
for (i=480,j=10; i>=1; i-=5,j++){
if ((j%2)==0){
s=s-i/j;
}else{
s=s+i/j;
}
cont=cont+1;
if (cont==20){
break;
}
}
printf("S = %f",s);
getch();
}
void fF (void){
system("cls");
printf("Ate mais...");
sleep(600);
}
6.
Faça uma função que receba como argumento os valores dos lados de um triângulo, a
função deverá retornar 0 se triângulo for equilátero, 1 se for isósceles ou 2 se for escaleno.
#include <stdio.h>
/* prototipo da função verificaTriangulo */
int verificaTriangulo (float a, float b, float c);
int main (void){
/* Variáveis locais */
float lA, lB, lC;
8
/* Entrada de dados - lados do trianculo */
printf("Digite o lado A do triangulo: ");
scanf("%f",&lA);
fflush(stdin);
printf("Digite o lado B do triangulo: ");
scanf("%f",&lB);
fflush(stdin);
printf("Digite o lado C do triangulo: ");
scanf("%f",&lC);
fflush(stdin);
/* Chamada da função verificaTriangulo */
switch (verificaTriangulo(lA,lB,lC)){
case 0:
printf("Triangulo equilatero\n");
break;
case 1:
printf("Triangulo isoceles\n");
break;
case 2:
printf("Triangulo escaleno\n");
break;
default:
printf("Nao e um triangulo\n");
break;
}
getch();
return 0;
}
/* função verificaTriangulo */
int verificaTriangulo (float a, float b, float c){
if ( (a==b) && (b==c) ){
return 0;
}else if (((a+b)>c) && (a==b) || ((a+c)>b) && (a==c) || ((b+c)>a) && (b==c)){
return 1;
9
}else if ((a!=b) && (a!=c) && (b!=c) && ((a+b)>c) && ((a+c)>b) && ((b+c)>a)){
return 2;
}else{
return 9;
}
7. Faça uma função que calcule a média de uma sequencia de valores, os valores deverão ser
passados por meio de um vetor.
8. Faça um programa que leia uma data, passe para uma função que reajuste esta data em
cinco dias.
#include <stdio.h>
/* Prototipo da função reajusteData */
void reajusteData (int d, int m, int a);
int main (void){
/* variáveis locais */
int DD, MM, AAAA;
/* Entrada de dados */
printf("Digite uma data (DD/MM/AAAA): ");
scanf("%i%*c%i%*c%i",&DD,&MM,&AAAA);
fflush(stdin);
/* Chamada da função reajusteData */
reajusteData(DD,MM,AAAA);
getch();
return 0;
}
/* Função reajusteData */
void reajusteData (int d, int m, int a){
d=d+5;
1
if (((m==1) || (m==3) || (m==5) || (m==7) || (m==8) || (m==10)) && (d>31)) {
d=d-31;
m=m+1;
}else if (((m==4) || (m==6) || (m==9) || (m==11)) && (d>30)) {
d=d-30;
m=m+1;
}else if ((m==2) && (a%4==0) && (d>29)) {
d=d-29;
m=m+1;
}else if ((m==2) && (a%4!=0) && (d>28)) {
d=d-28;
m=m+1;
}else if ((m==12) && (d>31)){
d=d-31;
m=1;
a=a+1;
}
printf("\nNova data : %i/%i/%i",d,m,a);
}
9. Faça um programa que peça um número para calcular o fatorial. O programa deve ter uma
função que verifique se a entrada é valida ( maior que 0 ) e se não for fique repetindo, esta
função deve utilizar passagem de parâmetro por referencia. Outra função para calcular o
fatorial ( passagem de parâmetro por valor ).
10.
Faça um programa que tenha uma função que receba como parâmetros um valor
para base e um para o expoente e retorne o resultado (base elevada ao expoente). Faça
também uma função para mostrar o resultado na tela.
Fornecido por Joomla!®
1
1
Download

BC0501 - Linguagens de Programação