elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Temas
Páginas: 1 [2] 3
11  Programación / Programación C/C++ / Problema con estructura y punteros en C en: 8 Junio 2013, 17:34 pm
Buenas!!

Tengo un pequeño problema con un codigo me compila pero al momento de ejecutarla windows
tira una ventana donde dice que mi programa hace referencia a una zona de memoria a la que
no se puede escribir, les dejo el codigo

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.    int i;
  6.    struct COORD { int array[10], y, z; } punto;
  7.  
  8.    struct COORD *ap_punto;
  9.  
  10.    for(i = 0; i < 10; i++)
  11.        ap_punto->array[i] = 2;
  12.  
  13.    punto.y = punto.z = 1;
  14.  
  15.    ap_punto = &punto;
  16.  
  17.    ap_punto->y+=2;
  18.    ap_punto->z=3;
  19.  
  20.    for(i = 0; i < 10; i++)
  21.    printf("%d ", ap_punto->array[i]);
  22.  
  23.    return 0;
  24. }
  25.  

Saludos
12  Foros Generales / Foro Libre / Cunto tiempo te costo dominar una lenguaje programación en: 7 Junio 2013, 22:32 pm
Buenas!!

En mi caso por ejemplo llevo un año y medio estudiando el lenguaje C y de paso C++ en este periodo de tiempo he aprendido bastante lo suficiente para hacer unos programamitas de utilidad para mi uso personal, incluso ya he hecho varios juegos entretenidos
 
Pero me estoy dando que necesito adquirir mas conocimiento para llevar acabo algunos proyectos que me he propuesto, he lei en algunos sitios que algunos aprenden a dominar un lenguaje como C aproximadamente en diez años es eso cierto, o tal vez dependa unicamente de ti ya que yo le dedico a esto cinco horas diaria generalmente a la noche ya que estoy trabajando.

A la espera de sus comentarios

Saludos  :silbar:  
13  Programación / Programación C/C++ / Duda con el depurador de CodeBlocks en: 3 Junio 2013, 02:08 am
Hola alguien sabe por que en la version 12.11 en la ventana de watches no aparece las variables locales ni las funciones como podria solucionar esto por que me urge seguir la ejecucion de un programa linea a linea para ver los valores que toma las variables .Ya que en la version 10.05 se podia hacer

Saludos  :rolleyes:
14  Programación / Programación C/C++ / Problema con contador de palabra en C en: 30 Mayo 2013, 21:09 pm
Alguien me puede echar una mano con este codigo que no me compila me tira este error:

Código
  1. error: lvalue required as increment operand

Y aqui esta el codigo que llevo:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(void)
  6. {
  7.    char frase[] = "Hola como estas Hola como te va Hola amigo";
  8.    char palabra[] = {"Hola"};
  9.  
  10.    int lon = strlen(palabra);
  11.  
  12.    int i, j = 0;
  13.  
  14.    while(*frase != '\0'){
  15.        i = 0;
  16.        while(*frase != ' ' || *frase != '\0'){
  17.            frase++; // Error en esta linea
  18.            i++;
  19.        }
  20.        if(strncmp(frase - lon, palabra, lon)==0) j++;
  21.  
  22.        if(*frase != '\0')
  23.           frase++; // Y aqui
  24.    }
  25.  
  26.    printf("La palabra Hola se repite %d veces", j);
  27.  
  28.    return 0;
  29. }
  30.  
  31.  

Saludos  :rolleyes:
15  Programación / Programación C/C++ / Traductor de idiomas en C en: 25 Abril 2013, 17:36 pm
 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
  1. #include<stdio.h>
  2. #include<string.h>
  3.  
  4. char *punt[][2] = { "large", "grande", "evil", "maligno", "lower", "mas bajo",
  5.  
  6.                "write", "escribir", "print", "imprimir", "this", "este, esta, esto",
  7.  
  8.                "show", "mostrar", "check", "comprobar", "set", "poner, colocar" };
  9.  
  10. int main()
  11. {
  12.    int j, sw = 0, iter = 9;
  13.    char nom[80];
  14.  
  15.    printf("\nEscriba la palabra que desea traducir: ");
  16.    gets(nom);
  17.  
  18.    for(j = 0; j < iter; j++)
  19.    {
  20.        if(!strcmp(nom, punt[j][0]))
  21.        {
  22.           printf("\n %s traducido --> %s" , nom, punt[j][1]);
  23. sw=1;
  24.          }
  25.     }
  26.    if(sw==0)
  27.      printf("\n Lo siento la palabra no pudo ser traducida\n");
  28.  
  29.    getchar();
  30.    return 0;
  31. }
  32.  


Un Saludo!!  :D
16  Programación / Programación C/C++ / [Aporte] explicacion del funcionamiento de Quicksort en: 18 Abril 2013, 19:33 pm
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
  1. int dividir(int *cad, int inc, int end)
  2. {
  3.       int j;
  4.       int pibote, valor_pivote;
  5.       int temp;
  6.  
  7.       pibote = inc;
  8.       valor_pivote = cad[pibote];
  9.  
  10.       for (j = inc+1; j <= end; j++)
  11.       {
  12.           if (cad[j] < valor_pivote)
  13.           {
  14.                pibote++;
  15.  
  16.                temp = cad[j];
  17.                cad[j] = cad[pibote];
  18.                cad[pibote] = temp;
  19.            }
  20.       }
  21.       temp = cad[inc];
  22.       cad[inc] = cad[pibote];
  23.       cad[pibote] = temp;
  24.  
  25.       return pibote;
  26. }
  27.  
  28. void quicksort(int *array, int inicio, int fin)
  29. {
  30.    int pivote;
  31.  
  32.    if(inicio < fin)
  33.    {
  34.      pivote = dividir (array, inicio, fin);
  35.  
  36.      quicksort(array, inicio, pivote-1); //ordeno la lista de los menores
  37.      quicksort(array, pivote+1, fin); //ordeno la lista de los mayores
  38.    }
  39. }

Supongamos que tenemos un array con estos valores:
 
Código
  1. 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
  1. cad[] = {5, 2, 4, 7, 10};
  2.  

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

Código
  1. temp = cad[inc];
  2. cad[inc] = cad[pibote];
  3. 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
  1. 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
  1. 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
17  Programación / Programación C/C++ / Duda con ordenamiento quicksort en: 13 Abril 2013, 22:13 pm
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:

Código
  1. int colocar(int *v, int b, int t)
  2.   {
  3.       int i;
  4.       int pivote, valor_pivote;
  5.       int temp;
  6.  
  7.       pivote = b;
  8.       valor_pivote = v[pivote];
  9.       for (i=b+1; i<=t; i++){
  10.           if (v[i] < valor_pivote){
  11.                   pivote++;    
  12.                   temp=v[i];
  13.                   v[i]=v[pivote];
  14.                   v[pivote]=temp;
  15.  
  16.           }
  17.       }
  18.       temp=v[b];
  19.       v[b]=v[pivote];
  20.       v[pivote]=temp;
  21.       return pivote;
  22.   }
  23.  
  24.   void Quicksort(int* v, int b, int t)
  25.   {
  26.        int pivote;
  27.        if(b < t){
  28.           pivote=colocar(v, b, t);
  29.           Quicksort(v, b, pivote-1);
  30.           Quicksort(v, pivote+1, t);
  31.        }  
  32.   }

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  :)
18  Programación / Programación C/C++ / Duda con lectura de ficheros txt en: 11 Abril 2013, 19:57 pm
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.
19  Programación / Programación C/C++ / Como saber el tamaño de un array de tipo int en: 8 Noviembre 2012, 16:40 pm
Estoy trabajando con un progrma que hace uso de un array de tipos entero, y necesito determinar el tamaño en base al cotenido de esta; probe con strlen pero esta solo devuelve la longitud de uno de tipo char.

Código
  1. char cadena[15]= "Hola" ;

Aka definimos una arary de tamaño 15, pero la hemos inicializado y tiene una longitud de solo  4,
pasando esto a strlen efectivamente devuelve 4; existe una funcion igual a esta para
aplicarla a un entero.

Desde ya mucha gracias
20  Programación / Programación C/C++ / Problema con estructuras[Ayuda] en: 7 Noviembre 2012, 18:02 pm
Alguien podria decirme en que estoy fallando, aka el codigo que estoy haciendo:

Código
  1. #include <stdio.h>
  2.  
  3. struct empleado{
  4.     char nom[40];
  5.     int asiento[3];
  6. };
  7. void ingresar(empleado d);
  8. void asignarAsiento(empleado q[]);
  9. void imprimir(empleado a);
  10.  
  11. int main()
  12. {
  13.      empleado e[3];
  14.      asignarAsiento(e);
  15.      for (int i=0; i!=3; ++i)
  16.      imprimir(e[i]);
  17.      return 0;
  18. }
  19. void ingresar(struct empleado d){
  20.     printf("Nombre: ");
  21.      scanf("%s", d.nom);
  22.     printf("Asiento: ");
  23.      scanf("%d", &d.asiento);
  24.    }
  25. void asignarAsiento(struct empleado q[]){
  26.     int i, j;
  27.     for(i=0; i<3; i++){
  28.             ingresar(q[i]);
  29.        for(j=0; j<i; j++) {
  30.           if(q[i].asiento[j]==q[j].asiento[i]){
  31.             printf ("Asiento ocupado\n");
  32.             i--; break; }
  33.                }
  34.        }
  35. }
  36. void imprimir(struct empleado a){
  37.     printf("Nombre\tAsiento");
  38.     printf(" %s \t %d", a.nom, a.asiento);
  39. }
  40.  
A la hora de compilarlo el compilador me lanza dos errores:
 
Código:
error: cannot convert `empleado' to `empleado*' for argument `1' to `void asignarAsiento(empleado*)' 
Código:
error: conversion from `empleado*' to non-scalar type `empleado' requested
Páginas: 1 [2] 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines