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 Mensajes
Páginas: 1 ... 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 [33] 34 35 36 37 38 39 40
321  Programación / Programación C/C++ / problema if's anidados en: 27 Diciembre 2012, 01:11 am
saludos estoy haciendo un programa que me tiene que:
 generar 5 operaciones aritmeticas aleatorias, los números (aleatorios) deben estar comprendidos entre 10 y 1, y las operaciones deberán ser suma, resta multiplicación, división (en el caso de la división se realizará siempre una división entera y el primer número tendrá que ser mayor que el segundo) al final imprimir el número de aciertos t la calificación

pero el problema es que no me da bien el número de los aciertos, no se si es porque tengo muchos ifs anidados o porque no me calcula bien las operaciones que dan resultados negativos como:

5-7 =-2

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define OPERACIONES 5
  5. int main()
  6. {
  7.    int i,numero1,numero2,respuesta,resultado,aciertos=0;
  8.    char operacion;
  9.    srand(time(NULL));
  10.    for(i=0;i<OPERACIONES;i++)
  11.    {
  12.        numero1 = rand()% 11+1;
  13.        numero2 = rand()% 11+1;
  14.        operacion = rand()% 6+42;
  15.        if(operacion==42||operacion==43||operacion==45||operacion==47)
  16.        {
  17.            if(operacion==47)
  18.            {
  19.                if(numero2>numero1)
  20.                {
  21.                    printf("%d %c %d = ",numero2,operacion,numero1);
  22.                    scanf("%d",&respuesta);
  23.                    resultado = numero2/numero1;
  24.                }
  25.                else
  26.                {
  27.                    printf("%d %c %d = ",numero1,operacion,numero2);
  28.                    scanf("%d",&respuesta);
  29.                    resultado = numero1/numero2;
  30.                }
  31.            }
  32.            else
  33.            {
  34.                if(operacion==42)
  35.                {
  36.                    printf("%d %c %d = ",numero1,operacion,numero2);
  37.                    scanf("%d",&respuesta);
  38.                    resultado=numero1*numero2;
  39.                }
  40.                else if(operacion==43)
  41.                {
  42.                    printf("%d %c %d = ",numero1,operacion,numero2);
  43.                    scanf("%d",&respuesta);
  44.                    resultado=numero1+numero2;
  45.                }
  46.                else if(operacion==45)
  47.                {
  48.                    printf("%d %c %d = ",numero1,operacion,numero2);
  49.                    scanf("%d",&respuesta);
  50.                    resultado=numero1+numero2;
  51.                }
  52.  
  53.            }
  54.            if(respuesta==resultado)
  55.               aciertos++;
  56.        }
  57.        else
  58.            i--;
  59.    }
  60.    printf("\nTuviste %d aciertos, tu calificacion es %d\n",aciertos,aciertos*20);
  61.    return 0;
  62. }
  63.  
de antemano gracias por sus respuestas  :)
322  Programación / Programación C/C++ / Re: warnings en: 22 Diciembre 2012, 01:53 am
muchas gracias por sus respuestas, ahora ya no me aparece ese warning pero como ya le agregue la función de eliminar_elemento (en esta metí la función de buscar) pero no me hace lo que le pido

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct nodo
  5. {
  6.    int dato;
  7.    struct nodo*sig;
  8. }NODO;
  9.  
  10. NODO* crear_nodo(int x);
  11. void insertar_cabeza(NODO **cabeza,int x);
  12. void eliminar_elemento(NODO **cabeza);
  13.  
  14. int main()
  15. {
  16.    int i,num,x;
  17.    NODO *cabeza,*ptr;
  18.    cabeza = NULL;
  19.    printf("Cuantos elementos quieres?\n");
  20.    scanf("%d",&num);
  21.    printf("Lista Simplemente Ligada!\n\n");
  22.    for(i=0;i<num;i++)
  23.    {
  24.        printf("Dame el elemento %d\n",i+1);
  25.        scanf("%d",&x);
  26.        insertar_cabeza(&cabeza,x);
  27.        system("cls");
  28.    }
  29.  
  30.    for(ptr=cabeza;ptr!=NULL;ptr=ptr->sig)
  31.        printf("%d\t",ptr->dato);
  32.  
  33.    eliminar_elemento(&cabeza);
  34.    for(ptr=cabeza;ptr!=NULL;ptr=ptr->sig)
  35.        printf("%d\t",ptr->dato);
  36.    return 0;
  37. }
  38.  
  39. NODO* crear_nodo(int x)
  40. {
  41.    NODO *p;
  42.    p = (NODO*)malloc(sizeof(NODO));
  43.    p->dato = x;
  44.    p->sig = NULL;
  45.    return p;
  46. }
  47.  
  48. void insertar_cabeza(NODO **cabeza,int x)
  49. {
  50.    NODO *nuevo;
  51.    nuevo = crear_nodo(x);
  52.    nuevo->sig = *cabeza;
  53.    *cabeza = nuevo;
  54. }
  55.  
  56. void eliminar_elemento(NODO **cabeza)
  57. {
  58.   int n;
  59.   NODO *actual,*anterior;
  60.   anterior=NULL;
  61.   printf("Dame el elemento a eliminar\n");
  62.   scanf("%d",&n);
  63.   for(actual=*cabeza;actual!=NULL;actual=actual->sig)
  64.   {
  65.       if(actual->dato==n)
  66.       {
  67.           anterior = actual->sig;
  68.           actual = anterior;
  69.           free(actual);
  70.       }
  71.   }
  72. }
  73.  

estos punteros por qué son tan difíciles?? :rolleyes:
323  Programación / Programación C/C++ / warnings en: 21 Diciembre 2012, 01:08 am
saludos

tengo el siguiente código de una lista simplemente enlazada, pero el problema es que me aparece un warning que dice:

return makes pointer from integer without a cast

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct nodo
  5. {
  6.    int dato;
  7.    struct nodo*sig;
  8. }NODO;
  9.  
  10. NODO* crear_nodo(int x);
  11. void insertar_cabeza(NODO **cabeza,int x);
  12. NODO* buscar_elemento(NODO *cabeza);
  13.  
  14. int main()
  15. {
  16.    int i,num,x;
  17.    NODO *cabeza,*ptr;
  18.    cabeza = NULL;
  19.    printf("Cuantos elementos quieres?\n");
  20.    scanf("%d",&num);
  21.    printf("Lista Simplemente Ligada!\n");
  22.    for(i=0;i<num;i++)
  23.    {
  24.        printf("Dame el elemento %d\n",i+1);
  25.        scanf("%d",&x);
  26.        insertar_cabeza(&cabeza,x);
  27.        system("cls");
  28.    }
  29.  
  30.    for(ptr=cabeza;ptr!=NULL;ptr=ptr->sig)
  31.        printf("\n%d\n",ptr->dato);
  32.    buscar_elemento(cabeza);
  33.    return 0;
  34. }
  35.  
  36. NODO* crear_nodo(int x)
  37. {
  38.    NODO *p;
  39.    p = (NODO*)malloc(sizeof(NODO));
  40.    p->dato = x;
  41.    p->sig = NULL;
  42.    return p;
  43. }
  44.  
  45. void insertar_cabeza(NODO **cabeza,int x)
  46. {
  47.    NODO *nuevo;
  48.    nuevo = crear_nodo(x);
  49.    nuevo->sig = *cabeza;
  50.    *cabeza = nuevo;
  51. }
  52.  
  53. NODO* buscar_elemento(NODO *cabeza)
  54. {
  55.    int elemento,encontro=0;
  56.    NODO *indice;
  57.    printf("Buscar elemento\n\n");
  58.    printf("Cual elemento quieres buscar?\n");
  59.    scanf("%d",&elemento);
  60.    for(indice=cabeza;indice!=NULL;indice=indice->sig)
  61.    {
  62.        if(indice->dato==elemento)
  63.           encontro=1;
  64.        else
  65.           encontro=0;
  66.    }
  67.    if(encontro)
  68.       return indice->dato;
  69.    else
  70.       return 0;
  71. }
  72.  
de antemano gracias
324  Programación / Programación General / Teoria del color en: 26 Noviembre 2012, 23:56 pm
Saludos

Estoy estudiando los diferentes modelos de color (RGB,CMY,CMYK, etc..) y tengo que resolver el siguiente problema que dice:

Transformar el pixel RGB de 8 bits/color primario (64, 128, 192) al modelo CMY normalizado

tengo entendido que la fórmula para transformar de  CMY a RGB es:

C: 1-R
M: 1-G
Y: 1-B

pero creo que con 8 bits es diferente

de antemano gracias
325  Programación / Programación C/C++ / mensaje de error en: 21 Noviembre 2012, 22:19 pm
Saludos

que significa cuando cada vez que intento correr un programa (en codeblocks) me aparece un mensaje de error que dice la direccion donde tengo guardada la aplicacion y

failed.Nothing to be done.

pero aún asi el programa compila, por eso no entiendo por qué me aparece este mensaje

de antemano gracias
326  Programación / Programación C/C++ / Re: Programa de Gráficas en: 18 Noviembre 2012, 05:19 am
saludos

ya se en que estaba mal es que tenia las fórmulas al reves cuando Po>=0 o es menor ;D pero ahora que estoy empezando la función de dibujar_elipse me aparece el siguiente error:

called object is not a function en la última línea

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. void dibujar_recta();
  6. void dibujar_circulo();
  7. void dibujar_elipse();
  8.  
  9.  
  10. int main()
  11. {
  12.    int opcion;
  13.    printf("Graficas por Computadora\n");
  14.    printf("Dibujo primitivas 2D\n");
  15.    printf("Que desea dibujar?\n");
  16.    printf("1)Linea\n");
  17.    printf("2)Circulo\n");
  18.    printf("3)Elipse\n");
  19.    scanf("%d",&opcion);
  20.    switch(opcion)
  21.    {
  22.        case 1:
  23.           dibujar_recta();
  24.           break;
  25.        case 2:
  26.           dibujar_circulo();
  27.           break;
  28.        case 3:
  29.           dibujar_elipse();
  30.           break;
  31.        default:
  32.           printf("Opcion no valida\n");
  33.    }
  34.    return 0;
  35. }
  36.  
  37. void dibujar_recta()
  38. {
  39.    int pi_x,pf_x,pi_y,pf_y,m,inc_x,inc_y,Pk=0,inc_y2,inc_x2,k,num,Xk,Yk;
  40.    printf("***Metodo de Bresenham***\n");
  41.    printf("Dame el punto inicial(x,y):\n");
  42.    scanf("%d%d",&pi_x,&pi_y);
  43.    printf("Dame el punto final(x,y):\n");
  44.    scanf("%d%d",&pf_x,&pf_y);
  45.    system("cls");
  46.  
  47.    m = (pf_y-pi_y)/(pf_x-pi_x);
  48.  
  49.    printf("pixel inicial = (%d,%d)\n",pi_x,pi_y);
  50.    inc_x = pf_x-pi_x;
  51.    inc_y = pf_y-pi_y;
  52.    inc_y2 = 2*inc_y;
  53.    inc_x2 = 2*inc_x;
  54.  
  55.    printf("%cx = %d\n",30,inc_x);
  56.    printf("%cy = %d\n",30,inc_y);
  57.    printf("2%cy = %d\n",30,inc_y2);
  58.    printf("2%cy - 2%cx = %d - %d = %d\n",30,30,inc_y2,inc_x2,inc_y2-inc_x2);
  59.  
  60.    Pk = 2*inc_y-inc_x;
  61.    printf("Pk = 2%cy - %cx = %d - %d = %d\n\n",30,30,inc_y2,inc_x,Pk);
  62.    Xk = pi_x;
  63.    Yk = pi_y;
  64.  
  65.    printf("Hasta que numero quieres calcular?\n");
  66.    scanf("%d",&num);
  67.    printf("K\tPk\t(Xk+1,Yk+1)\n");
  68.    k=0;
  69.    do
  70.    {
  71.        printf("%d\t%d\t",k,Pk);
  72.        if(Pk>=0)
  73.        {
  74.            Pk = Pk+inc_y2-inc_x2;
  75.            Xk++;
  76.            Yk++;
  77.        }
  78.        else
  79.        {
  80.            Pk = Pk+inc_y2;
  81.            Xk++;
  82.        }
  83.        printf("(%d,%d)\n",Xk,Yk);
  84.        k++;
  85.    }while(k<=num);
  86.  
  87. }
  88.  
  89. void dibujar_circulo()
  90. {
  91.    int r,xc,yc,Po,k,x0,y0;
  92.    printf("Dame el radio:\n");
  93.    scanf("%d",&r);
  94.    printf("Dame las coordenadas de centro:\n");
  95.    scanf("%d%d",&xc,&yc);
  96.    Po = 1-r;
  97.  
  98.    x0 = 0;
  99.    y0 = r;
  100.  
  101.  
  102.    printf("\n(Xo,Yo) = (%d,%d)\n",x0,y0);
  103.    printf("\nPo = 1 - %d = %d\n\n",r,Po);
  104.    printf("K\tPk\t(Xk+1,Yk+1)\t2Xk+1\t2Yk+1\n");
  105.    k=0;
  106.    do
  107.    {
  108.        printf("%d\t%d\t",k,Po);
  109.        if(Po>=0)
  110.        {
  111.            x0++;
  112.            y0--;
  113.            Po = Po+((2*x0)+1)-(2*y0);
  114.        }
  115.        else
  116.        {
  117.            x0++;
  118.            Po = Po+(2*x0)+1;
  119.        }
  120.        printf("(%d,%d)\t\t%d\t%d\n",x0,y0,2*x0,2*y0);
  121.        k++;
  122.    }while(y0>=x0);
  123. }
  124.  
  125. void dibujar_elipse()
  126. {
  127.    int x0,y0,rx,ry,P1o,ry_pot,rx_pot;
  128.    printf("***Metodo del punto medio***\n");
  129.    printf("Dame las coordenadas del centro:\n");
  130.    scanf("%d%d",&x0,&y0);
  131.    printf("Dame los radios rx, ry:\n");
  132.    scanf("%d%d",&rx,&ry);
  133.    printf("\n(Xo,Yo) = (0,Ry) = (0,%d)\n\n",ry);
  134.    ry_pot = pow(ry,2);
  135.    rx_pot = pow(rx,2);
  136.    P1o = (ry_pot)-(rx_pot)(ry)+rx_pot/4;
  137.    printf("P1o = %d\n",P1o);
  138. }
  139.  
327  Programación / Programación C/C++ / Re: Ayuda, tengo un problema en: 16 Noviembre 2012, 03:09 am
por que en el for si estas declarando i utilizas j?? y luego cuando haces esto alumno[j-1] no estas accesando a una posición válida creo que ese es tu principal error
328  Programación / Programación C/C++ / Re: Programa de Gráficas en: 13 Noviembre 2012, 23:14 pm
Muchas gracias Ferno  por tu respuesta

una última duda ya estoy empezando con la función para sacar las coordenadas del círculo pero tengo un problema a la hora de calcular Po, que en vez de iterar de positivo a negativo siempre me da números negativos y no entiendo por qué

Código
  1. void dibujar_circulo()
  2. {
  3.    int r,xc,yc,Po,k,x0,y0;
  4.    printf("Dame el radio:\n");
  5.    scanf("%d",&r);
  6.    printf("Dame las coordenadas de centro:\n");
  7.    scanf("%d%d",&xc,&yc);
  8.    Po = 1-r;
  9.  
  10.    x0 = 0;
  11.    y0 = r;
  12.  
  13.  
  14.    printf("\n(Xo,Yo) = (%d,%d)\n",x0,y0);
  15.    printf("\nPo = 1 - %d = %d\n\n",r,Po);
  16.    printf("K\tPk\t(Xk+1,Yk+1)\t2Xk+1\t2Yk+1\n");
  17.    k=0;
  18.    do
  19.    {
  20.        printf("%d\t%d\t",k,Po);
  21.        if(Po>=0)
  22.        {
  23.            Po = Po+(2*x0)+1;
  24.            x0++;
  25.            y0--;
  26.        }
  27.        else
  28.        {
  29.            Po = Po+(2*x0)+1-(2*y0);
  30.            x0++;
  31.        }
  32.        printf("(%d,%d)\t\t%d\t%d\n",x0,y0,2*x0,2*y0);
  33.        k++;
  34.    }while(y0>=x0);
  35. }
  36.  
329  Programación / Programación C/C++ / Programa de Gráficas en: 12 Noviembre 2012, 20:50 pm
Saludos

Estoy haciendo un programa de gráficas que me tiene que dar las coordenadas de una recta,  un circulo y un elipse, aún no lo he terminado porque el programa compila pero cuando entra al ciclo do-while se congela y no hace nada, no se por qué

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void dibujar_recta();
  5.  
  6. int main()
  7. {
  8.    int opcion;
  9.    printf("Graficas por Computadora\n");
  10.    printf("Dibujo primitivas 2D\n");
  11.    printf("Que desea hacer?\n");
  12.    printf("1)Linea\n");
  13.    printf("2)Circulo\n");
  14.    printf("3)Elipse\n");
  15.    scanf("%d",&opcion);
  16.    switch(opcion)
  17.    {
  18.        case 1:
  19.           dibujar_recta();
  20.           break;
  21.        case 2://todavia me falta esta parte
  22.           break;
  23.        case 3://todavia me falta esta parte
  24.           break;
  25.        default:
  26.           printf("Opcion no valida\n");
  27.    }
  28.    return 0;
  29. }
  30.  
  31. void dibujar_recta()
  32. {
  33.    int pi_x,pf_x,pi_y,pf_y,m,inc_x,inc_y,Pk=0,inc_y2,inc_x2,k,num,Xk,Yk;
  34.    printf("Dame el punto inicial(x,y):\n");
  35.    scanf("%d%d",&pi_x,&pi_y);
  36.    printf("Dame el punto final(x,y):\n");
  37.    scanf("%d%d",&pf_x,&pf_y);
  38.    system("cls");
  39.  
  40.    m = (pf_y-pi_y)/(pf_x-pi_x);
  41.  
  42.    printf("pixel inicial = (%d,%d)\n",pi_x,pi_y);
  43.    inc_x = pf_x-pi_x;
  44.    inc_y = pf_y-pi_y;
  45.    inc_y2 = 2*inc_y;
  46.    inc_x2 = 2*inc_x;
  47.  
  48.    printf("%cx = %d\n",30,inc_x);
  49.    printf("%cy = %d\n",30,inc_y);
  50.    printf("2%cy = %d\n",30,inc_y2);
  51.    printf("2%cy - 2%cx = %d - %d = %d\n",30,30,inc_y2,inc_x2,inc_y2-inc_x2);
  52.    Pk = 2*inc_y-inc_x;
  53.    printf("Pk = 2%cy - %cx = %d - %d = %d\n\n",30,30,inc_y2,inc_x,Pk);
  54.    Xk = pi_x;
  55.    Yk = pi_y;
  56.  
  57.    printf("Hasta que numero quieres calcular?\n");
  58.    scanf("%d\n",&num);
  59.    printf("K\tPk\t(Xk+1,Yk+1)\n");
  60.    k=0;
  61.    do
  62.    {
  63.        printf("%d\t%d",k,Pk);
  64.        if(Pk>=0)
  65.        {
  66.            Pk = Pk+inc_y2-inc_x2;
  67.            Xk++;
  68.            Yk++;
  69.        }
  70.        else
  71.        {
  72.            Pk = Pk+inc_y2;
  73.            Xk++;
  74.        }
  75.        printf("(%d,%d)\n",Xk,Yk);
  76.        k++;
  77.    }while(k<=num);
  78. }
  79.  

de antemano gracias
330  Programación / Programación C/C++ / Re: función random en: 6 Noviembre 2012, 00:45 am
Saludos leosansan

una última pregunta en el else de tu código pusiste i-- ¿por qué? no entiendo para qué pusiste ese contador

gracias por tu ayuda
Páginas: 1 ... 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 [33] 34 35 36 37 38 39 40
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines