Menú

Mostrar Mensajes

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ú

Temas - edgemx

#1
Programación C/C++ / polinomios C
21 Julio 2011, 00:13 AM
Antes que nada gracias, por ayudarme anteriormente pues  recibí ayuda muy buena,
ahora tengo otro proyecto, y pues al parecer, ya logre crear mis listas doblemente enlazadas, para un polinomio (así lo pidió el maestro).
pero pues me gustaría poder ingresar el polinomio completo, mi polinomio hasta ahora lo tengo que ingresar termino por termino.

CitarEl formato de los polinomios, tanto los que son ingresados por el usuario como los que mostrara el programa como resultado es el siguiente:
a)   3x3-x2-8x+1    ===   3x*3-1x*2-8x*1+1x*0 
b)   5x4+3x   ===    5x*4+3x*1
El polinomio debe ser ingresado y mostrado en orden a la potencia de la variable que ira decreciendo, y no debe haber términos semejantes. Sólo se trabajara con polinomios de una sola variable. El programa debe validar que el usuario ingrese un polinomio valido de acuerdo a estas consideraciones.


existe alguna forma de hacerlo?
algun codigo que me identifike los terminos o algop por el estilo?


#2
Programación C/C++ / HELP ME!
12 Julio 2011, 06:30 AM
hola, espero me puedan ayudar, me pasa algo bien raro, estoy aprendiendo a usar las listas.
mi problema aki es el sig.
tengo este código

libreria

/*********************
**********************
**                  **
**    stlist.h      **
**                  **
**********************
*********************/
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
//Definimos el tipo de dato a ingresarse en la lista
struct ElementoLista
{
  int valor;                        // -> Dato que guardara la lista
  struct ElementoLista *sig;             // -> Apuntador permitirá el acceso al próximo elemento
};
typedef struct ElementoLista _dato;

struct ListaIdentificar{
_dato *inicio;
_dato *fin;
int tamano;
};
typedef struct ListaIdentificar _lista;
//hacemos la funcion que inicializa la lista en NULL
void iniciaLista(_lista *LISTA)
{
    LISTA->inicio=NULL;
    LISTA->fin=NULL;
    LISTA->tamano=0;

}
//funcion para ingresar un 1° valor
/* inserción en una lista vacía */
_lista *ins_en_lista(_lista *lista,int dato)
{


  _dato *nuevo,*inicio_lista;
  _lista *apuntadorAux;
    nuevo=(_dato *) malloc(sizeof(_dato));
    nuevo->valor=dato;
    nuevo->sig=NULL;//printf("\nCreamos un nuevo _dato con valor: %d *sig: %s",nuevo->valor,nuevo->sig);
    if (nuevo!=NULL)
        {
            if(lista->inicio==NULL && lista->fin==NULL)
            {
                lista->inicio=nuevo;
                lista->fin=nuevo;
                lista->tamano=lista->tamano+1;
                //printf("\nVALORES DE LA LISTA [%d]",dato);
                //printf("\nInicio->valor: %d",lista->inicio->valor);
                //printf("\nInicio->*sig: %s",lista->inicio->sig);
                //printf("\nFin->valor: %d",lista->fin->valor);
                //printf("\nFin->*sig: %s",lista->fin->sig);
            }
            else
            {   inicio_lista=lista->inicio;
                apuntadorAux=lista;
                //printf("\n\nVALORES AUXILIARES iniciales DE LA LISTA [%d]",dato);
                //printf("\nInicio->valor: %d",apuntadorAux->inicio->valor);
                //printf("\nInicio->*sig: %s",apuntadorAux->inicio->sig);
                //printf("\nFin->valor: %d",apuntadorAux->fin->valor);
                //printf("\nFin->*sig: %s",apuntadorAux->fin->sig);
                while(apuntadorAux->inicio->sig!=NULL)
                {
                    apuntadorAux->inicio=apuntadorAux->inicio->sig;
                }
                apuntadorAux->inicio->sig=nuevo;
                apuntadorAux->inicio=inicio_lista;
                lista->fin=nuevo;
                lista->tamano++;
                //printf("\n\nVALORES AUXILIARES finales DE LA LISTA [%d]",dato);
                //printf("\nInicio->valor: %d",apuntadorAux->inicio->valor);
                //printf("\nInicio->*sig: %s",apuntadorAux->inicio->sig);
                //printf("\nFin->valor: %d",apuntadorAux->fin->valor);
                //printf("\nFin->*sig: %s",apuntadorAux->fin->sig);
            }
        }
    else
        {
            printf("!!!!!!!!!!NO HAY MEMORIA!!!!!!!!!");
        }
return lista;


}
void imprime_lista(_lista *lista)
{
    _dato *nodo;
    nodo=lista->inicio;
    printf("\ninicio-> ");
    while(nodo!=NULL)
    {
        printf("%d-> ",nodo->valor);
        nodo=nodo->sig;
    }
    printf("fin de la lista\n");
    printf("\nCARDINALIDAD: %d",lista->tamano);
}

int pertenencia(_lista *lista,int busca)
{
    /*printf("XXX");*/
     _lista *apuntador_aux;
        int regresa;
        apuntador_aux=lista;
        while(apuntador_aux->inicio->valor!=busca && apuntador_aux->inicio->sig!=NULL)
        {
            apuntador_aux->inicio=apuntador_aux->inicio->sig;
        }
        if(apuntador_aux->inicio->valor==busca)
        {
            regresa=1;
        }
        if(apuntador_aux->inicio->sig==NULL)
        {
            regresa=0;
        }
return regresa;
}



codigo

/*********************
**********************
**                  **
**   conjuntos.c    **
**                  **
**********************
*********************/
#include<string.h>
#include<stlist.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
void main()
{
    _lista *lista_A;
   _lista *lista_B;
    int opc,dat,pert;
    iniciaLista(lista_A);
    do{
        opc=0;
        printf("\nIngresa valor 1° conjunto");
        fflush(stdout);
        scanf("%d",&dat);
        /************************************/
        ins_en_lista(lista_A,dat);
        printf("\nDeseas ingresar otro valor ingresa 1\n");
        scanf("%d",&opc);
    }while(opc==1);
    imprime_lista(lista_A);
    /*****************/pert=pertenencia(lista_A,dat);

    iniciaLista(lista_B);
    do{opc=0;
        printf("\nIngresa valor 2° conjunto");
        scanf("%d",&dat);
        ins_en_lista(lista_B,dat);
        printf("\nDeseas ingresar otro valor ingresa 1");
        scanf("%d",&opc);
    }while(opc==1);


imprime_lista(lista_B);

}



:-\ ok funciona perfecto... pero  mi bronka es que si pongo el sig. código ya no jala
(nececito hacer que no se repita un mismo valor en un conjunto, por lo cual mando llamar a pertenencia para que me indique si el elemento existe o no y asi poder )



        /************************************/pert=pertenencia(lista_A,dat);
        ins_en_lista(lista_A,dat);
        printf("\nDeseas ingresar otro valor ingresa 1\n");
        scanf("%d",&opc);
    }while(opc==1);
    imprime_lista(lista_A);
    /*****************/


CAMBIE pert=pertenencia(lista_A,dat);  de los asteriscos cortos al mas largo



espero me puedan explicar por que demonios pasa eso... por su atencion gracias