ejemplo 1: programa que calcula el factorial de 'n...

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-

Upload: duonghuong

Post on 06-Feb-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 2: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 3: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 4: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 5: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 6: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 7: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 8: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 9: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 10: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 11: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 12: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 13: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 14: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

#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-

Page 15: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 16: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

#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-

Page 17: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 18: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 19: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

#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-

Page 20: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

#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-

Page 21: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 22: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 23: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 24: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-

Page 25: Ejemplo 1: Programa que calcula el factorial de 'n ...users.dsic.upv.es/~fgarcia/topo/Transparencias/traspas6.pdf · Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos

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-