ayuda porfavor es urgente

Iniciado por firius2010, 21 Marzo 2012, 22:56 PM

0 Miembros y 1 Visitante están viendo este tema.

firius2010

Buenas, un gusto en conocerlos mi nombre es fausto Orozco estudiante de ing electronica de colombia y ps lo que pasa es q acudo a uds porq no e sido capaz de hacer un programa que me pusieron como ejercicio en la u apenas voy en 3 semestre y ps el programa consiste en que:
tiene que recivir una ecuacion f(x) ej
3x/2x↑2
ademas debe de recibir un valor  para x eje
x=5
y mi programa debe de mostrar en pantalla la funcion tabulada
de antemano muchas gracias

$Edu$

Si es tan urgente apurate ya ya ya y deja tu intento

firius2010

ps e escrito esto pero en realidad tengo varios problemas

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    char ecu1[100],cad,ecu[200],cad1;
    int a,i=0;
    printf("si va a ingresar por ej 2x+3x ingrese 2*x+3*x\n");
    printf("ingrese ecuacion:\n");
    gets(ecu1);
    printf("valor de x:");
    scanf("%c",&cad);
    printf("\n");
    a=strlen(ecu1);
    for(i=0;i<a;i++)
    {
        if(ecu1=='x')
        {
            ecu1=cad;
        }
    }
    if((ecu1!='+')&&(ecu1!='*')&&(ecu1!='-')&&(ecu1!='/')&&(ecu1!='R')&&(ecu1!='^'))
    {
        for(i=0;i<a;i++)
        {
            cad1=ecu1;
            strcpy(ecu,cad1);
            if((ecu1[i+1]!='+')&&(ecu1[i+1]!='*')&&(ecu1[i+1]!='-')&&(ecu1[i+1]!='/')&&(ecu1[i+1]!='R')&&(ecu1[i+1]!='^'))
            {
               cad1=ecu1(i+1);
               strcat(ecu,)
            }

        }
    }
    return(0);
}


bueno mi problema radica en que quiero por ej tengo en una cadena de caracteres supongamos  32*85+65 supongamos y lo que pasa es q no puedo operar con ellos ya que el 32 no esta en una posicion sino en 2  posiciones diferentes y no se como hacer para crear el codigo que me interprete eso como el numero completo hasta llegar al operador logico no se si me hago entender muchas gracias

$Edu$

Deja un ejemplo de que tiene que ingresar el usuario y que mostrara tu programa porque no he entendido bien y tal vez los demas tampoco. Con dejar 2 o 3 ejemplos siempre sirve mucho

firius2010

ok vale
entonces el usuario debera de ingresar alguna funcion que el desee evaluar ej
(x^2+3 x-2)/x^3
e ingresa el valor de x q quiere evaluar entocnes mi programa de be de tabular ese punto es decir si ingreso 1 por ej como valor de x mi progrma debera de hacer
(1^2+3(1)-2)/1^3=2
espero haberme echo entender

x64core

con una variable int es suficiente para lo basico, el dato lo obtienes con cualquier funcion para
recibir datos y luego pasas esa variables por todas tus operaciones :P
por ejemplo:

// valor con 5
int value;


int function_operations(int nvalue)
{
     nvalue = (nvalue * 3 ) -  (nvalue += 30);
    return nvalue;
}


nose esas son operaciones simples que sé yo que es lo que queres hacer...
podes usar una variables temporal en donde podas almacenar el resultado temporal, y retornarlo a la funcion esto si es el caso que te
preocupa que se modifique la variables pasada a la funcion pero no te preocupes si es así porque así como muestro se pasa por valor,
no se modificara.

Xandrete

#6
Cita de: firius2010 en 22 Marzo 2012, 02:25 AM
ok vale
entonces el usuario debera de ingresar alguna funcion que el desee evaluar ej
(x^2+3 x-2)/x^3
e ingresa el valor de x q quiere evaluar entocnes mi programa de be de tabular ese punto es decir si ingreso 1 por ej como valor de x mi progrma debera de hacer
(1^2+3(1)-2)/1^3=2
espero haberme echo entender

¿Cómo dice usted? Si lo he entendido bien, se ha de ingresar nada más y nada menos que una expresión con literales (ocurrencias de x). sustituir el literal por un valor que ingresa el usuario posteriormente y efectuar la operación.

Creo que, o no has entendido bien el problema, o se pasan en tu universidad (sobre todo teniendo en cuenta que haces el 3er semestre de una ingeniería electrónica), o te has expresado con ambigüedad. ¿Te das cuenta de la envergadura de lo que dices?

El programa tendría que ser una especie de intérprete. Debería reconocer varias funciones básicas y variantes(exponenciación, funciones trigonométricas, cociente, logaritmos, composición, multiplicación por constantes, suma de constantes, suma de funciones, producto de funciones...). Además tendrías que decidir qué hace tu programa si el usuario ingresa una expresión con errores de sintaxis si no te garantizan que la entrada va a ser válida siempre. Es decir, poco más o menos te están pidiendo una calculadora científica. Comprueba bien qué es lo que te piden, porque dudo mucho que sea eso. Otra cosa es que te pidan evaluar siempre la misma función, o que simplemente tengas que sustituir las x de la cadena de entrada por el valor numérico ingresado por el usuario, y retornar la cadena con los valores sustituidos (sin efectuar ninguna operación). Estaría bien que pusieras un ejemplo de entrada/salida tal y como dice $EdU$, pero en el siguiente formato:

Entrada

x^2+2x+1
-1

1/(x-1)
0

Salida

0

1

Este ejemplo de entrada/salida correspondería al de una calculadora científica.

Otro ejemplo es:

x^2+2x+1
-1

1/(x-1)
0

Salida

(-1)^2+2(-1)+1

1/((0)-1)

Este ejemplo se correspondería a un programa que únicamente cambiara las x por el número que te da el usuario.

Saludos

$Edu$

Claro, pregunta bien a tu profesor que es lo que quiere.., lo que quieres hacer lo hice hace 1 año y me costo como 2 meses, que el usuario ponga una ecuacion por ejemplo: 2x^2+3x(4+5x)3-6=9x+8-20x  y mi programa te resuelve el valor de X. En tu caso seria un poquito mas facil porque solo tendrias que sustituir la X con lo que ingreso el usuario, es distinto, pero tienes muchas cosas igual, pensa como harias para dividir la ecuacion en los terminos que tenga y luego ubicar la X en cada caso para sustituirla por el numero que ingreso el usuario (todo esto siempre usando el string que ingreso el usuario, mucho manejo de cadenas) y luego que sustituiste en cada termino la X por el num que ingreso el usuario, empiezas a ver como lo interpretas para poder hacer la operacion en cada termino y luego sumarlos.

Veras que es complicado y muchas horas debuggeando te pasaras xD Por que tienes que fijarte todas las posibles ecuaciones que te pondria el usuario, la pueden embarrar tanto que te cagaria tu codigo xD

Caballo_Alado

Cita de: $Edu$ en 22 Marzo 2012, 14:11 PM
Claro, pregunta bien a tu profesor que es lo que quiere.., lo que quieres hacer lo hice hace 1 año y me costo como 2 meses, que el usuario ponga una ecuacion por ejemplo: 2x^2+3x(4+5x)3-6=9x+8-20x  y mi programa te resuelve el valor de X. En tu caso seria un poquito mas facil porque solo tendrias que sustituir la X con lo que ingreso el usuario, es distinto, pero tienes muchas cosas igual, pensa como harias para dividir la ecuacion en los terminos que tenga y luego ubicar la X en cada caso para sustituirla por el numero que ingreso el usuario (todo esto siempre usando el string que ingreso el usuario, mucho manejo de cadenas) y luego que sustituiste en cada termino la X por el num que ingreso el usuario, empiezas a ver como lo interpretas para poder hacer la operacion en cada termino y luego sumarlos.

Veras que es complicado y muchas horas debuggeando te pasaras xD Por que tienes que fijarte todas las posibles ecuaciones que te pondria el usuario, la pueden embarrar tanto que te cagaria tu codigo xD


Pienso igual, es muy, muy complicado... A menos de que haya alguna función (que desconozco ) que te interprete bien las operaciones suma,resta,etc te llevara mucho tiempo

Quizá te sirva esto  :xD :

#include <stdio.h>

int main()
{   int x,ecu;
    printf("VALOR PARA X: ");
    scanf("%d",&x);
    ecu=x*2+3-2; //ESTO ES LO QUE CAMBIAS XD
    printf("EL RESULTADO ES: %d",ecu);
}


salu2
♫           ♪ "I'm sexy and I know it"     ♪      ♫

theluigy13etv

Waaaaa te piden algo así como un analizador sintáctico.... leélo en una cadena y después no sé que haces, pero ufff, eso es complicado.