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

Anuncio
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 ()
{
int a;
/* función principal */
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)
{
int max;
if (x > y) max=x;
else max=y;
return (max);
}
/* definición de función */
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)
{
int y;
y=x*x;
return (y);
}
/* definición de función */
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)
{
int i;
i=pow (x,2);
return (i);
}
/* definición de función */
main ()
{
int a, i;
/* función principal */
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)
{
a=a+x;
return (a);
}
/* definición de función */
main ()
{
int cont;
/* función principal */
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)
{
return x;
}
/* definición de función */
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)
{
return (b+a);
}
main ()
{
int cont;
/* definición de función */
/* función principal */
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)
{
int b;
/* definición de función */
b= func2 (a+1) +1;
return b;
}
int func2 (int a)
{
return (b+a);
}
main ()
{
int cont;
/* definición de función */
/* función principal */
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);
}
-18-
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.
#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);
}
-19-
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.
#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);
}
-20-
Ejemplo 19: Hacer un programa en C que sume dos matrices de
números.
#include <stdio.h>
#define n 3
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-
Descargar