Documentos de Académico
Documentos de Profesional
Documentos de Cultura
BORLAND C++
Un ejemplo con (sw): Algoritmo que lee un secuencia de notas(con valores que van desde 0 a 10) que
termina con el valor -1 y nos dice si hubo o no alguna nota con valor 10.
Objeto_datos:
NOTA : variable para leer la secuencia.
SW :switch para controlar la aparicion de notas 10 con los
siguientes significados:
FALSO :No hay nota 10
CIERTO :Si hay nota 10
INICIO
SWÅFALSO
LEER NOTA
T F
NOTA<>-1
T
T F T
NOTA=10 SW
IMPRIME
LEER NOTA
FIN
La Var_Selectora puede ser variable, expresión, función; empero, sin embargo, el valor representado
debe ser por decir lo menos, un valor escalar es decir un dato numérico entero o un carácter . No se acepta
una cadena o un dato real.
Se debe entender que cada alternativa tiene un único valor y que va ha realizar una determinada acción o
proceso.
(b) Si halla una coincidencia que contenga el valor de la Var_Selectora, entonces ejecutara el proceso
correspondiente dando por finalizado la estructura, para luego buscar otra coincidencia, y ejecutar.
(c) Existe un termino que se usa ocasionalmente y que representa la acción cuando ninguna de las
alternativas se cumple, es el caso del “si no” , el termino no es obligatorio, pero permita clarificar una
aplicación.
INICIO
Pseudocodigo
Condicion o var_Selectora
En Caso que (Var_Selctora) sea Leer Dato
Caso 1 proceso_1
Caso 2 proceso_2
Caso 3 proceso_3 Condicion
……………………….
Caso N proceso_N
Caso X proceso_Desconocido
Var_alterna1
Fin del Caso Proceso1
Var_alterna2 Proceso2
Var_alterna3 Proceso3
Var_alternaN ProcesoN
Var_alternaX Proceso_Desco
IMPRIMIR
FIN
1 CONDICIONANTE O
VAR_SELECTORA
2
3
Proceso_1 Proceso_2 …
Proceso_3 X
.... N
Proce_N Proc_Desc
op1+op2 -
*
op1-op2
op1*op2 ?
op2<>0 ¿
no si
error no op2<>0si ~ X
Se deja como ejercicio para que sea completado.
INICIO 1
Inicializar constantes
Mas =’+’
Menos =’-’ IMPRIMIR
Por =’*’ RESULTADO
Entre =’?’
Residuo =’¿’
Potencia =’~’
FIN
DIGITAR EL OPERADOR A
USAR
INGRESE :
OPERANDO1
OPERANDO2
OPERADOR
‘?’
Operando2
No Diferente de φ Si
‘¿’ RESULTADO=RESIDUO(OPER1/OPER2)
RESULTADO=(OPE1)~(OPE2)
‘~’
1
NO
CONDICION
Diagrama Nassi_Schneiderman
SI IMPRIMIR
FIN
1 1 1 1 1
D= + + + +K+
A A + B A + 2 B A + 3B A+ N *B
A,B,N
Suma=0.
Mientras(C=N) hacer 1
AB=(A+c*B).
Inverso=1/AB.
Suma=Suma+Inverso.
C++. C<N
Fin del mientras
Escribir: Suma=Suma+1/A.
Fin SUMA=SUMA+1/A
AB=(A+C*B)
INVERSO=1/AB
SUMA=SUMA+INVERS IMPRIMIR
SUMA
C++
FIN
2. En la siguiente serie se pide hallar la suma de los elementos que ocupan las posiciones pares,y la
suma total de elementos, sabiendo que el # de termninos es igual a 50.
4 6 8
Su = 2 + + + + ...
3 5 7 INICIO
Solucion:
Objetos_Datos de Entrada: N
Objetos_Datos de Salida: N
suma de posiciones pares: sp
suma total de elementos: su
Pseudocodigo i=1,su=0,sp=0
Inicio
Leer N F
Establecer variables i<-N
i=1; par=0;Su=0;
mientras(i<=N) V sp,su
si(resto (i/2=0)entonces V
Resto(i/2)=0
sp=2*i/(2*i-1)
fin del si F
su=2*i/(2*i-1) sp=2*i/(2*i-1)
i=i+1
fin del mientras
escribir su, sp FIN
sp=2*i/(2*i-1)
i=i+1
Proceso 2
DIAGRAMA (N-S)
PROCESO1 V
F
PROCESO2 Condición
FIN
Problema de Aplicación
Se ingresa un Numero de varias cifras, INICIO
y luego hallar la suma de sus cifras, el numero
invertido y la cifra mayor.
Por ejemplo 1234, la suma es:10, invertido es Leer num
4321 y la cifra mayor es 4.
Objetos_datos de entrada y Salida
Objeto_Dato de Entrada: Numero
inversoÅ 0,Su Å 0, MÅ0
Objeto_Dato de Salida:Salida numero invertido.
Pseudocodigo
Inicio dgtÅresto(num/10)
Leer numero
Inicializar variables : inverso Å 0, SuÅ0,MÅ0
Hacer inversoÅinverso*10+dgt
digitoÅ resto(M/10) Su ÅSu+digito
InversoÅ inverso*10+digito.
Su ÅSu+digito
V
Si (digito>M) entonces
dgt>M
M Ådigito
Fin del si
numero=entero(numero/10) F
MÅdgt
Mientras(numero>0)
Escribir inverso, Su, M
Fin
numÅentero(nume/10)
F
V
num> 0
Inverso , Su, M
FIN
Esta instrucción “hacer procesos… mientras (condicion) sea verdadera”, es utilizada para consistenciar y
controlar la repeticion de un propgrama sin necesidad de salir, dandole al usuario el control del mismo. Vea
el siguiente ejemplo:
Se desea hallar la suma de los primeros N terminos de la siguiente serie:
1 2 3 4
S= − + − + ...
t +1 2t + 3 3t + 5 4t + 7
INICIO
desde/para vi=1 hasta vf de uno en uno Hacer
Proceso_A
Proceso_B Para Vcont=
…………….. Valor_inic, Valor_fin
HACER
Fin del desde/para
Diagrama N-S
PROCESO
desde/para de var_contador=Vi Hasta Vf
ProcesoA IMPRIMIR
ProcesoB
Fin desde/para
FIN
INICIO
Aplicación
Se va a Ingresar un Numero y la tarea Lee ne
consiste en mostrar todos los divisores de
ese numero ingresado. ContDivi=0
Cuando el numero Ingresado tiene por
divisores a la unidad(1) o al mismo numero
mostrara un para Divisor=1, hasta ne
mensaje diciendo “ El Numero es Primo ”
SOLUCION
Objetos_Datos de ENTRADA Y SALIDA V
Resto(ne/Divisor)=0
Objejo_Datos de Entrada: el Numero
entero(NumeEnte)
Objeto_Dato de Salida : numero de Escribir Divisor
divisores(NumeDivi), mensaje F
PSEUDOCODIGO ContDivi=ContDivi+1
Inicio
Leer un Numero entero: NumeEnte
Definir la variable Contador de Divisores e
Inicializarla a 0 F V
NumeDivi=0 ContDivi=2
Contabilizar los divisores y mostrarlos
PARA Divisor=1 HASTA NumeEnte,
HACER No es Primo Numero Primo
SI Residuo de NumeEnte/Divisor=0,
ENTONCES
Escribir Divisor
ContDiv=ContDiv+1 MENSAJ
Fin del SI DIVISORE
Escribir mensaje
SI ContDiv=2,ENTONCES
MENSAJE “Numero Primo”
FIN
SINO
MENSAJE “No es Primo”
Fin del Si
Fin
SIMPLES
+ - * / = < > “
; ! : % & { } . ,
^ | sizeof
DOBLES
<= >= == !! |= &&
>>= <<=
// /* */
Identificadores
Es el nombre mediante el cual se define una variable, constante, tipo, función, estructura, unión, clase,
objeto, etc.
Los identificadores declarados en Boland C++ tienen las siguientes características.
• Pueden estar conformados por 127 caracteres como máximo.
Ejemplos :
Suma = ( 4 caracteres )
Contador = ( 8 caracteres )
• Se hace distinción entre mayúsculas, minúsculas.
Ejemplo :
SUMA =25, suma=25; en ambos el identificador para el compilador es diferente
• Tienen que ser distintas de las palabras reservadas.
Ejemplos :
continue, incluye,if , while, bool, for , etc
• El primer carácter debe ser letra ó subrayado
Ejemplo :
Suma = Correcto
1 Suma= Incorrecto el 1er carácter debe ser letra */
Palabras reservadas
Son identificadores que tienen un significado especial establecido por el lenguaje de programación.
Siempre deben escribir en minúsculas.
Se lista a continuación las palabras reservadas definidas por el compilador Borland C++
Comentarios
Sirven para documentar un programa y siempre van entre /* */ ó //.
Ejemplo :
/* Este es un comentario que tiene
mas de una linea */
//Otro comentario pero solo de una linea
Prioridad de Operadores
En Borland C++ la tabla de Prioridad de los Operadores esta dividida en 16 categorías.
La categoría #1 tiene la más alta Prioridad.
La categoría #2 ( los Operadores Unarios ) toman la segunda Prioridad, hasta el Operador coma (,) que
tiene igual Prioridad
Para el caso de los operadores unarios ( la categoría #2 ), condicional ( la categoría #14 ) y la de asignación
( la categoría #15)
La agrupación de estos operadores se ejecutan de Derecha a Izquierda todo, otra asociación de los
operadores de Izquierda a Derecha.
Teniendo presente la prioridad de los operadores podemos deducir que resultado se obtendrá al momento
que le programa ejecute una determinada sentencia, compuesta por expresiones que enlazan mediante los
operadores a las variables y datos del programa, predeterminando de esta forma que operador se desarrolla
primero.
0 1 2 3…10…15…20…30…50…60…70 …80
1
2 gotoxy(20,2); cin>>A;
3
…
15
… gotoxy(30,15);cout<< “A+4”<<A+4;
18
…
25
Tipos Fundamentales
Tipos Derivados
El uso de datos de tipo double y float es aplicado en las matemáticas como punto flotante. (Números
reales)
En Borland C++ realiza en forma automática en las operaciones la asignación del punto flotante cuando éste
no se especifique.
Ejemplo :
int LeerN ( )
{
procesos;
return 1;
}
Puede también ser utilizado para declarar punteros como vacío. Con lo que se puede
operar con datos de distintos tipos. Esto es porque al compilar este no determinará el
tamaño de la variable puntero vacío.
Ejemplo
#include<iostream.h>
#include<conio.h>
1. Cuerpo de la funcion
Es el centro de la codificación en ella se resuelve todo el codigo del programa.
2. Llamada a Funcion
Se da cuando ha sido declarada una funcion y es aquí donde se le llama por su nombre
3. Implementación de Funciones
Las funciones definidas por el usuario son codificadas en esta sección ejemplo:
Sentencia de Asignación
Es el proceso mediante el cual se asigna un valor ò dato a una variable previamente definida en dicha
función
La asignación se realiza mediante el operador “=”
Sintaxis
identificadores _ Variable = dato ;
En dato puede ser el resultado de una expresión en la cual se procesan variables y constantes definidas por
el usuario, esto quiere decir que la expresión de la derecha es evaluada y el resultado es asignado a la
variable especificada a la izquierda.
Su=1;
par=2
Su +=par;
#include “iostream.h”
#include<iostream.h>
El fichero solo será buscado en el directorio standart.
El fichero iostream.h provee una serie de facilidades definidas en base a clases que se encargan de la
entrada y salida de datos y transformarlos al tipo de variable correspondiente.
Se tiene los siguientes Objetos
cout<<Pone caracteres en la salida estándar (pantalla)
cin>>Lee caracteres de la entrada estándar (teclado)
Salida
Permite la salida de datos por pantalla al tener una variable o expresión numérica como salida esta
es transformada a caracteres para ser mostrada en pantalla.
Ejemplo :
# include <iostream,h>
#include <math.h>
#include<conio.h>
main ( )
{
float a,b;
double poten;
cout<<”Ingrese los Nùmeros”<<endl
<<”Ingrese el valor de a: “;>>cin>>a;
cout<<”Ingrese el valor de b: “;>>cin>>b;
poten=pow(a,b);
cout<<”La Potencia de “<<a<<”Elevedo a“
<<b<<”Es “<<poten<<endl;
getch( );
}
SECUENCIAS DE ESCAPE
Secuencia Normal
\n Nueva línea
\t Tab. horizontal
\b Retroceso
\a Bell (alerta. bip)
Sentencia 2 Sentencia 1
El compilador evalúa las expresiones condicionales desde arriba descendiendo, y tan pronto como el compilador
encuentre una condición verdadera, ejecuta la instrucción asociada y salta el resto de la escalera. Si no es así se
ejecutara el "else" final. Si no hay else al final y son falsas las otras condiciones no se efectúa nada.
La Instrucción switch
Esta instrucción, realiza comprobaciones múltiples o condiciones múltiples.
Borland C++ comprueba una variable sucesivamente frente a una lista de constantes enteras o de carácter,
luego de encontrar una
coincidencia, la computadora ejecuta las instrucciones o bloque de instrucciones que se asocian a la constante.
Default
Si al evaluar <expresión> esta toma un valor que no se encuentra en ninguna <exp_constant> de los casos entonces se
procederá con la ejecución de la <instrucción por defecto>.
INICIO
EXPRESION
INSTRUCCIÓN 1
EXP_CONST 1
INSTRUCCIÓN 2
EXP_CONST 2
INSTRUCCIÓN 3
EXP_CONST 3
EXP_CONST N INSTRUCCIÓN N
MENSAJE
Sintaxis : FIN
switch(<expression>) {
case <exp_const1>:
instrucción(s);break;
case <exp_const2>:
instrucción(s);break;
case <exp_const3>:
NOTAS:
Exp_const debe ser una Variable una expresión, una función y el valor que representa necesariamente
debe ser un escalar, en pocas palabras debe ser numérico entero o sino carácter individual, nunca un float ni
una cadena. Debe tenerse en cuenta que que exp_const será evaluada en cada alternativa hasta encontrar
el lugar que le corresponde.
Cada exp_const esta conformada por un único valor
Cada Instrucción puede estar conformada por una o varias sentencias.
1. El valor de exp_const es evaluado en las alternativas una por una.
2. Una vez encontrada una alternativa que contenga el valor de la exp_const, ejecuta la instrucción
correspondiente y termina la estructura que le corresponde.
3. Si no existe una <exp_const> que corresponda el control para la instrucción que sigue al bloque
del switch, a menos que este contenga la etiqueta de "default", en este caso el control se
transfiere a la instrucción que sigue a "default"
4. Dos etiquetas "case” en el mismo bloque no pueden tener <exp_const> con el mismo valor.
5. La Instrucción "break" se usa para terminar la secuencia que está asociada a la <exp_const>.Si
se omite la instrucción break, la ejecución continua en la Instrucción del siguiente "case " hasta que
la computadora encuentre un break o el final del switch.
Aplicación:
Programa que realiza una serie de operaciones matemáticas:
#include<conio.h>
#include<iostream.h>
#include<ctype.h>
#include<math.h>
#include<iomanip.h>
#include<stdlib.h>
main( ){
int opera;
int a,b;
char opc;
do{ clrscr();
//system(“cls”); llama al DOS para limpiar la pantalla, recomendable solo con Win98SE o
anteriores
cout<<"Ingrese 02 Numeros : ";
cout<<"Ingrese a: ";cin>>a;
cout<<"Ingrese b: ";cin>>b;
cout<<"MENU DE OPERACIONES :"<<endl;
cout<<"1 :Suma\n"
<<"2 :Resta\n"
<<"3 :Producto\n"
<<"4 :Division\n"
<<"5 :Cociente Entero\n"
<<"6 :Resto\n"
<<"7 :Potencia\n"
<<"Elija su Opcion...:";cin>>opera;
switch(opera){
case 1:
cout<<setiosflags(ios::fixed|ios::showpoint);
cout<<"La Suma es :" <<(a+b);break;
Sentencia_A
a) do While Sentencia_B
Pseudocodigo: loop
Hacer Sentencia_A
Sentencia_B Expresión NO
Mientras(Expresión) sea Verdadera
Si
Imprimir
Sintaxis :
do{ <Sentencias>
sentencia_A FIN
sentencia_B
}while (Expresion);
Las <sentencias> son ejecutadas en forma repetida según que el valor de la expresión <expresión> sea
verdadera.
La prueba ò control toma el lugar después de cada ejecución de la <sentencia> esto nos indica que la
comprobación de continuar con la ejecución de <sentencia> está a la salida del ciclo iterativo o bucle o
loop. Se dive que la instrucción do- while itera al menos una vez.
Ejemplo :
#include<iostream.h>
#include<conio.h>
main()
{
long factorial;
int i= 1,n=1;
do {
n* =i;
i++;
}while (i <=factorial) ;
cout<< “El Factorial de n es :” <<n;
}
getch();
}
b) while…
Aquí la Instrucción se repetirá mientras la condición sea verdadera y lo hace mediante un bucle o lazo.
Termina cuando la condicion es falsa.
Pseudocodigo
Mientras (condicion) sea verdadera
Sentencia_1
datos
Sentencia_2
Fin del mientras
Sintaxis : No
Condicion
While (<condición>) loop si
{
<sentencia_1> Sentencia_1
<sentencia_2> Sentencia _2
}
Imprimir
FIN
<sentencias> es ejecutado en forma repetida según el valor de <expresión> sea distinto de cero.
La prueba toma el lugar antes de cada ejecución de la <sentencia> lo que permite controlar la ejecución
de dicha <sentencia> antes de ingresar a él.
Ejemplo :
/*Algoritmo de Euclides para encontrar el maximo comun divisor
de dos Numeros */
#include<Iostream.h>
#include<conio.h>
#include<ctype.h>
c) For…
Esta instrucción ,es uno de las mas usadas dentro de las de flujo de control esta instrucción tiene su
equivalente en otros lenguejes de programación tradicionales como el Basic/Pascal en Fortran.
for(inicializacion;condicion;incremento)
{
sentencias ;
}
datos
Para…
Proceso1
imprim
La primera expresión se refiere a la condición inicial, si es una sola condición si son varias (deben estar
separadas por “;”);lo mismo ocurre con la tercera expresión que esta dedicada a la actualizacion. La
expresión central se refiere al test de terminación ,muy parecido al while ,continúa el bucle mientras se
cumpla la condición.
La siguiente instrucción for() permite construir un lazo, y solo saldra de ese lazo mediante un instrucción,
en este caso la instrucción if(),en la cual se libera del lazo cuando la condicion conlleva a una alternativa
falsa.
Esta instrucción es usada frecuentemente cuando una aplicaciondeba o no abandonar el programa.
#include<iostream.h> randomize();
#include<conio.h> cout<<"Ingreso mi Numero ";cin>>my;
main(){ cout<<"Genero un numero entre 1 y 7 \n";
…………… pc=random(7)+1;
for(;;){ cout<<"El numero de la pc es "<<pc;
cuerpo del programa //procesos if(my==pc)
……………… cout<<"\nSuertudo Adiviniste! mi numero
if(condicion ) fue "<<my<<'y'<<"\nEl Numero de la pc
break; fue "
} <<pc;
else
//Proprama que usa for(;;) cout<<"\nSin Suerte!";
//Adivine un numero en el rango de 1 a 7 cout<<mensaje;
#include<iostream.h> if(toupper(getch())=='N')break;
#include<conio.h> }
#include<stdlib.h> }
#define mensaje "\nOtra Prueba [S][N]" Ingreso mi Numero 3
#include<ctype.h> //para la mayuscula del Genero un numero entre 1 y 7
Caracter El numero de la pc es 3
main() Suertudo Adiviniste! mi numero fue 3y
{ El Numero de la pc fue 3
int my,pc; Otra Prueba [S][N]
for(;;){clrscr();
Declaración :
#include<iostream.h>
#include<conio.h>
float media_tres (float numl,float num2,float num3);
main()
{
Llamada a la funccion Descripción del cuerpo de la función.
getch();
}
//desarrollo de la función
float media_tres (float numl,float num2,float num3)
{
Desarrollo de la funcion
Return(valor);
}
EJEMPLO;
#include<iostream.h>
#include<conio.h>
#include<ctype.h>
#define mensaje "Otra Prueba[S][N] ?"
float media_tres (float numl,float num2,float num3);//prototipo
float media; //declaracion global
main(){
float num1,num2,num3;for(;;){clrscr();
cout<<"Primer numero ";cin>>num1;
cout<<"Segundo numero ";cin>>num2;
cout<<"Tercer numero ";cin>>num3;
cout<<"El promedio es "<<media_tres(num1, num2, num3)<<endl
<<mensaje; if(toupper(getch())=='N')
break;}
}
float m,n,p;
main(){
for(;;){clrscr();
leerabc(m,n,p) ;
cout<<"El Mayor es "<<mayorabc(m,n,p) ;
cout<<endl<<mensaje<<endl
<<&m;
if(toupper(getch())=='N')
break;}
}
Resultado:
a= 12
b= 21
c= 17
El mayor valor es 21
Otra Prueba[S][N] ?
Para que resulte la aplicación se hace uso del paso por referencia, en este caso usamos el
operador & que devuelve la direccion:
Void leerabc(float &a,float &b,float &c);
Retorno de valores
Una función puede retornar cualquier tipo básico de dato, punteros, referencias,
objetos, etc.
EJEMPLO:
#include<iostream.h>
#include<conio.h>
int sumar(int, int);//Prototipo
main( ){
int a,b;
gotoxy(10,10);
cout<<"Introduce primer número";
cin>>a;
gotoxy(10,11);
cout<<”Introducir segundo numero “;
cin>>b;
int c;
gotoxy(10,12);
c=sumar(a,b);
cout<<”El resultado es “<<c;
}
int sumar(int, int ){
return(a+b)
}
Para forzar la devolución de un valor se utiliza la instrucción cout<< indicando el dato a devolver a
continuación. Vea por ejemplo
//Usando Funciones definidas por el usuario
#include<iostream.h>
#include<conio.h>
void Leerab(float &a,float &b)
{cout<<"a = ";cin>>a;
cout<<"b = ";cin>>b;}
float operacion(float &a,float &b)
{cout<<(a+b);
return(a-b);}
main(){
float m,n;
Leerab(m,n);
cout<<" La suma y la diferencia es "<<operacion(m,n);
getch();
}
Paso de argumentos
Por valor -> cuando se realice la llamada lo que se hace es una copia de los datos para
utilizarlos en la función. Con este sistema los valores originales no se pueden modificar
desde la función.
Por referencia —> lo que se pasa es la dirección de memoria del dato utilizado como parámetro.
De esta forma ambas variables compartirán la misma zona de memoria. Si cambia el valor de una,
cambia el valor de la otra.
Sólo pueden ser valores literales o constantes. No pueden ser valores reales
EJEMPLO:
//Con argumento en la funcion
#include<iostream.h>
#include<conio.h>
int suma(int a, int b, int c); //prototipo
int resta(int a, int b=0, int c= 0);//prototipo
main ( ) {
cout<<"Para sumar (1,2,3)= "<<suma (1,2,3) << endl;
cout<< "Para sumar (1,2) ="<<suma (1,2,0) << endl;
cout<<"Para sumar(1)="<<suma(1,0,0)<<endl;
cout<<"Para sumar(0) ="<<suma(0,0,0)<<endl<< endl;
Funciones Matematicas
abs()ÆDevuelve el valor absoluto del argumento entero x. int abs(int x); #include<stdlib.h>
fabs()ÆDevuelve el valor absoluto del argumento en punto flotante de x: double fabs(double x)
ceil()ÆEncuentra el número entero más pequeño no menos que el argumento x. double ceil(double x)
floor()ÆEncuentra el número entero más grande no mayor que el argumento x. double floor(double x);
exp()ÆCalcula la e exponencial al argumento x. double exp(double x);
Funciones trigonométricas
sin( )Æ devuelve el seno de un ángulo. Su formato es: double sin(double ángulo);
cos ()Æ devuelve el coseno de un ángulo. El formato es: double cos(double ángulo);
tan ()Æ devuelve la tangente del ángulo indicado. El formato es: double tan(double ángulo);
asin()ÆDevuelve el arco seno del angulo especificado. El formato es :double asin(double angulo)
acos()ÆDevuelve el arco coseno del angulo especificado. El formato es :double acos(double angulo)
atan ()—>devuelve el arcotangente del ángulo especificado. El formato es: double atan (double ángulo);
Recursividad
Se dice que un proceso es recursivo sí forma parte de si mismo o sea que se define en función de si mismo.
La recursión aparece en la vida diaria, como por ejemplo si colocamos dos espejos uno al frente del otro y
no posicionamos en el centro, entonces podremos apreciar que la imagen se repite infinita veces. Éste
simple ejemplo nos sirve de modelo en problemas matemáticos, en estructuras de datos y en muchos otras
aplicaciones.
Un ejemplo muy conocido es el cálculo del factorial de un número que esta definida para cualquier valor
de n(n-1)!
1 si n=0 o n=1
n!
n(n-1)! si n>0
#include<iostream.h>
#include<conio.h>
#include<ctype.h>
# define mensaje "\n Otro Factorial [S][N] ?: "
void LeerN(long &N)
{cout<<"Ingrese N = ";cin>>N;}
long double factorial(long N)
{
if((N==0)||(N==1))
return 1;
else
return(N*factorial(N-1));
}
main() {
for(;;) {clrscr();
long M;
LeerN(M);
gotoxy(10,10);cout<<"El Factorial de "<<M<<" es "<<factorial(M)<<endl
<<'\t'<<mensaje;
if(toupper(getch())=='N')break;
}
}
/*Ingrese N = 9
El Factorial de 9 es 362880
Otro Factorial [S][N] ?: */
Experiencia : modifique el tipo de dato a ‘long double’ y pruebe hasta que valor de N puede calcular.