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 - m@o_614

#321
Programación C/C++ / problema if's anidados
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

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define OPERACIONES 5
int main()
{
    int i,numero1,numero2,respuesta,resultado,aciertos=0;
    char operacion;
    srand(time(NULL));
    for(i=0;i<OPERACIONES;i++)
    {
        numero1 = rand()% 11+1;
        numero2 = rand()% 11+1;
        operacion = rand()% 6+42;
        if(operacion==42||operacion==43||operacion==45||operacion==47)
        {
            if(operacion==47)
            {
                if(numero2>numero1)
                {
                    printf("%d %c %d = ",numero2,operacion,numero1);
                    scanf("%d",&respuesta);
                    resultado = numero2/numero1;
                }
                else
                {
                    printf("%d %c %d = ",numero1,operacion,numero2);
                    scanf("%d",&respuesta);
                    resultado = numero1/numero2;
                }
            }
            else
            {
                if(operacion==42)
                {
                    printf("%d %c %d = ",numero1,operacion,numero2);
                    scanf("%d",&respuesta);
                    resultado=numero1*numero2;
                }
                else if(operacion==43)
                {
                    printf("%d %c %d = ",numero1,operacion,numero2);
                    scanf("%d",&respuesta);
                    resultado=numero1+numero2;
                }
                else if(operacion==45)
                {
                    printf("%d %c %d = ",numero1,operacion,numero2);
                    scanf("%d",&respuesta);
                    resultado=numero1+numero2;
                }

            }
            if(respuesta==resultado)
               aciertos++;
        }
        else
            i--;
    }
    printf("\nTuviste %d aciertos, tu calificacion es %d\n",aciertos,aciertos*20);
    return 0;
}

de antemano gracias por sus respuestas  :)
#322
Programación C/C++ / Re: warnings
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

#include <stdio.h>
#include <stdlib.h>

typedef struct nodo
{
    int dato;
    struct nodo*sig;
}NODO;

NODO* crear_nodo(int x);
void insertar_cabeza(NODO **cabeza,int x);
void eliminar_elemento(NODO **cabeza);

int main()
{
    int i,num,x;
    NODO *cabeza,*ptr;
    cabeza = NULL;
    printf("Cuantos elementos quieres?\n");
    scanf("%d",&num);
    printf("Lista Simplemente Ligada!\n\n");
    for(i=0;i<num;i++)
    {
        printf("Dame el elemento %d\n",i+1);
        scanf("%d",&x);
        insertar_cabeza(&cabeza,x);
        system("cls");
    }

    for(ptr=cabeza;ptr!=NULL;ptr=ptr->sig)
        printf("%d\t",ptr->dato);

    eliminar_elemento(&cabeza);
    for(ptr=cabeza;ptr!=NULL;ptr=ptr->sig)
        printf("%d\t",ptr->dato);
    return 0;
}

NODO* crear_nodo(int x)
{
    NODO *p;
    p = (NODO*)malloc(sizeof(NODO));
    p->dato = x;
    p->sig = NULL;
    return p;
}

void insertar_cabeza(NODO **cabeza,int x)
{
    NODO *nuevo;
    nuevo = crear_nodo(x);
    nuevo->sig = *cabeza;
    *cabeza = nuevo;
}

void eliminar_elemento(NODO **cabeza)
{
   int n;
   NODO *actual,*anterior;
   anterior=NULL;
   printf("Dame el elemento a eliminar\n");
   scanf("%d",&n);
   for(actual=*cabeza;actual!=NULL;actual=actual->sig)
   {
       if(actual->dato==n)
       {
           anterior = actual->sig;
           actual = anterior;
           free(actual);
       }
   }
}


estos punteros por qué son tan difíciles?? :rolleyes:
#323
Programación C/C++ / warnings
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

#include <stdio.h>
#include <stdlib.h>

typedef struct nodo
{
    int dato;
    struct nodo*sig;
}NODO;

NODO* crear_nodo(int x);
void insertar_cabeza(NODO **cabeza,int x);
NODO* buscar_elemento(NODO *cabeza);

int main()
{
    int i,num,x;
    NODO *cabeza,*ptr;
    cabeza = NULL;
    printf("Cuantos elementos quieres?\n");
    scanf("%d",&num);
    printf("Lista Simplemente Ligada!\n");
    for(i=0;i<num;i++)
    {
        printf("Dame el elemento %d\n",i+1);
        scanf("%d",&x);
        insertar_cabeza(&cabeza,x);
        system("cls");
    }

    for(ptr=cabeza;ptr!=NULL;ptr=ptr->sig)
        printf("\n%d\n",ptr->dato);
    buscar_elemento(cabeza);
    return 0;
}

NODO* crear_nodo(int x)
{
    NODO *p;
    p = (NODO*)malloc(sizeof(NODO));
    p->dato = x;
    p->sig = NULL;
    return p;
}

void insertar_cabeza(NODO **cabeza,int x)
{
    NODO *nuevo;
    nuevo = crear_nodo(x);
    nuevo->sig = *cabeza;
    *cabeza = nuevo;
}

NODO* buscar_elemento(NODO *cabeza)
{
    int elemento,encontro=0;
    NODO *indice;
    printf("Buscar elemento\n\n");
    printf("Cual elemento quieres buscar?\n");
    scanf("%d",&elemento);
    for(indice=cabeza;indice!=NULL;indice=indice->sig)
    {
        if(indice->dato==elemento)
           encontro=1;
        else
           encontro=0;
    }
    if(encontro)
       return indice->dato;
    else
       return 0;
}

de antemano gracias
#324
Programación General / Teoria del color
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 C/C++ / mensaje de error
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 C/C++ / Re: Programa de Gráficas
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

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void dibujar_recta();
void dibujar_circulo();
void dibujar_elipse();


int main()
{
    int opcion;
    printf("Graficas por Computadora\n");
    printf("Dibujo primitivas 2D\n");
    printf("Que desea dibujar?\n");
    printf("1)Linea\n");
    printf("2)Circulo\n");
    printf("3)Elipse\n");
    scanf("%d",&opcion);
    switch(opcion)
    {
        case 1:
           dibujar_recta();
           break;
        case 2:
           dibujar_circulo();
           break;
        case 3:
           dibujar_elipse();
           break;
        default:
           printf("Opcion no valida\n");
    }
    return 0;
}

void dibujar_recta()
{
    int pi_x,pf_x,pi_y,pf_y,m,inc_x,inc_y,Pk=0,inc_y2,inc_x2,k,num,Xk,Yk;
    printf("***Metodo de Bresenham***\n");
    printf("Dame el punto inicial(x,y):\n");
    scanf("%d%d",&pi_x,&pi_y);
    printf("Dame el punto final(x,y):\n");
    scanf("%d%d",&pf_x,&pf_y);
    system("cls");

    m = (pf_y-pi_y)/(pf_x-pi_x);

    printf("pixel inicial = (%d,%d)\n",pi_x,pi_y);
    inc_x = pf_x-pi_x;
    inc_y = pf_y-pi_y;
    inc_y2 = 2*inc_y;
    inc_x2 = 2*inc_x;

    printf("%cx = %d\n",30,inc_x);
    printf("%cy = %d\n",30,inc_y);
    printf("2%cy = %d\n",30,inc_y2);
    printf("2%cy - 2%cx = %d - %d = %d\n",30,30,inc_y2,inc_x2,inc_y2-inc_x2);

    Pk = 2*inc_y-inc_x;
    printf("Pk = 2%cy - %cx = %d - %d = %d\n\n",30,30,inc_y2,inc_x,Pk);
    Xk = pi_x;
    Yk = pi_y;

    printf("Hasta que numero quieres calcular?\n");
    scanf("%d",&num);
    printf("K\tPk\t(Xk+1,Yk+1)\n");
    k=0;
    do
    {
        printf("%d\t%d\t",k,Pk);
        if(Pk>=0)
        {
            Pk = Pk+inc_y2-inc_x2;
            Xk++;
            Yk++;
        }
        else
        {
            Pk = Pk+inc_y2;
            Xk++;
        }
        printf("(%d,%d)\n",Xk,Yk);
        k++;
    }while(k<=num);

}

void dibujar_circulo()
{
    int r,xc,yc,Po,k,x0,y0;
    printf("Dame el radio:\n");
    scanf("%d",&r);
    printf("Dame las coordenadas de centro:\n");
    scanf("%d%d",&xc,&yc);
    Po = 1-r;

    x0 = 0;
    y0 = r;


    printf("\n(Xo,Yo) = (%d,%d)\n",x0,y0);
    printf("\nPo = 1 - %d = %d\n\n",r,Po);
    printf("K\tPk\t(Xk+1,Yk+1)\t2Xk+1\t2Yk+1\n");
    k=0;
    do
    {
        printf("%d\t%d\t",k,Po);
        if(Po>=0)
        {
            x0++;
            y0--;
            Po = Po+((2*x0)+1)-(2*y0);
        }
        else
        {
            x0++;
            Po = Po+(2*x0)+1;
        }
        printf("(%d,%d)\t\t%d\t%d\n",x0,y0,2*x0,2*y0);
        k++;
    }while(y0>=x0);
}

void dibujar_elipse()
{
    int x0,y0,rx,ry,P1o,ry_pot,rx_pot;
    printf("***Metodo del punto medio***\n");
    printf("Dame las coordenadas del centro:\n");
    scanf("%d%d",&x0,&y0);
    printf("Dame los radios rx, ry:\n");
    scanf("%d%d",&rx,&ry);
    printf("\n(Xo,Yo) = (0,Ry) = (0,%d)\n\n",ry);
    ry_pot = pow(ry,2);
    rx_pot = pow(rx,2);
    P1o = (ry_pot)-(rx_pot)(ry)+rx_pot/4;
    printf("P1o = %d\n",P1o);
}
#327
Programación C/C++ / Re: Ayuda, tengo un problema
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 C/C++ / Re: Programa de Gráficas
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é

void dibujar_circulo()
{
    int r,xc,yc,Po,k,x0,y0;
    printf("Dame el radio:\n");
    scanf("%d",&r);
    printf("Dame las coordenadas de centro:\n");
    scanf("%d%d",&xc,&yc);
    Po = 1-r;

    x0 = 0;
    y0 = r;


    printf("\n(Xo,Yo) = (%d,%d)\n",x0,y0);
    printf("\nPo = 1 - %d = %d\n\n",r,Po);
    printf("K\tPk\t(Xk+1,Yk+1)\t2Xk+1\t2Yk+1\n");
    k=0;
    do
    {
        printf("%d\t%d\t",k,Po);
        if(Po>=0)
        {
            Po = Po+(2*x0)+1;
            x0++;
            y0--;
        }
        else
        {
            Po = Po+(2*x0)+1-(2*y0);
            x0++;
        }
        printf("(%d,%d)\t\t%d\t%d\n",x0,y0,2*x0,2*y0);
        k++;
    }while(y0>=x0);
}
#329
Programación C/C++ / Programa de Gráficas
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é

#include <stdio.h>
#include <stdlib.h>

void dibujar_recta();

int main()
{
    int opcion;
    printf("Graficas por Computadora\n");
    printf("Dibujo primitivas 2D\n");
    printf("Que desea hacer?\n");
    printf("1)Linea\n");
    printf("2)Circulo\n");
    printf("3)Elipse\n");
    scanf("%d",&opcion);
    switch(opcion)
    {
        case 1:
           dibujar_recta();
           break;
        case 2://todavia me falta esta parte
           break;
        case 3://todavia me falta esta parte
           break;
        default:
           printf("Opcion no valida\n");
    }
    return 0;
}

void dibujar_recta()
{
    int pi_x,pf_x,pi_y,pf_y,m,inc_x,inc_y,Pk=0,inc_y2,inc_x2,k,num,Xk,Yk;
    printf("Dame el punto inicial(x,y):\n");
    scanf("%d%d",&pi_x,&pi_y);
    printf("Dame el punto final(x,y):\n");
    scanf("%d%d",&pf_x,&pf_y);
    system("cls");

    m = (pf_y-pi_y)/(pf_x-pi_x);

    printf("pixel inicial = (%d,%d)\n",pi_x,pi_y);
    inc_x = pf_x-pi_x;
    inc_y = pf_y-pi_y;
    inc_y2 = 2*inc_y;
    inc_x2 = 2*inc_x;

    printf("%cx = %d\n",30,inc_x);
    printf("%cy = %d\n",30,inc_y);
    printf("2%cy = %d\n",30,inc_y2);
    printf("2%cy - 2%cx = %d - %d = %d\n",30,30,inc_y2,inc_x2,inc_y2-inc_x2);
    Pk = 2*inc_y-inc_x;
    printf("Pk = 2%cy - %cx = %d - %d = %d\n\n",30,30,inc_y2,inc_x,Pk);
    Xk = pi_x;
    Yk = pi_y;

    printf("Hasta que numero quieres calcular?\n");
    scanf("%d\n",&num);
    printf("K\tPk\t(Xk+1,Yk+1)\n");
    k=0;
    do
    {
        printf("%d\t%d",k,Pk);
        if(Pk>=0)
        {
            Pk = Pk+inc_y2-inc_x2;
            Xk++;
            Yk++;
        }
        else
        {
            Pk = Pk+inc_y2;
            Xk++;
        }
        printf("(%d,%d)\n",Xk,Yk);
        k++;
    }while(k<=num);
}


de antemano gracias
#330
Programación C/C++ / Re: función random
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