|
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 #include <stdio.h> #include <stdlib.h> #include <time.h> #define OPERACIONES 5 int main() { int i,numero1,numero2,respuesta,resultado,aciertos=0; char operacion; for(i=0;i<OPERACIONES;i++) { 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 ); resultado = numero2/numero1; } else { printf("%d %c %d = ",numero1 ,operacion ,numero2 ); resultado = numero1/numero2; } } else { if(operacion==42) { printf("%d %c %d = ",numero1 ,operacion ,numero2 ); resultado=numero1*numero2; } else if(operacion==43) { printf("%d %c %d = ",numero1 ,operacion ,numero2 ); resultado=numero1+numero2; } else if(operacion==45) { printf("%d %c %d = ",numero1 ,operacion ,numero2 ); 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 / 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 #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"); printf("Lista Simplemente Ligada!\n\n"); for(i=0;i<num;i++) { printf("Dame el elemento %d\n",i +1); insertar_cabeza(&cabeza,x); } for(ptr=cabeza;ptr!=NULL;ptr=ptr->sig) eliminar_elemento(&cabeza); for(ptr=cabeza;ptr!=NULL;ptr=ptr->sig) 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"); for(actual=*cabeza;actual!=NULL;actual=actual->sig) { if(actual->dato==n) { anterior = actual->sig; actual = anterior; } } }
estos punteros por qué son tan difíciles??
|
|
|
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 #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"); printf("Lista Simplemente Ligada!\n"); for(i=0;i<num;i++) { printf("Dame el elemento %d\n",i +1); insertar_cabeza(&cabeza,x); } for(ptr=cabeza;ptr!=NULL;ptr=ptr->sig) 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"); 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 / 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 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"); switch(opcion) { case 1: dibujar_recta(); break; case 2: dibujar_circulo(); break; case 3: dibujar_elipse(); break; default: } 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 ); 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"); printf("K\tPk\t(Xk+1,Yk+1)\n"); k=0; do { if(Pk>=0) { Pk = Pk+inc_y2-inc_x2; Xk++; Yk++; } else { Pk = Pk+inc_y2; Xk++; } k++; }while(k<=num); } void dibujar_circulo() { int r,xc,yc,Po,k,x0,y0; printf("Dame las coordenadas de centro:\n"); 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 { 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"); printf("Dame los radios rx, ry:\n"); printf("\n(Xo,Yo) = (0,Ry) = (0,%d)\n\n",ry ); P1o = (ry_pot)-(rx_pot)(ry)+rx_pot/4; }
|
|
|
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é void dibujar_circulo() { int r,xc,yc,Po,k,x0,y0; printf("Dame las coordenadas de centro:\n"); 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 { 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 / 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é #include <stdio.h> #include <stdlib.h> void dibujar_recta(); int main() { int opcion; printf("Graficas por Computadora\n"); printf("Dibujo primitivas 2D\n"); switch(opcion) { case 1: dibujar_recta(); break; case 2://todavia me falta esta parte break; case 3://todavia me falta esta parte break; default: } 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 ); 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"); printf("K\tPk\t(Xk+1,Yk+1)\n"); k=0; do { if(Pk>=0) { Pk = Pk+inc_y2-inc_x2; Xk++; Yk++; } else { Pk = Pk+inc_y2; Xk++; } k++; }while(k<=num); }
de antemano gracias
|
|
|
|
|
|
|