Sunteți pe pagina 1din 66

Funciones

Computacin

Definicin
una funcin es un bloque de cdigo reconocido por un identificador que realiza un trabajo especfico.
Su propsito es dividir los programas en mdulos manejables separados (divide y vencers). El formato para la declaracin de funciones es:
tipo-devuelto nombre-de-funcin(lista-de-parmetros) { declaraciones e instrucciones }

Declaracin de funciones
Tradicionalmente en C se declaran como prototipos al inicio del programa. Despus se declara la funcin main, y despus se hace la declaracin formal de las funciones.

Tambin pueden declararse las funciones al inicio del programa y despus declarar la funcin main sin declarar prototipo.

Ejemplo de funcin
Nombre de la funcin

Prototipo de la funcin (puede omitirse)


#include <iostream> int cuadrado( int ); // prototipo de la funcin

int main() { // repite 10 veces, calcula e imprime el cuadrado de x for ( int x = 1; x <= 10; x++ ) Llamada a la funcin cout << cuadrado( x ) << " "; cout << endl; return 0; Definicin de la funcin Parmetro con nombre } // definicin de la funcin cuadrado int cuadrado( int y ) //y es una copia del argumento de la funcin { return y * y; // devuelve el cuadrado de y como un int

Parmetro no necesita nombre

} // fin de la funcin cuadrado

Valor que regresa la funcin

Mayor de 3 nmeros
No se especifica el prototipo
double maximo( double x, double y, double z ) { double max = x; // asume que x es el mayor if ( y > max ) // si y es mayor, max = y; // asigna y a max if ( z > max ) // si z es mayor, max = z; // asigna z a max return max; // max es el mayor } int main() { double numero1; double numero2; double numero3; cout << "Introduzca tres numeros de punto flotante: "; cin >> numero1 >> numero2 >> numero3; // numero1, numero2 y numero3 son argumentos // de la funcin maximo cout << "El maximo es: " << maximo( numero1, numero2, numero3 ) << endl; return 0; }

Variable local

Ejemplos
Funcin para calcular el rea de una esfera:
float areaEsfera(float radio){ float PI = 3.14159265358979; return 4*PI*radio*radio; }
parmetro

Variables locales

Funcin para calcular el rea de un tringulo (usar math.h) float areaTriangulo(float a, float b, float c){ float s = (a+b+c)/2; return sqrt(s*(s-a)*(s-b)*(s-c)); parmetros }

Ejemplos de llamas a funciones


#include <iostream.h> float areaEsfera(float);

prototipo

main(){
float r; cout << teclee el valor del radio: ; cin >> r; cout << el area de la esfera es << areaEsfera(r)<<endl; system(pause); } float areaEsfera(float radio){ float PI = 3.14159265358979; return 4*PI*radio*radio; }

prototipo
#include <iostream.h> #include <math.h> float areaTriangulo(float,float,float); main(){ float a,b,c; cout << "teclee el valor de los lados del triangulo: "; cin >> a >> b >> c; cout << "el area del triangulo es "<< areaTriangulo(a,b,c)<<endl; system("pause"); } float areaTriangulo(float a, float b, float c){ float s = (a+b+c)/2; return sqrt(s*(s-a)*(s-b)*(s-c)); }

Funcin para dibujar una lnea de asteriscos


void linea(int longitud){ for(int i=0;i< longitud;i++) cout <<*; cout << \n; } Ejemplo: main(){ int i; for(i=1;i<10;i++) linea(i); system(pause); }

Funcin sin tipo (no regresa valor)

Variable local

Tarea
Escriba una funcin que calcule el volumen de una caja con lados a, b y c.
Escriba dos programas para probar su funcin, uno que defina el prototipo de la funcin, la funcin main y despus defina la funcin y otro que defina la funcin antes de la funcin main sin usar el prototipo.

Tarea casera
En los siguientes problemas haga 2 versiones de los programas, una con prototipos y otra sin prototipos.
Escriba una funcin que calcule el rea de un cilindro. Los parmetros deben ser el radio y la altura del cilindro. Haga un programa que lea el radio y la altura del cilindro y calcule el rea utilizando la funcin definida.

Escriba una funcin que calcule la raz cbica de un nmero real. Utilice la funcin pow de la biblioteca math.h. Haga un programa para desplegar una tabla con las races cuadradas y cbicas de los nmeros de 1 a 20 para probar su funcin.

Generacin de nmeros aleatorios


Para programas de juegos o de simulacin existe la funcin rand() en la biblioteca stdlib.h para generar nmeros aleatorios. rand() genera un nmero aleatorio entre 0 y 32767.

Ejemplos:
rand() % 6 - genera nmeros aleatorios entre 0 y 5 rand() % 6 +1 - genera nmeros aleatorios entre 1 y 6

rand() % 2 - genera nmeros aleatorios entre 0 y 1

Funcin para tirar un dado


La siguiente funcin genera un valor aleatorio entre 1 y 6 que corresponde a tirar un dado. int dado(){

return rand()%6+1;
}
No lleva parmetro

Ejemplo de tirar dados


#include <iostream.h> #include <iomanip.h> #include <stdlib.h>//contiene el prototipo de la funcin rand int dado(){ return rand()%6+1; } int main(){ // ciclo de 20 repeticiones for ( int contador = 1; contador <= 20; contador++ ) { // recoge un nmero aleatorio entre 1 y 6 y lo imprime cout << setw( 10 ) << dado(); //si el contador es divisible por 5, comienza nueva lnea if ( contador % 5 == 0 ) cout << endl; } // fin de la estructura for system(pause); return 0; // indica terminacin exitosa } // fin de main

El programa anterior siempre genera la misma secuencia de valores. La funcin srand(semilla), permite establecer la semilla de los nmeros aleatorios para generar diferentes secuencias aleatorias.

El parmetro para la funcin srand en un valor de tipo unsigned.

Ejemplo de srand()
#include <iostream.h> #include <iomanip.h> // contiene prototipos para las funciones srand y rand #include <stdlib.h> int main(){ unsigned semilla; cout << "Introduzca semilla: "; cin >> semilla; srand( semilla ); // establece la semilla // ciclo de 10 repeticiones for ( int contador = 1; contador <= 10; contador++ ) { // toma un nmero aleatorio entre 1 y 6 y lo imprime cout << setw( 10 ) << ( 1 + rand() % 6 ); //si contador es divisible entre 5, inicia una nueva lnea if ( contador % 5 == 0 ) cout << endl; } // fin de for return 0; // indica terminacin exitosa } // fin de main

Como generar semillas


Para generar semillas se utiliza algn mecanismo que no dependa del usuario y que permita siempre generar una secuencia diferente.
Una posible solucin es usar la hora actual como semilla.

time(entero) con argumento 0 regresa la hora actual en segundos.


srand(time(0)) inicia la semilla de los nmeros aleatorios. La funcin time se encuentra en la biblioteca <time.h>.

Juego de dados (craps)


Se lanzan dos dados. Si la suma de los puntos es 7 o 11 el jugador gana, si es 2, 3 o 12 el jugador pierde. Cualquier otro nmero se convierte en el nmero del jugador y sigue tirando. Si el jugador saca primero su nmero antes de sacar un 7, el jugador gana, sino pierde.

Algoritmo
1. Tirar dados 2. Si la suma es 7 o 11 3 Gana El jugador esta en uno de tres posibles estados: gana, pierde, continua. Podemos definir un nuevo tipo para registrar el estado mediante la sentencia: enum Status {CONTINUA, GANA, PIERDE};

4. Sino, si la suma es 2, 3 o 12 5. pierde 6. sino, su numero es suma 7. Mientras no gane o pierda

8.
9. 10.

Tirar dados
Si suma = su numero gana

Status estadoJuego;

11. Sino si suma = 7 12. pierde

Para las pruebas de los posibles resultados es conveniente usar una sentencia switch.

13. Fin ciclo

#include <iostream.h> // contiene los prototipos de las funciones srand y rand #include <stdlib.h> #include <ctime>//contiene el prototipo de la funcin time int tiraDados( void ); int main(){ //enumeracin que represeta el estado del juego enum Status { CONTINUA, GANA, PIERDE }; int suma; int miPunto; Status estadoJuego;//puede contener CONTINUA, GANA o PIERDE //randomiza el generador de nmeros aleatorios srand( time( 0 ) ); suma = tiraDados(); // primer tiro de dados // prototipo de la funcin

// determine el estado del juego y la puntuacin en base a la suma de puntos del dado switch ( suma ) { // gana en el primer tiro case 7: case 11: estadoJuego = GANA; break; // pierde en el primer tiro case 2: case 3: case 12: estadoJuego = PIERDE; break; // recuerda puntos default: estadoJuego = CONTINUA; miPunto = suma; cout << "El punto es " << miPunto << endl; break; // opcional } // fin de switch

while ( estadoJuego == CONTINUA ) { suma = tiraDados(); // tira dados nuevamente // determina el estado del juego if ( suma == miPunto ) // gana por puntos estadoJuego = GANA; else if ( suma == 7 ) // pierde por obtener 7 estadoJuego = PIERDE; } // fin de while

// despliega mensaje de ganador o perdedor if ( estadoJuego == GANA ) cout << "El jugador gana" << endl; else cout << "El jugador pierde" << endl; return 0; // indica terminacin exitosa } // fin de main

int tiraDados( void ) { int dado1; int dado2; int sumaTrabajo; dado1=1+rand() % 6;//obtiene valor aleatorio del dado1 dado2=1+rand() % 6;//obtiene valor aleatorio del dado2 sumaTrabajo = dado1 + dado2;//suma dado1 y dado2 // despliega los resultados del tiro cout << "El jugador tiro " << dado1 << " + " << dado2 << " = " << sumaTrabajo << endl; return sumaTrabajo;// devuelve suma de los dados } // fin de la funcin tiraDados

Tarea
Escriba una funcin que genere nmeros aleatorios entre dos lmites cualesquiera. Los lmites deben ser los parmetros de la funcin.

Escriba un programa que utilice la funcin anterior y genere 10 nmeros aleatorios entre 30 y 50, 10 nmeros aleatorios entre 100 y1000 y 10 nmeros aleatorios entre -45 y -10. Asegrese que el programa genere siempre nmeros aleatorios distintos.

Reglas de alcance
Las variables tiene un alcance dentro del bloque en que son declaradas.

Esto permite que las variables dentro de funciones tengan el mismo nombre que las variables fuera de ellas.

#include <iostream.h> void usoLocal( void ); // prototipo de funcin void usoStaticLocal( void ); // prototipo de funcin void usoGlobal( void ); // prototipo de funcin int x = 1; // variable global int main() { int x = 5; // variable local a main cout << "x local en el alcance externo de main es " << x << endl; { // inicia nuevo alcance int x = 7; cout << "x local en el alcance interior de main es " << x << endl; } // finaliza nuevo alcance cout << "x local en el alcance externo de main es " << x << endl; usoLocal(); // usoLocal tiene x local usoStaticLocal(); // usoStaticLocal tiene x static local usoGlobal(); // usoGlobal utiliza x global usoLocal(); // usoLocal reinicializa su x local usoStaticLocal(); // static local x retiene su valor previo usoGlobal(); // x global retiene tambin su valor cout << "\nx local en main es " << x << endl; return 0; // indica terminacin exitosa } // fin de main

// usoLocal reinicializa la variable local x durante cada llamada void usoLocal( void ){ int x = 25; // inicialia cada vez que se llama a usoLocal cout<<endl<< "x local es "<<x<<" al entrar a usoLocal"<<endl; ++x; cout <<"x local es " << x<< " al salir de usoLocal" << endl; } // fin de la funcin usoLocal //usoStaticLocal inicializa a la variable static local x slo la // primera vez que se llama a la funcin; el valor de x se guarda // entre las llamadas a esta funcin void usoStaticLocal( void ){ // se inicializa la primera vez que se llama a usoStaticLocal. static int x = 50; cout<<endl<<"local static x es "<<x<<" al entrar a usoStaticLocal" << endl; ++x; cout<<"local static x es "<<x<<" al salir de usoStaticLocal"<<endl; } // fin de la funcin usoStaticLocal // usoGlobal modifica la variable global x durante cada llamada void usoGlobal( void ){ cout<<endl<< "x global es "<<x<< " al entrar a usoGlobal" << endl; x *= 10; cout<<"x global es "<<x<< " al salir de usoGlobal" << endl; } // fin de la funcin usoGlobal

Variables de tipo arreglo


Un arreglo es una coleccin de elementos del mismo tipo que se reconocen por un solo identificador.
Para acceder a los elementos individuales de un arreglo se utiliza un subndice que debe ser un nmero entero.
Arreglo con nombre a
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]

56 56 91 0 -3224 100 62 12

Nmero de la posicin de cada elemento

int a[5]; a[0] = 4; a[1] = 0; a[2] = 5; a[3] = -2; a[4] = 8; tambin se puede int a[] = {4, 0, 5, -2, 8}; double m[8] = {3, 4, 6, 1}// m[4] a m[7] son cero
int x[100], i; for(i = 0; i<100 ; i++) x[i] = 2*i + 1; int x[100], i; for(i = 0; i<100 ; i++) x[i] = rand()%50 + 25; int x[100], i; for(i = 0; i<100 ; i++) if(i%2==0) x[i] = 3*i; else x[i] = 4*i;

Ejemplos

int x[30], i; x[0] = 1;x[1] = 1; for(i = 2; i<30 ; i++) x[i] = x[i-1]+x[i-2]; 1,1,2,3,5,8,13,21,34,.. char v[]={a,e,i,o,u}; char c[]={b,c,d,f,g,h,j,k,l,m,n,p ,q,r,s,t,v,w,x,y,z}; cout << c[5] << v[3] << c[8] << v[0] << endl;

int i; float x[20],y[20]; for(i=0; i<20;i++) x[i] = i+1; for(i=0; i<20;i++) y[j]=2*x[i]+1;

Ejemplo: Histograma
int main() { const int tamanoArreglo = 10; int n[tamanoArreglo] = {19,3,15,7,11,9,13,5,17,1}; cout << "Elemento" << setw( 13 ) << "Valor" << setw( 17 ) << "Histograma" << endl; //para cada elemento del arreglo n, muestra una barra //en el histograma for ( int i = 0; i < tamanoArreglo; i++ ) { cout << setw( 7 ) << i << setw( 13 ) << n[ i ] << setw( 9 ); //despliega una barra for ( int j = 0; j < n[ i ]; j++ ) cout << '*'; cout << endl; // inicia la siguiente lnea de salida } // fin de la estructura for externa return 0; // indica terminacin exitosa } // fin de main

Tarea
Cul es la salida del siguiente programa?
#include <iostream.h> int m; void a(int x){ cout << x << enld; m += x; x = 10; cout << m << enld; } main(){ int x = 6; cout << x << endl; m = 5; a(x); cout << x << endl; cout << m << endl; }

Ejemplo
Programa para calcular el promedio y la desviacin estndar de los elementos de un vector.
La funcin main es la siguiente:

#include <iomanip.h> #include <math.h>


double x[50];//arreglo (vector) de 50 elementos, del 0 al 49 n 2 int max; x x i i 1 main(){ n 1 n saludo(); xI LeerDatos(); x i 1 resultados(); n system("pause"); }

void linea(){ int i; for(i = 0; i<80; i++) cout << '*'; cout << endl; } void saludo(){ linea(); cout << "\tPROMEDIO Y DESVIACION ESTANDAR DE N VALORES" << endl; linea(); }

void LeerDatos(){//lee los elementos del arreglo int i=0; double num; do{ cout << "Teclee un numero (-1 = terminar):"; cin >> num; if(num>0){ x[i] = num; i++; } }while(num>0); max = i; }

double promedio(){ int i; double suma=0; for(i=0;i<max;i++) suma +=x[i]; return suma/max; } double desviacion(){ int i; double suma=0,prom; prom=promedio(); for(i=0;i<max;i++) suma +=(x[i]-prom)*(x[i]-prom); return sqrt(suma/(max-1)); }

void resultados(){ int i; linea(); cout << "VALORES INTRODUCIDOS"<<endl; for(i=0;i<max;i++){ cout << setw(8) << x[i]; if(i%8==0&&i>0) cout << endl; } cout << endl; cout << "El promedio es: " << promedio() << endl; cout << "La desviacion estandar es: " << desviacion() << endl; linea(); }

Arreglos de dos dimensiones


Los arreglos de dos dimensiones se declaran de acuerdo al esquema

tipo variable[renglones][columnas];
Ejemplo int a [5][4];
a[0][0] a[1][0] a[2][0] a[3][0] a[4][0] a[0][1] a[1][1] a[2][1] a[3][1] a[4][1] a[0][2] a[1][2] a[2][2] a[3][2] a[4][2] a[0][3] a[1][3] a[2][3] a[3][3] a[4][3]

inicializacin
int a[5][4] = {{2,3,4,2},{2,0,6,1},
{3,5,5,0},{2,2,1,1},{3,2,5,6}};

2
3 2 3

0
5 2 2

6
5 1 5

1
0 1 6

inicializacin (cont.)
int a[5][4] = {{2,3},{1},
{3,5,5,0},{2},{3}};

1
3 2 3

0
5 0 0

0
5 0 0

0
0 0 0

ejemplo
Debe especificarse
void despliegaArreglo( int a[][ 3 ] ){ for ( int i = 0; i < 2; i++ ) {// for para cada fila for ( int j = 0; j < 3; j++ )//despliega los valores de columnas cout << a[ i ][ j ] << ' '; cout << endl; // inicia una nueva lnea de salida } // fin de la estructura for externa } // fin de la funcin despliegaArreglo int main(){ int arreglo1[ 2 ][ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 } }; int arreglo2[ 2 ][ 3 ] = { 1, 2, 3, 4, 5 }; int arreglo3[ 2 ][ 3 ] = { { 1, 2 }, { 4 } }; cout << "Los valores del arreglo1 por fila son:" << endl; despliegaArreglo( arreglo1 ); cout << "Los valores del arreglo2 por fila son:" << endl; despliegaArreglo( arreglo2 ); cout << "Los valores del arreglo3 por fila son:" << endl; despliegaArreglo( arreglo3 ); return 0; // indica terminacin exitosa } // fin de main

Juego del gato


El juego del gato consta de un tablero de 3x3.
El tablero se puede representar como un arreglo de enteros de 3x3. Usaremos el valor de 0 para representar una casilla vaca, 1 para representar las Xs y 2 para los 0s. Haremos un juego donde juegue un jugador contra la mquina. Se elegir aleatoriamente quien empieza.

Funcin main
La funcin main solo inicia la semilla de aleatorios y lllama a la funcin juega(). int tablero[3][3] = {0}; main(){ srand(time(0)); juega(); system("pause"); }

Funcin tira()
void tira(int quien){ int x,y,JugadaValida=0; do{ if(quien==1){ x = rand()%3; y = rand()%3; } else{ cout << "Tecle tirada (0..2, 0..2):"; cin >> x >> y; } if(x>=0&&x<=2&&y>=0&&y<=2){ JugadaValida = tablero[x][y]==0; } }while(!JugadaValida); if(quien==1) cout <<"Compu tira en " << x << ", " << y << endl; tablero[x][y] = quien; }

Funcin dibujaTablero()
void dibujaTablero(){ int i,j; char c; cout << endl; for(i=0;i<3;i++){ for(j=0;j<3;j++){ switch(tablero[i][j]){ case 0:c = ' ';break; case 1:c = 'X';break; case 2:c = '0';break; } cout << " " << c << " "; if(j<2)cout << "|"; } cout << endl; if(i<2)cout <<"---+---+---\n\n"; } }

Funcin juega()
void juega(){ int turno = rand()%2+1,jugada=0; dibujaTablero(); do{ tira(turno); dibujaTablero(); turno = (turno==2?1:2); jugada++; }while(jugada<9); }

Tarea
Escriba una funcin que determine si en algn momento del juego existe un ganador en el gato.

Versin grfica del gato


Para utilizar una pantalla grfica hay que usar la biblioteca graphics.h.
Usar initwindow(ancho,alto) para iniciar los grficos. Dibujar: line lineas, rectangle rectangulo, circle circulos, etc. Se puede leer los botones del mouse.

Funcin tira grfica


void tira(int quien){ int x,y,JugadaValida=0,x1,y1; char c; do{ if(quien==1){ x = rand()%3; y = rand()%3; } else{ //espera a que se presione el boton izquierdo while(!ismouseclick(WM_LBUTTONDOWN)); //obtiene la coordenada del mouse getmouseclick(WM_LBUTTONDOWN, x1, y1); //0 a 49 =0, 50 a 99=1, 100 a 149=2 x = x1/50; y = y1/50; } if(x>=0&&x<=2&&y>=0&&y<=2){ JugadaValida = tablero[x][y]==0; } }while(!JugadaValida); tablero[x][y] = quien; if(quien==1) c='X';else c='0'; //dibuja la jugada bgiout << c; outstreamxy(50*x+25,50*y+25); }

Funcin dibujaTablero
void dibujaTablero(){ line(50,0,50,150); line(100,0,100,150); line(0,50,150,50); line(0,100,150,100); }

Funcin juega
void juega(){ int turno = rand()%2+1,jugada=0; dibujaTablero(); do{ tira(turno); turno = (turno==2?1:2); jugada++; }while(jugada<9); }

Funcin main
main(){ initwindow(150,150); srand(time(0)); juega(); //espera una tecla getch(); }

Paso de arreglos a funciones


Para pasar un arreglo a una funcin debemos conocer su tamao para poder saber cuantos elementos se van a procesar.

Para esto declare la funcin con un parmetro extra para pasar el nmero de elementos a la funcin

Ejemplo
#include <iostream.h>
double promedio(double a[], int tamanio){ double suma = 0; for(int i=0; i<tamanio; i++) suma += a[i]; return suma/tamanio; } int main(){ double x[] = {3.5, 6.3, 4.5, 7.5, 5.4}; double y[] = {2,3,4,3,4.5,2,3.5,4.2}; cout <<"Promedio x : "<< promedio(x,5) << endl; cout <<"Promedio y : "<< promedio(y,8) << endl; system("pause"); return 0; }

Modificacin de elementos mediante funciones


En C los arreglos siempre se pasan por referencia de tal manera que siempre es posible modificar los elementos dentro de una funcin. Ejemplo, inicia un arreglo con valores aleatorios entre 0 y 99. void inicia(double a[], int tamanio){ for(int i=0; i<tamanio; i++) a[i] = rand()%100; }

Ordenacin
La operacin de ordenacin es de las ms comunes en computacin.
#include <iostream.h> int main(){ int b[20] = {1,2,3,2,4,3,5,6,3,7,8,9,4,5, 3,5,3,4,5,6}; for(int i =0; i<20; i++) cout << b[i] << " "; cout << endl; Burbuja(b,20); for(int i =0; i<20; i++) cout << b[i] << " "; cout << endl; system("pause");; return 0; }

void Burbuja(int a[],int tam){ for(int i = 0; i< tam - 1 ; i++) for(int j = i; j< tam;j++) if(a[i]>a[j]){ int temp = a[i]; a[i]=a[j]; a[j]=temp; } }

Bsqueda
Otra operacin importante es la bsqueda del valor de un elemento dentro de un arreglo.

int BusquedaLineal(int a[],int b,int tam){ for(int i = 0; i< tam; i++) if(a[i]==b) return n; return -1; }

Parmetros por referencia


Una funcin puede modificar los valores de los parmetros si estos se pasan por referencia.
Los parmetros por referencia se especifican con la siguiente notacin nombre-funcin(tipo &parametro)

Ejemplo de paso por referencia


#include <iostream.h> void porValor(int x){ x = 5; } void porReferencia(int &x){ x = 5; } int main(){ int a = 8; cout <<Valor inicial: <<a<<endl; porValor(a); cout <<Por valor: <<a<<endl; porReferencia(a); cout <<Por referencia: <<a<<endl; system(pause); return 0; }

Solucin de la cuadrtica con funciones


Algoritmo 1. Leer coeficientes 2. Determinar caso (2 races, una raz doble, races complejas) y solucin 3. Imprimir resultado de acuerdo con el tipo de solucin.

Funcin para leer coeficientes


Parmetros por referencia

void leer(double &a, double &b, double &c){ cout << "Tecle coeficientes a,b,c: "; cin >> a >> b >> c; }

Funcin para calcular las races


void calcularRaices(double a, double b, double c,double &x1, double &x2, int &caso){ double d = b*b-4*a*c; Parmetros por referencia if(d>0){ x1 = (-b+sqrt(d))/2/a;x2 = (-b-sqrt(d))/2/a; caso = 1; }else if(d==0){ x1 = (-b+sqrt(d))/2/a;x2 = (-b-sqrt(d))/2/a; caso = 2; }else{ x1 = -b/2/a; x2 = sqrt(-d)/2/a; Caso: caso = 3; 1 dos races diferentes } } 2 una raz doble 3 races complejas

Funcin de impresin y funcin main


void imprime(double x1,double x2,int caso){ switch(caso){ case 1:cout <<"x1 = "<<x1<<" x2 = "<<x2<< endl;break; case 2:cout <<"x1 = x2 =" << x1 << endl;break; case 3:cout <<"re = "<<x1<<" im = "<<x2<< endl;break; } }

int main(){ double a,b,c,x1,x2; int caso; leer(a,b,c); calcularRaices(a,b,c,x1,x2,caso); imprime(x1,x2,caso); system(pause); }

Funcin factorial
El factorial se defino por: N! = 1*2*3* ... *(N-1)*N
double fact(int N){ double f =1; for(int i=2; i<=N; i++) f *= i; return f; }

S-ar putea să vă placă și