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ú

Mensajes - elProfeta1979

#1
Programación C/C++ / Re: strtok
27 Enero 2015, 16:26 PM
aporto un ejemplo  ::)

int main()
{  /* inicializa el arreglo de cadena */
   char cadena[] = "Este es un enunciado con 7 tokens";
   char *ptrToken; /* crea un apuntador char */
   printf("%s\n%s\n%s\n",
           "La cadena a dividir en tokens es:", cadena,
           "Los tokens son:");
   ptrToken = strtok(cadena, " ");/* comienza la divisiónen tokens del enunciado */
   /* continua la división en tokens hasta que ptrToken se hace NULL */
   while (ptrToken != NULL)
   {  printf( "%s\n", ptrToken );
      ptrToken = strtok(NULL, " "); /* obtiene el siguiente token */
   } /* fin de while */
   return 0; /* indica terminación exitosa */
} /* fin de main */


saludos
#2
#define INFINITO 1.0E+30
#define NODOS 5
#define MIEMBRO 1
#define NO_MIEMBRO 0
void short_path(int matriz[][NODOS], int s, int t, int *pd, int precede[]){
  int distancia[NODOS];
  int perm[NODOS];
  int corriente, i, k , dc, menor_dist, nueva_dist;

  for(i = 0; i < NODOS; i++){
    perm[i] = NO_MIEMBRO;
    distancia[i] = INFINITO;
  }
  perm[s] = MIEMBRO;
  distancia[s] = 0;
  corriente = s;
  while(corriente != t){

    menor_dist = INFINITO;
    dc = distancia[corriente];

    for(i = 0; i < NODOS; i++){
      nueva_dist = dc + matriz[corriente][i];
      if(nueva_dist < distancia[i]){
        distancia[i] = nueva_dist;
        precede[i] = corriente;
      }
      if(distancia[i] < menor_dist){
        menor_dist = distancia[i];
        k=i;
      }
    }//fin de for
    corriente = k;
    perm[corriente]= MIEMBRO;
  }//fin de while
  *pd = distancia[i];
}



bueno gente aporto este código, si alguien comenta.
#3
Programación C/C++ / Re: Lista Genérica en c
13 Octubre 2014, 05:03 AM
ese código esta muy bueno!

pienso que las funciones que implementé tienen cierta ventaja a la hora de exportar el código a otro lenguaje.

validación robusta? no tengo idea que significa.

saludos
#5
Programación C/C++ / Lista Genérica en c
10 Octubre 2014, 18:25 PM
que les parece mi implementación?




typedef enum _TIPO
{

 INT = 0,
 FLOAT,
 STRING

} TIPO;

typedef struct _NODO_LISTA
{

 TIPO   tipo;

 int    dato_int;
 float  dato_float;

 char   *dato_s;

 struct NODO_LISTA *sig;

} NODO_LISTA;


typedef NODO_LISTA *ListaGenerica;

ListaGenerica LGListaVacia();

ListaGenerica LGApilarInt(ListaGenerica l, int var);

ListaGenerica LGApilarFloat(ListaGenerica l, float var);

ListaGenerica LGApilarString(ListaGenerica l, char* var);

void LGImprimirEnPantalla(ListaGenerica l);




--


#include <stdio.h>
#include "ListaGenerica.h"

ListaGenerica LGListaVacia()
{
  return NULL;
}

ListaGenerica LGApilarInt(ListaGenerica l, int var)
{
  ListaGenerica p;
  p = (ListaGenerica)malloc(sizeof(NODO_LISTA));
  p->dato_int = var;
  p->tipo = INT;

  if(l==NULL){
    p->sig = NULL;
  }else{
    p->sig = l;
  }

  return p;
}

ListaGenerica LGApilarFloat(ListaGenerica l, float var)
{
  ListaGenerica p;
  p = (ListaGenerica)malloc(sizeof(NODO_LISTA));
  p->dato_float = var;
  p->tipo = FLOAT;

  if(l==NULL){
    p->sig = NULL;
  }else{
    p->sig = l;
  }

  return p;
}

ListaGenerica LGApilarString(ListaGenerica l, char *var)
{
  ListaGenerica p;
  p = (ListaGenerica)malloc(sizeof(NODO_LISTA));
  p->dato_s = var;
  p->tipo = STRING;

  if(l==NULL){
    p->sig = NULL;
  }else{
    p->sig = l;
  }

  return p;
}

void LGImprimirEnPantalla(ListaGenerica l)
{
  putchar('[');
  while(l != NULL)
  {
    if(l->tipo==INT)
      printf("%d", l->dato_int);

    else if(l->tipo==FLOAT)
      printf("%f", l->dato_float);

    else if (l->tipo==STRING)
      printf("%s", l->dato_s);

    if (l->sig != NULL)
      printf(", ");

    l=l->sig;
  }
  putchar(']');
}





#include "ListaGenerica.h"

int main()
{
  ListaGenerica l;
  l = LGListaVacia();
  l = LGApilarInt(l, 2);
  l = LGApilarInt(l, 20);
  l = LGApilarInt(l, 21);
  l = LGApilarInt(l, 12);
  l = LGApilarInt(l, 22);
  l = LGApilarFloat(l, 42.41);
  l = LGApilarFloat(l, 242.41);
  l = LGApilarFloat(l, 342.41);
  l = LGApilarString(l, "Pila");
  l = LGApilarString(l, "Generica");
  l = LGApilarString(l, "Anno 2014");

  LGImprimirEnPantalla(l);

  return 0;
}

#6
Programación C/C++ / Re: Consulta argumentos
22 Diciembre 2013, 02:24 AM
gracias

:o
#7
Programación C/C++ / Re: Consulta argumentos
21 Diciembre 2013, 18:39 PM
------------
#8
Programación C/C++ / Re: Consulta argumentos
21 Diciembre 2013, 18:36 PM
por eso mismo, mi pregunta es: ¿sí es una función donde siempre se le pasan cadenas de caracteres para que poner punteros genéricos y luego hacer el cast?

preguntaba si hay alguna ventaja o si, en este caso es lo mismo hacer la función así:

static int
compare (const char *a, const char *b);

con punteros a char

saludos
#9
Programación C/C++ / Consulta argumentos
20 Diciembre 2013, 21:12 PM
hay ventajas en hacer este tipo de declaraciones ?


static int
compare (const void *a, const void *b)
{
  return strcmp (*(char **) a, *(char **) b);
}