domingo, 15 de febrero de 2015

Programa en C++

Un programa en C++, para practicar con cadenas y eso.
Queda más bonito con unos applets que dejan el código muy bonito, pero como hay que ponerlos en la parte HTML del post, y es un código de programación, da errores y cosas raras. Así que lo meto a la antigua usanza.  
El resultado es este:


Es una chorradita, pero haciendo un programa más complejo, se podría ayudar a despejar derivadas bastante complicadas. Si se pone la ecuación como una cadena, el programa puede ir desgranándola y aplicando las reglas de derivación iterativamente. Como ejercicio puede ser interesante. 

//##############################################
/*
Este es un programa de práctica en C++.
Si se introduce una función exponencial con base
y exponente de una solo cifra, retorna su derivada.
*/
//##############################################
//Se declaran librerias que se usaran
#include <iostream> //Esto iria con <> en vez de "" pero blogger no lo coge si no.
#include <string.h>
using namespace std;// Esto es para usar cout,cin.

int main(){


  // Declaro variables#################
   int x=0; //Como enteros. Aquí pongo x a 0 que usaré como contador.
   int base;
   int exp;
   int largo;
   char formula[30]; //Como caracteres
   char signo[2]="^";


   cout<<"La función a ingresar ha de ser de la forma x^y, donde \n";
   cout<<" x e y son enteros. P.ej. 4^6 \n";


cout<<"Ingrese la función: ";//Pregunta por la fórmula


cin>>formula; //Aquí captura la fórmula


largo=strlen(formula); //Mide la lingitud de la fórmula (auqne es siempre 3
            //Servirá para un programa más elaborado

 while (x<largo){ //Aquí empieza un bucle que busca el signo 

if (formula[x]==signo[0]){
 base=formula[x-1];//Asigna el valor del anterior a "^" como
 //base pero como numero ASCII (trabajamos con caracteres).
 exp=formula[x+1];//Aquí le asigna el valor del siguiente de ^ (exponente.

x=largo;} //Con esto se sale del bucle, si no hace cosas raras
               x++; }//Va sumando 1 a x para ir rastreando la cadena
               //Fin de while
cout<<"\n La derivada es :"<<char(exp)<<"*"<<char(base)<<"^"<<char(exp-1);
//Aquí da el resutado. Cuidado porque:
//char()es el valor del caracter en ASCII, pj char(52)=4
}

2 comentarios:

Amaya dijo...

A día de hoy, es un blog sobre programación, ajedrez, matemáticas y redes informáticas... Ayer fue otra cosa, mañana... who knows?

Toni dijo...

Pero continua siendo un cuaderno de bitácora. Como hombre felizmente casado ya no preciso de literatura que ayuda a drenar el pus del espíritu, por lo de feliz, ni de poesía, por lo de casado, ya que aunque las flores de la lengua son buenos presentes el cortejo, al desposado le agracia más la sorpresa que las guirnaldas. Y quedan como poso, mis privadamente útiles cavilaciones.