Ejemplos de C - Funciones

1.- Programa que calcula el area de la circunferencia o el volumen de la esfera:

#include<stdio.h>
void fmenu(void);
void fpedir_datos(void);
void farea(void);
void fvolumen(void);
void fsacar_datos(void);

/*declaracion de variables globales*/
int op;
long int radio;
float area,volumen;
/*programa principal*/
void main()
{
fmenu();
if (op==1)
{
fpedir_datos();
farea();
}
else
{
if (op==2)
{
fpedir_datos();
fvolumen();
}
}
fsacar_datos();
}

/*funciones*/
void fmenu(void) /*envia el menu y toma opcion del proceso a realizar*/
{
puts(" MENU DE OPCIONES\n");
puts(" ------------------\n");
puts("1. CALCULAR AREA DE LA CIRCUNFERENCIA\n");
puts("2. CALCULAR VOLUMEN DE LA ESFERA\n");
puts("3. SALIR\n");
puts("");
puts("ELIJA LA OPCION DESEADA...");
scanf("%d",&op);
while (op!=1 && op!=2 && op!=3)
{puts("\nOpcion erronea, teclee una entre 1,2 o 3..."); /*validacion*/
scanf("%d",&op);
}

}

void fpedir_datos(void) /*pide y toma de consola el dato del radio*/
{
puts("\nDame el radio de la circunferencia en cm.:");
scanf("%ld",&radio);
}

void farea(void) /*calcula el area de la circunferencia*/
{
area=(float)3.1416*(float)radio*(float)radio;
}

void fvolumen(void) /*calcula el volumen de la esfera*/
{
volumen=(float)3.1416*(float)radio*(float)radio*(float)radio*4/3;
}

void fsacar_datos(void) /*salida de resultados*/
{
if (op==1)
printf("\nEl area de la circunferencia es %.2f cm2",area);
else
{
if (op==2)
printf("\nEl volumen de la circunferencia es %.2f cm3",volumen);
}
}

2.- Programa similar al anterior pero con funciones distintas:

#include<stdio.h>
int fmenu(void);
double fpedir_datos(void);
double farea(double rad);
double fvolumen(double rad);
void fsacar_datos(int tip,double res);

void main()
{ /*declaracion de variables*/
int op;
double resultado,radio;

/*cuerpo principal*/
op=fmenu();
switch(op)
{
case 1: {
radio=fpedir_datos();
resultado=farea(radio);
}
break;
case 2: {
radio=fpedir_datos();
resultado=fvolumen(radio);
}
break;
case 3: break;
}
fsacar_datos(op,resultado);

}
/*funciones*/
int fmenu(void) /*envia el menu y toma opcion del proceso a realizar*/
{
int opci;
puts(" MENU DE OPCIONES\n");
puts(" ------------------\n");
puts("1. CALCULAR AREA DE LA CIRCUNFERENCIA\n");
puts("2. CALCULAR VOLUMEN DE LA ESFERA\n");
puts("3. SALIR\n");
puts("");
puts("ELIJA LA OPCION DESEADA...");
scanf("%d",&opci);
while (opci!=1 && opci!=2 && opci!=3)
{
puts("\nOpcion erronea, teclee una entre 1,2 o 3...");
scanf("%d",&opci); /*validacion*/
}
return(opci);
}

double fpedir_datos(void) /*lee el valor del radio*/
{
double radious;
printf("Introduzca el radio:");
scanf("%lf",&radious);
return(radious);
}

double farea(double radious) /*calcula el area de la circunferencia*/
{
double areaa;
areaa=3.1416*radious*radious;
return(areaa);
}

double fvolumen(double radious) /*calula el volumen de la esfera*/
{
double volumen_umen;
volumen_umen=(double)4/3*3.1416*radious*radious*radious;
return(volumen_umen);
}

void fsacar_datos(int tipop,double resultadop) /*saca resultados en pantalla*/
{
switch (tipop)
{
case 1: printf("\nEl area de la circunferencia es %.4lf cm2",resultadop);
break;
case 2: printf("\nEl volumen de la esfera es %.4lf cm3",resultadop);
break;
case 3: break;
}
}

3.- Programa que trata los datos de los usuarios de una compañia telefónica:

#include<stdio.h>
void fentrada(long int *abonado,char *nom,char *ape,char *dir,int *linea,int *telefono,int*pasos);
int flinea(int linea);
int ftelefono(int telefono);
int fpasos(int pasos);
int fiva(int importe);
void fsalida(long int abonado,char *nom,char *ape, char *dir, int linea,int imp_linea,int telefono,int imp_telefono,int pasos, int imp_pasos,int imp_iva);

void main()
{
char res,nom[20],ape[20],dir[30];
int linea,telefono,pasos,importe,imp_linea,imp_telefono,imp_pasos,imp_iva;
long int abonado;
do
{
fentrada(&abonado,nom,ape,dir,&linea,&telefono,&pasos);
imp_linea=flinea( linea);
imp_telefono=ftelefono(telefono);
imp_pasos=fpasos ( pasos);
importe=imp_linea+imp_telefono+imp_pasos;
imp_iva=fiva (importe);
fsalida( abonado, nom, ape, dir, linea, imp_linea, telefono, imp_telefono, pasos, imp_pasos, imp_iva);
puts("Si quiere dar datos de otro usuario teclee -S-");
fflush(stdin);
res=getchar();
}
while (res=='s' || res=='S');
}
/*FUNCIONES*/
void fentrada(long int *abonado,char *nom,char *ape, char *dir,int *linea,int *telefono,int *pasos)
{
printf("Teclea numero de abonado\n");
scanf("%ld",abonado);
printf("Teclea nombre\n");
fflush(stdin);
gets(nom);
printf("Teclea apellidos\n");
fflush(stdin);
gets(ape);
printf("Teclea direccion\n");
fflush(stdin);
gets(dir);
printf("Teclea tipo de linea, tipo de telefono y numero de pasos\n");
scanf("%d%d%d",linea,telefono,pasos);
}
int flinea(int linea)
{
int imp_linea;
if (linea>5)
{imp_linea=1200;}
else{ if (linea<=10)
imp_linea=1500;
else if (linea>10)
imp_linea=2000;}
return(imp_linea);
}
int ftelefono (int telefono)
{
int imp_telefono;
switch(telefono)
{
case 1: imp_telefono=250;
break;
case 2: imp_telefono=300;
break;
case 3: imp_telefono=400;
break;
default: imp_telefono=500;
break;
}
return(imp_telefono);
}
int fpasos(int pasos)
{
int imp_pasos;
imp_pasos=6*pasos;
return(imp_pasos);
}
int fiva(int importe)
{
int imp_iva;
imp_iva=importe*16/100;
return(imp_iva);
}
void fsalida(long int abonado, char *nom, char *ape, char *dir, int linea,int imp_linea, int telefono, int imp_telefono,int pasos,int imp_pasos,int imp_iva)
{
long int tpagar;
int importe;
printf("NUMERO DE ABONADO: %ld\n",abonado);
printf("APELLIDOS Y NOMBRE: %s %s\n",nom,ape);
printf("DIRECCION: %s\n",dir);
printf("DETALLE DE CONCEPTOS IMPORTES\n");
printf("------------------------------------------------------------------------------\n");
printf("1.- CUOTAS DE ABONO\n");
printf("TIPO LINEA %d %d\n",linea,imp_linea);
printf("TIPO TELEFONO %d %d\n",telefono,imp_telefono);
printf(" 2.- SERVICIO AUTOMATICO\n");
printf("NUMERO DE PASOS %d %d\n",pasos,imp_pasos);
printf(" ----------------\n");
importe=imp_linea+imp_telefono+imp_pasos;
printf(" TOTAL IMPORTES %d\n",importe);
printf("IVA %d\n",imp_iva);
printf(" -----------------\n");
tpagar=importe+imp_iva;
printf(" TOTAL A PAGAR %d\n",tpagar);
}

 


VOLVER

A PROGRAMAR © 2002. All Rights Reserved.
Hosted by www.Geocities.ws

1