Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menúint factorial(int n)
{
if(n<2)
return 1;
else
return n*factorial(n-1);
}
Cita de: YreX-DwX en 29 Marzo 2019, 01:20 AM
En C++ el bucle para calcular la fórmula sería algo así:
double cos = 0;
int exponente = 0;
for(size_t i = 0; i < num_terminos * num_terminos; i += 2, exponente++)
cos += pow(-1,exponente) * pow(x,i)/factorial(i);
Y si la función factorial la modificas un poco, te ahorras una llamada para calcular cada factorial:
int factorial(int n){
if(n < 1)
return 1;
else
return n * factorial(n-1);
}
#include <iostream>
using namespace std;
int factorial(int n);
main()
{
int opcion, numero;
do{
system("cls");
do{
cout<<"Ingrese un numero: ";
cin>>numero;
cout<<"1. Factorial"<<endl;
cout<<"2. Seleccionar otro numero"<<endl;
cout<<"3. Salir"<<endl;
cin>>opcion;
}while(opcion==2);
switch(opcion){
case 1: cout<<"Factorial: "<<factorial(numero)<<endl;break;
case 3: cout<<"Fin del programa"<<endl;break;
default: cout<<"Opcion incorrecta"<<endl;
}
system("pause");
}while(opcion!=3);
}
int factorial(int n)
{
if(n<2)
return 1;
else
return n*factorial(n-1);
}
void postfija(tcad &cadena)
{
int i, j=0;
tpila pila;
tcad expresion_postfija;
init_stack(pila);
for(i=0;i<strlen(cadena);i++){
if(isdigit(cadena[i])){
expresion_postfija[j]=cadena[i];
j++;
}
else{
if(empty_stack(pila)==true)
push_stack(pila,cadena[i]);
else{
if(prioridad(cadena[i],top_stack(pila))==true)
push_stack(pila,cadena[i]);
else{
while(empty_stack(pila)==false && prioridad(cadena[i],top_stack(pila))==false){
expresion_postfija[j]=pop_stack(pila);
j++;
}
push_stack(pila,cadena[i]);
}
}
}
}
while(empty_stack(pila)==false){
expresion_postfija[j]=pop_stack(pila);
j++;
}
expresion_postfija[j]='\0';
cout<<"Expresion postfija: "<<expresion_postfija<<endl;
}
bool prioridad(char a, char b)
{
int operador1, operador2;
switch(a){
case '^': operador1=2;break;
case '*': case '/': operador1=1;break;
case '+': case '-': operador1=0;break;
}
switch(b){
case '^': operador2=2;break;
case '*': case '/': operador2=1;break;
case '+': case '-': operador2=0;break;
}
return operador1>operador2;
}