Está en la página 1de 25

Ejemplo 1: Programa que calcula el factorial de 'n' números

introducidos desde teclado.

Primera versión:

#include <stdio.h>
/* Factorial de un número - versión 1- */

long int factorial (int x) /*definición de función*/


{
int i;
long int fac = 1;
for (i=2; i<=x; i=i+1) fac=fac*i;
return (fac);
}

main () /* función principal */


{
int a;
do
{
printf ("\n Introduce el numero ");
scanf ("%d", &a);
if (a>0)
printf ("El factorial es %ld", factorial (a));
} while (a > 0);
}

-1-
Segunda versión:

#include <stdio.h>

void factorial (int x) /* definición de función */


{
int i;
long int fac = 1;
for (i=2; i<=x; i=i+1) fac=fac*i;
printf ("El factorial de %d es %ld", x, fac);
}

main () /* función principal */


{
int a;

do
{
printf ("\n Introduce el número ");
scanf ("%d", &a);
if (a>0)
factorial (a);
} while (a > 0);
}

-2-
Ejemplo 2:
Programa que calcula el máximo de 3 números enteros.

Primera versión:

#include <stdio.h>
/* Máximo de 3 números */

int maximo (int x, int y) /* definición de función */


{
if (x > y) return x;
else return y;
}

main () /* función principal */


{
int a,b,c,res;
printf ("Introduce los 3 números ");
scanf ("%d %d %d", &a, &b, &c);
res = maximo (a,b);
printf ("El máximo es %d", maximo(res,c));
}

-3-
Segunda versión:

#include <stdio.h>
/* Maximo de 3 números */

int maximo (int x, int y) /* definición de función */


{
int max;
if (x > y) max=x;
else max=y;
return (max);
}

main () /* función principal */


{
int a,b,c;
printf ("Introduce los 3 números ");
scanf ("%d %d %d", &a, &b, &c);
printf ("El máximo es %d ", maximo (maximo(a,b), c));
}

-4-
Ejemplo 3.
Programa que convierte un carácter minúscula a mayúscula.

#include <stdio.h>

char minus_mayus (char c2) /* definición de función */


{
char cf;
if (c2 >= 'a' && c2 <= 'z') cf= 'A'+c2-'a';
else cf=c2;
return (cf);
}

main () /* función principal */


{
char c1;
printf ("Introduce carácter ");
scanf ("%c",&c1);
printf ("El carácter mayúscula es %c",
minus_mayus (c1));
}

-5-
Ejemplo 4.
Programa que calcula los múltiplos de 3,4,5,6 y 7 que hay entre 1
y 100.

#include <stdio.h>

void multiplos (int a) /* definición de función */


{
int i;
for (i=a*2; i<=100; i=i+a)
printf (" %d", i);
}

main () /* función principal */


{
int i=3;
while (i <= 7)
{
printf ("\n Múltiplos del %d :", i);
multiplos (i);
i=i +1;
}
}

-6-
Ejemplo 5:

#include <stdio.h>

void modificar (int a) /* definición de función */


{
a=a *3;
printf ("\n Valor desde la función %d", a);
}

main ()
{
int a=2;
printf (" \nValor antes de llamar a la función %d", a);
modificar (a);
printf ("\n Valor después de llamar a la función %d", a);
}

Salida del programa:

Valor antes de llamar a la función 2


Valor desde la función 6
Valor después de llamar a la función 2

-7-
Ejemplo 6:

#include <stdio.h>

int func (int x) /* definición de función */


{
int y;
y=x*x;
return (y);
}

main () /* función principal */


{
int a, i;
for (i=1;i<=5;i=i+1) {
a= func (i);
printf ("%d ", a);
}
}

-8-
Ejemplo 7
#include <stdio.h>
#include <math.h>

int func (int x) /* definición de función */


{
int i;
i=pow (x,2);
return (i);
}

main () /* función principal */


{
int a, i;

for (i=1;i<=5;i=i+1) {
a= i*i+func (i);
printf ("%d ", a);
}
}
• En el ejemplo 7, tanto la función 'main' como 'func' tienen
declaradas dos variables locales con el mismo nombre 'i'. Ambas
variables son independientes, y no interfieren entre sí.

-9-
Ejemplo 8:

#include <stdio.h>

int a= 3; /* variable global */

int func (int x) /* definición de función */


{
a=a+x;
return (a);
}

main () /* función principal */


{
int cont;

for (cont=1;cont<=5;cont=cont+1)
{
a= func (cont);
printf ("%d ", a);
}
}

• La salida del programa 8 será:


a= 3+1= 4
a= 4+2=6
a= 6+3=9
a= 9+4=13
a= 13+5= 18

-10-
Ejemplo 9:

#include <stdio.h>
#define N 25

int vector [N];

void lectura ()
{
int i;

for (i=1; i<=N; i++)


scanf ("%d", &vector[i]);
}

main ()
{
lectura ();
}

-11-
Ejemplo 10:

#include <stdio.h>
#define N 25
#define M 50

void lectura (int A [], dim)


{
int i;
for (i=0; i<dim; i++)
scanf ("%d", &A[i]);
}

main ()
{
int V1[N], V2[M];

lectura (V1, N);


lectura (V2, M);
}

-12-
5.6.- EJEMPLOS DE UTILIZACION DE FUNCIONES.

Ejemplo 11:

#include <stdio.h>
int a= 100, b=200;
int func1 (int x) /* definición de función */
{
if (x < 100) return (a+x);
else return b;
}

int func2 (int x)


{
int prod=1;
prod=prod*x;
return (prod);
}
main () /* función principal */
{
int cont,c;
for (cont=1;cont<=5;cont++)
{
c=func2 (cont);
printf ("%d ", func1 (c));
}
}

Ejemplo 12:

-13-
#include <stdio.h>
int a= 100, b=200;
int func1 (int x) /* definición de función */
{
int c;
c=func2 (x);
if (c < 100) return (a+c);
else return b;
}

int func2 (int x)


{
int prod=1;
prod=prod*x;
return (prod);
}

main () /* función principal */


{
int cont;
for (cont=1;cont<=5;cont++)
printf ("%d ", func1 (cont));
}

-14-
Ejemplo 13: Declaración por adelantado.

#include <stdio.h>

int a= 100, b=200;

main () /* función principal */


{
int cont;
float func1 (); /*declaración por adelantado de func1*/

for (cont=1;cont<=5;cont++)
printf ("%f ", func1 (cont));
}

float func1 (int x) /* definición de función */


{
char c;
char func2 (); /*declaración por adelantado de func2 */

c=func2 (x);
if (c < 100) return c*0.01;
else return c*0.1;
}
char func2 (int x) /* definición de función */
{
return x;
}

Ejemplo 14:

-15-
#include <stdio.h>
int a= 0, b=1;

int func1 (int a) /* definición de función */


{
b= func2 (a+1) +1;
return b;
}

int func2 (int a) /* definición de función */


{
return (b+a);
}

main () /* función principal */


{
int cont;

for (cont=1;cont<=5;cont++)
{
b= b+ func1 (a+1) + 1;
printf ("%d ",b);
}
}

-16-
Ejemplo 15:

#include <stdio.h>
int a= 0, b=1;

int func1 (int a) /* definición de función */


{
int b;

b= func2 (a+1) +1;


return b;
}

int func2 (int a) /* definición de función */


{
return (b+a);
}

main () /* función principal */


{
int cont;

for (cont=1;cont<=5;cont++)
{
b= b+ func1 (a+1) + 1;
printf ("%d ",b);
}
}

-17-
5.7.- DISEÑO MODULAR CON FUNCIONES.

Ejemplo 16: Diseña un algoritmo que devuelva la suma de


todos los números primos que hay entre 1 y 100.

#include <stdio.h>

int primo (int x)


{
int D;

if (x==1) return 1;
else { D=2;
while (x % D != 0) D=D+1;
if (D==x) return 1;
else return 0;
}
}
main ()
{
int suma=0, i;

for (i=1; i<=100; i++)


if (primo(i)) suma=suma+1;
printf ("El número de números primos es %d", suma);
}
Ejemplo 17: Hacer un programa en C que lea un array de
números enteros y posteriormente modifique el array sumándole
una unidad a cada elemento.
-18-
#include <stdio.h>
#define n 5
void leervector (int A [])
{int i;
for (i=0; i<n; i++)
{ printf ("\n Introduce un número: ");
scanf ("%d", &A[i]);
}
}
void modifvector (int B [])
{ int i;
for (i=0; i<n; i++) B[i]++;
}
void escribevector (int C [])
{ int i;
for (i=0; i<n; i++) printf ("\n%d", C[i]);
}

main ()
{
int V[n];
leervector (V);
modifvector (V);
escribevector (V);
}

Ejemplo 18: Tenemos un conjunto de 100 alumnos y para cada


uno de ellos las calificaciones correspondientes a 7 asignaturas
(numeradas del 1 al 7). Diseñar un algoritmo que imprima al final
la nota media del curso de todos los alumnos.

-19-
#include <stdio.h>
#define N_ALU 100
#define N_ASIG 7
void inicializa_vector (float A[])
{int i;
for (i=0; i<N_ALU; i++) A[i]=0;
}
void escribe_valores (float A[])
{int i;
for (i=0; i<N_ALU; i++)
printf ("\nLa nota del alumno %d es %g",
i,A[i]/N_ASIG);
}
main ()
{float notas[N_ALU], calificacion;
int i,j;
inicializa_vector (notas);
for (i=0; i<N_ALU; i++)
for (j=1; j<=N_ASIG; j++)
{ printf ("\n Introduce la nota del alumno %d ", i);
scanf ("%f", &calificacion);
notas[i]=notas[i]+calificacion;
}
escribe_valores (notas);
}
Ejemplo 19: Hacer un programa en C que sume dos matrices de
números.
#include <stdio.h>
#define n 3

-20-
void leermatriz (int matriz[][n]) /* lee matriz de 3*3 */
{
int i,j;

for (i=0; i<n; i++)


for (j=0; j<n; j++)
{
printf ("\nDame el valor del elemento m (%d %d) ", i,j);
scanf ("%d", &matriz[i][j]);
}
}

void sumamatriz (int m1[][n],int m2[][n], int m3[][n])


{

int i,j;

for (i=0; i<n; i++)


for (j=0; j<n; j++)
m3[i][j]=m1[i][j]+m2[i][j];
}

-21-
void vermatriz (int m[][n])
{
int i,j;

for (i=0; i<n; i++)


for (j=0; j<n; j++)
printf ("\nEl elemento m(%d %d)es %d", i,j, m[i][j]);
}

main ()
{
int matriz1[n][n], matriz2[n][n], matriz3[n][n];

printf ("\n Introduce valores de la primera matriz");


leermatriz (matriz1);
printf ("\n Introduce valores de la segunda matriz");
leermatriz (matriz2);
sumamatriz (matriz1, matriz2, matriz3);
vermatriz (matriz3);
}

-22-
Ejemplo 20: Dada la estructura de tipo 'cliente' definida en los
ejemplos anteriores, hacer una función en C que amplíe el saldo
de las cuentas en un 5% si el último pago se ha realizado en los
6 primeros meses del año.
#include <stdio.h>

int actualizar (int mes, int saldo)


{
if (mes<=6) return (0.05*saldo);
else return 0;
}
main ()
{
int i;
struct fecha {int mes; int dia; int anyo;};

struct cuenta {
int num_cuenta;
char tipo_cuenta;
char nombre[80];
float saldo;
struct fecha ult_pago;
} cliente[100];

for (i=0; i<100; i++)


cliente[i].saldo=cliente[i].saldo+
actualizar(cliente[i].ult_pago.mes, cliente[i].saldo);
}

-23-
Ejemplo 21: Definir una estructura para caracterizar un punto
mediante sus dos coordenadas en el plano (x e y) y otra para
definir un rectángulo en función de dos puntos. Hacer
posteriormente una función en C para determinar si dado un
punto, éste se encuentra dentro del rectángulo.

#include <stdio.h>

struct punto { int x; int y; };

struct rectangulo {
struct punto pt1;
struct punto pt2;
};

struct punto makepoint (int x, int y)


{
struct punto puntaux;

puntaux.x=x;
puntaux.y=y;
return puntaux;
}

-24-
int puntrect (struct punto p1, struct rectangulo rect)
{

if ((p1.x >= rect.pt1.x) && (p1.x <= rect.pt2.x) &&


(p1.y >= rect.pt1.y) && (p1.y <= rect.pt2.y)) return 1;
else return 0;
}

main ()
{

struct punto puntx;


struct rectangulo rect;

rect.pt1=makepoint (3,4);
rect.pt2=makepoint (6,10);

puntx=makepoint (5,8);

if (puntrect (puntx, rect))


printf ("\nEl punto está en el rectángulo ");
else
printf ("\nEl punto no está en el rectángulo ");
}

-25-

También podría gustarte