Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con cout

Estas en el tema de Problema con cout en el foro de C/C++ en Foros del Web. Hola!! Cuando corro el siguiente codigo, las preguntas que se hacen al usuario se repiten dos veces no entiendo donde está el problema, cualquier ayuda ...
  #1 (permalink)  
Antiguo 21/10/2014, 11:01
 
Fecha de Ingreso: octubre-2014
Mensajes: 4
Antigüedad: 9 años, 6 meses
Puntos: 0
Problema con cout

Hola!! Cuando corro el siguiente codigo, las preguntas que se hacen al usuario se repiten dos veces no entiendo donde está el problema, cualquier ayuda se las agradecria mucho.
Cita:
#include<GL/glut.h>
#include <iostream>
using namespace std;

void display(){
glClearColor(0.0, 0.5, 0.5, 0.0); //Cor no fondo da janela
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 0.0, 0.0);//Cor atual

float aux;
int m, n, i, j, z, k;
float z1, z2;

{cout << "Digite la coordenada constante de la reta horizontal P"<<endl;
cin>> z1;}
{cout << "Digite la coordenada constante de la reta horizontal Q"<<endl;
cin>> z2;}

const float y1=z1;
const float y2=z2;

float *p;
float *q;

cout << "Digite el número de puntos en la reta horizontal P"<<endl;
cin>> m;
cout << "Digite el número de puntos en la reta horizontal Q"<<endl;
cin>> n;

p=new float [m];
q=new float [n];

cout << "Digite las " << m << " absisas de los puntos en la recta P"<<endl;
for (int i=0; i<m; i++) {
cin>>p[i];}

cout << "Digite las " << n << " absisas de los puntos en la recta Q"<<endl;
for (int i=0; i<n; i++) {
cin>>q[i];}

for (int j=0; j<m; j++) {
for (int i=0; i<m-1-j; i++) {
if (p[i]>p[i+1]) {
aux=p[i];
p[i]=p[i+1];
p[i+1]=aux;
}}}

for (j=0; j<n; j++) {
for (i=0; i<n-1-j; i++) {
if (q[i]>q[i+1]) {
aux=q[i];
q[i]=q[i+1];
q[i+1]=aux;
}}}

for (int k=0; k<n-1; k+=1){
float v[3]={p[0],q[k],q[k+1]};
glBegin(GL_LINE_STRIP);
glVertex2f(p[0], y1);
glVertex2f(v[1], y2);
glVertex2f(v[2], y2);

glEnd();}

for (int k=0; k<m-1; k+=1){
float w[3]={q[3],p[k],p[k+1]};
glBegin(GL_LINE_STRIP);
glVertex2f(q[3], y2);
glVertex2f(w[1], y1);
glVertex2f(w[2], y1);

glEnd();}

glBegin(GL_LINES);
glVertex2f(p[m-1], y1);
glVertex2f(q[n-1], y2);

glEnd();
glFlush();
glutSwapBuffers();
}

int main (int argc, char ** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA);
glutInitWindowSize(1000, 1000);
glutInitWindowPosition(0, 0);
glutCreateWindow("Ponto");
gluOrtho2D(-5,5,-5,5);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
  #2 (permalink)  
Antiguo 21/10/2014, 11:11
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Problema con cout

Salen dos veces porque las has puesto dos veces

Código C++:
Ver original
  1. {cout << "Digite la coordenada constante de la reta horizontal P"<<endl;
  2. cin>> z1;}
  3. {cout << "Digite la coordenada constante de la reta horizontal Q"<<endl;
  4. cin>> z2;}
  5.  
  6. // ...
  7.  
  8. cout << "Digite el número de puntos en la reta horizontal P"<<endl;
  9. cin>> m;
  10. cout << "Digite el número de puntos en la reta horizontal Q"<<endl;
  11. cin>> n;
  #3 (permalink)  
Antiguo 21/10/2014, 11:12
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Problema con cout

No me deja editar el mensaje anterior... ¿qué preguntas son las que repite dos veces?

Los dos mensajes que te he puesto en el mensaje anterior son muy parecidos... no los estarás confundiendo con el mismo mensaje?
  #4 (permalink)  
Antiguo 21/10/2014, 13:07
 
Fecha de Ingreso: octubre-2014
Mensajes: 4
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Problema con cout

Hola
Realmente se están repitiendo, en lugar de salir 6 preguntas está saliendo 12.
  #5 (permalink)  
Antiguo 21/10/2014, 13:20
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Problema con cout

Ten en cuenta que "glutDisplayFunc()" permite indicar la función que se llamará cada vez que, por la razón que sea, se necesite refrescar la pantalla... y además, "glutMainLoop()" cede el control del programa a la librería opengl, que es quien pasa a decidir cuándo hay que repintar la pantalla... ¿qué pretendes conseguir con este código?
  #6 (permalink)  
Antiguo 21/10/2014, 13:32
 
Fecha de Ingreso: octubre-2014
Mensajes: 4
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Problema con cout

Hola, muchas gracias por tu ayuda.
Mira lo que tengo que hacer es los siguiente:

Tengo dos conjuntos de puntos en el plano P y Q, con m y n elementos respectivamente, donde P y Q están en rectas horizontales distintas. Tengo que implementar una triangulación del conjunto de puntos P U Q.

Entonces lo que hace el algoritmo es

*Pedir al usuario el nùmero de elementos en P y Q (m y n)
*Pide la dos segundas ordenadas de los conjuntos P y Q. (y1 y y2, porque vivien en rectas horizontales)
*Pide las m y n primeras coordenadas de los puntos (p[m] y q[n])
*Ordenar separadamente los conjuntos p[m] y q[n].
*Luego toma el primer elemento de P y los une con cada elemento de Q y forma los triángulos.
*Y por último toma el último elemento de Q y lo une con todos los de P, formando el resto de triángulos también.
Y con eso ya tendria una triangulación.

Muchas gracias
  #7 (permalink)  
Antiguo 21/10/2014, 14:17
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Problema con cout

Y por qué no pides los datos antes de incializar opengl y después realizas la representación de los datos?

No soy ningún experto en opengl, pero meter en el bucle principal de repintado el código que pide datos al usuario no me parece una buena idea.

Etiquetas: char, cout, int
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:21.