pasar valor de una variable int a posicion de vector char

      • 330
      • mensajes
      • miembro desde
      • 22/08/06
    10/05/2007
    #1 pasar valor de una variable int a posicion de vector char

    queria saber si era posible esta situacion en el lenguaje C
    tengo un vector char por ejemplo cargado con '2' '5' '2' '7'
    tengo una variable a con el valor 34 osea a=34
    puedo copiar el valor de a a la posicion donde se encuentra el 5 para que me quede el char de la manera siguiente '2' '34' '2' '7'

    esto es para un programa que ya postie pero que estoy en otra etapa del desarrollo y es lo unico que me falta saber
    para ser mas específico, tengo que ingresar una operacion en una linea tipo:
    ingrese operacion:
    2+3*(4-1)-8+6*(4-2*1)+3*(5+2*(23-3))+1
    y el programa me debe devolver el resultado

    el tema es que el profe dijo que se resolvia con una stack, pero no lo vamos a ver hasta agosto por lo que dijo que lo investigaramos, yo intente resolverlo por otro lado e hice un algoritmo a base de arrays, la idea es resolver cada parentesis y volver el resultado al vector char donde esta la operacion ingresada, el tema es que no se si el vector charme admite el resultado int para ingresar en una sola posicion, en el ejemplo anterior yo lo primero que haria es mediante un algoritmo resolver la operacion 23-3 que me da como resultado 20 y la idea es volver a armar el vector de la siguiente manera:
    2+3*(4-1)-8+6*(4-2*1)+3*(5+2*'20')+1
    fijense que el 20 deberia ser una sola posicion del vector char, y asi seguir hasta eliminar los parentesis.
    si esto que quiero hacer no se puede la verdad estoy perdidisimo, asi que si alguien tiene idea me pega una ayudita
    ahh... si alguien sabe donde conseguir informacion sobre stacks me dice
    desde ya muchas gracias

  1. ¿Este tema te pareció interesante? Compártelo!

    ¿No es lo que buscabas? Intenta buscar un tema similar

    1 comentarios / 9209 Visitas

      • 2,744
      • mensajes
      • miembro desde
      • 15/07/05
    10/05/2007
    #2 Re: pasar valor de una variable int a posicion de vector char

    Por lo que veo lo que intentas hacer es imposible ya que si tenemos un array de chars cada posicion del array va a tener un solo char, es decir que cuando quieras transformar de numero a char y transformar un int 34 a un char '34' que serian dos chars formando el numero 34 solo podrias guardar uno de esos 2 chars en esa posicion del vector.

    Ahora, el tema de los stacks no es tan complicado como parece, stack en ingles es pila, imaginate una pila de libros uno encima del otro en una mesa (con un poquito de tierra tal vez jaja). La idea de la pila es una estructura de datos donde hay varios elementos amontonados uno sobre el otro (para que sea mas didactico) y solo puedas sacar de aun elemento desde el tope.

    Asi que si te pones a pensar una pila es una estructura de datos que me guarda elementos y solo se sacan y se meten po run extremo. Internamente la pila puede usar listas enlazadas, vectores de tamaño fijo, vectores de tamaño variable o lo que fuere.

    Ya que no tenes tiempo o quien sabe idea sobre como escribir una pila usando memoria dinamica, punteros y demás, podrias usar una pila usando internamente un vector de tamaño fijo (100 elementos tal vez).

    Aca te dejo un pequeño ejemplo.

    struct Pila {
    void* elementos;
    int tamaño;
    int posicionActual;
    }

    Pila crearPila(int cantidadElementos) {
    Pila nuevaPila;
    nuevaPila,elementos = new void[cantidadElementos];
    nuevaPila.tamaño = cantidadElementos;
    nuevaPila.posicionActual = 0;
    return nuevaPila;
    };

    void apilar(Pila& pila, void* dato) {
    if (pila.posicionActual+1 < pila.tamaño) {
    pila.posicionActual++;
    pila.elementos[pila.posicionActual] = dato;
    };
    };

    void* desapilar(Pila& pila) {
    void* dato = NULL;
    if (pila.posiionActual >0) {
    dato = pila.elementos[posicionActual];
    pila.posicionActual--;
    };
    return dato;
    };

    void destruirPila(Pila& pila) {
    delete pila.elementos;
    };

    Fijate que con eso mas o menos, habria que validar alguna condicion mas al momento de apilar y desapilar pero eso mismo es una pila. No te compliques buscando alternativas porque solucionesa a tu problema hay y la mayoria con con pilas, estan probados y son eficientes ademas de haber mucho material al respecto.

    Saludos
    Pablo