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 - Blaster

#161
Programación C/C++ / Re: Urgente C++
28 Abril 2013, 15:32 PM
 Aqui un ejemplo es solo una idea tu has las modificacion para ajustarlo a tu necesidad,
espero te sirva  ;) seria algo asi:

Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

int main()
{
  char cad [5] = {'a', 'b', 'c', 'e', 'f'};
  char c;
  int i = 0;

  cout << "Ingrese el caracter a buscar: ";
  cin >> c;

  while (cad[i] != '\0')
  {
   if(cad[i] == c) break;
     i++;
  }
  cout << "Caracter " << c << " encontrado " << "indice " << i;

  cin.get();
  return 0;
}


Un Saludo!!  ;D
#162
Gracias a todos por las sugerencias, ahora mismo estoy trabajando en mejorarla  ;)
solo me estoy liando con esto de las bases de datos, luego les comento  ;-)

Un Saludo!!!!!.
#163
 Hola acabo de terminar un sencillo code, que fue una idea que se me vino a la cabeza; se
trata de un sencillo traductor. La cuestion es que me guataria mejorarlo un poco en el caso
de las palabras me gustaria guardarla en una base de datos pero ese se me complica un
poco, o tambien podria ser en un fichero txt.
En alguna parte vi algo sobre las expresiones regulares quisiera implementarlas en el code
para haceer las comparaciones de las palabras alguna idea, aqui esta el code que hice:

Código (cpp) [Seleccionar]
#include<stdio.h>
#include<string.h>

char *punt[][2] = { "large", "grande", "evil", "maligno", "lower", "mas bajo",

               "write", "escribir", "print", "imprimir", "this", "este, esta, esto",

               "show", "mostrar", "check", "comprobar", "set", "poner, colocar" };

int main()
{
   int j, sw = 0, iter = 9;
   char nom[80];

   printf("\nEscriba la palabra que desea traducir: ");
   gets(nom);

   for(j = 0; j < iter; j++)
   {
       if(!strcmp(nom, punt[j][0]))
       {
          printf("\n %s traducido --> %s" , nom, punt[j][1]);
sw=1;
         }
    }
   if(sw==0)
     printf("\n Lo siento la palabra no pudo ser traducida\n");

   getchar();
   return 0;
}



Un Saludo!!  :D
#164
Hola a todos, vengo a hecer este humilde aporte, yo ya habia abrido un post sobre esto donde pedia que me expliquen para comprender como funcionaba el Algoritmo de Quicksort pero luego de muchas horas de romperme la cabeza tratando de desmenusarlo por completo al fin lo logre. Alli abajo dejo una sencilla pero detallada explicacion de como lo entendi yo, si he errado en algo porfavor haganmelo saber:

Código (cpp) [Seleccionar]
int dividir(int *cad, int inc, int end)
{
      int j;
      int pibote, valor_pivote;
      int temp;

      pibote = inc;
      valor_pivote = cad[pibote];

      for (j = inc+1; j <= end; j++)
      {
          if (cad[j] < valor_pivote)
          {
               pibote++;

               temp = cad[j];
               cad[j] = cad[pibote];
               cad[pibote] = temp;
           }
      }
      temp = cad[inc];
      cad[inc] = cad[pibote];
      cad[pibote] = temp;

      return pibote;
}

void quicksort(int *array, int inicio, int fin)
{
   int pivote;

   if(inicio < fin)
   {
     pivote = dividir (array, inicio, fin);

     quicksort(array, inicio, pivote-1); //ordeno la lista de los menores
     quicksort(array, pivote+1, fin); //ordeno la lista de los mayores
   }
}


Supongamos que tenemos un array con estos valores:
Código (bash) [Seleccionar]
cad[] = {5, 2, 10, 7, 4};

En este caso tomamos como pibote al 5 y con el ciclo for recorremos el array desde la posicion 1 hasta la 4; y justo abajo tenemos un if con la condicion de que si el valor contenido en el array es menor al pibote, se ejecutara el bloque de instrucion siguiente.
En este caso, en el primer recorrido se encuentra al 2 menor al pibote, por lo tanto se cumple la condicion de la que hablabamos. Primeramente el valor del pibote aumenta a uno segun esta declaracion (pibote++;).

Luego a la variable auxiliar (temp) le asignamosel valor de 2 ya que en ese instante el indice [j] contendra el valor de 1 donde esta guardada 2, luego a (cad[j]) le asignamos (cad[pibote]) recuerden que pibote ahora vale 1 y no olvidar que tambien [j]
Se dieron cuenta cad[j] conservo su valor y en esta parte ocurrio lo mismo
(cad[pibote] = temp;) por que los dos [j] y [pibote] trabajaroncon las mismas posiciones osea 1 y no se produjeron intercambios.

Continuamos con el primer recorrido y detectamos que 4 es menor al pibote se cumple la condicion pibote aumenta a 2 ya que valia 1, luego hacemos los cambios (temp) contendra a 4 y (cad[j]) la ultima posicion le asignamos 10 recuerden que [j] vale 4, luego a cad[pibote] le asignamos temp osea 4 recuerden que [pibote] vale 2.

Como ven se intercambiaron  10 y 4; ahora nuestro array quedara asi:

Código (bash) [Seleccionar]
cad[] = {5, 2, 4, 7, 10};


Ahora ya salimos del primer recorrido en esta parte hacemos los intercambios
pertinentes con estas declaraciones:

Código (cpp) [Seleccionar]
temp = cad[inc];
cad[inc] = cad[pibote];
cad[pibote] = temp;


Con los valores finales de pibote al salir del ciclo en este caso es 2
como se daran cuenta aca ocurre un intercambio, deben saber que (inc) vale 0 su
valor no varia mientras no se ejecute la funcion recursiva, y e obvio que se
intercambiaron 4 y 5 ahora el array pasa asi:

Código (bash) [Seleccionar]
cad[] = {4, 2, 5, 7, 10};

Al salir pibote retorna 2 y se ejecuta la funcion que ordena la lista de los menores
como ven a (pivote-1) pasa a valer solo 1, osea solo podemos leer los valores
cad[] = {4, 2}; ahora el 4 actua como pibote y (inc) sigue valiendo 0 ahora en este
recorrido encuentra que 2 es menor al pibote y aumenta pibote a 1 como ya es de predecir  en esta parte no se produciran intercambios.

Salimos de ciclo, y hacemos los intercambios con las declaraciones de abajo,
pibote termina con un valor final de 1 y (inc) sigue con 0; se intercambian los valores quedando asi nuestro array:

Código (bash) [Seleccionar]
cad[] = {2, 4, 5, 7, 10};

Y de esta forma quedo ordenado nuestro array; creo que luego se volvio a ejecutar la parte que ordena la lista de los mayores pero sin realizar cambios.
Espero que a algunos iniciados en esto de la programacion le sirva para aprender de este algoritmo y a los que ya dominan este tema me corrija si he fallado en algo

Saludos!!  ;D
#166
Hola encontre un manual donde lo explican muy bien, luego les comento y creo
que publicare algun tipo de tutorial para que a atros le pueda servir  :laugh:

Saludos..
#167
Hola quisiera que me ayuden a comprender el funcionamiento de metodo de
ordenamiento quicksort, ya que me rompo la cabeza trantado de hacerlo
Por ahora ya lo voy entendiendo mas o menos; pero la parte de la funcion recursiva no se me aclara del todo aca el codigo de las dos funciones:

int colocar(int *v, int b, int t)
  {
      int i;
      int pivote, valor_pivote;
      int temp;
   
      pivote = b;
      valor_pivote = v[pivote];
      for (i=b+1; i<=t; i++){
          if (v[i] < valor_pivote){
                  pivote++;    
                  temp=v[i];
                  v[i]=v[pivote];
                  v[pivote]=temp;
   
          }
      }
      temp=v[b];
      v[b]=v[pivote];
      v[pivote]=temp;
      return pivote;
  }
 
  void Quicksort(int* v, int b, int t)
  {
       int pivote;
       if(b < t){
          pivote=colocar(v, b, t);
          Quicksort(v, b, pivote-1);
          Quicksort(v, pivote+1, t);
       }  
  }


Por favor si no es mucha molestia, agregen comentarios a cada lineas del codigo
para saber que hacen exactamente; porfavor les agradeceria mucho ya que me interesa mucho esto  :)
#168
Hola a todos, mi intencion exactamente es realizar un tipo de traductor sencillo,
y quiero guardar las definiciones de las palabras en un ficheros txt, para luego
hacer una lectura de ellos, pero no encuentro la forma ya que ahi estarian la palabra a traducir  y junto a ella lo que significa. Por ejemplo:
"book, libro" seguidamente alguna idea.
#169
Al ser asi debes hacer una ligera modificacion a tu codigo, ya que tu intentas abrir el fichero para escribir en el con ofstream::out pero en tu caso lo quieres abrir para lectura, por lo
tanto debes reemplazarlo por ifstream::in aki el codigo:
Código (cpp) [Seleccionar]
char cadena[100];
    ifstream f("ranking.txt", ifstream::in);
    f >> cadena;
    cin.get();


Un saludo
#170
Creo que la forma correcta de usar el operador seria:
Código (cpp) [Seleccionar]
ranking << cadena;
Que alguien me corrija si estoy equivocado.

Un saludo