Ir al contenido



Foto

Ayuda con salida por consola en C++

C++ Visual HTML png

  • Por favor identifícate para responder
2 respuestas en este tema

#1 Ronny

Ronny

    Newbie

  • Miembros
  • Pip
  • 3 mensajes

Escrito 03 diciembre 2016 - 09:21

Amigos estoy haciendo un programa donde pide al usuario un numero de equipos y este imprime un rol de equipos de todos contra todos pero ne me imprime dicho resultado necesito ayuda urgente 

 

Llevo esto


cpp
  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<string>
  4.  
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10.  
  11. string equipo[30];
  12. int n;
  13.  
  14. cout << "--------------> SOCCER APP <----------------" << endl;
  15. cout << endl;
  16. cout << "** Si el numero de equipos a agregar es impar anadir un (equipo fantasma) **" << endl;
  17. cout << "** Este mostrara el equipo que descansara una de las jornadas **" << endl;
  18. cout << endl;
  19. cout << "Ingrese un numero par de equipos: " << endl;
  20. cin >> n;
  21.  
  22. if (n % 2 == 0)
  23. {
  24.  
  25. for (int x = 0; x < n; x++)
  26. {
  27. cin.ignore(256, '\n');
  28. cout << "Ingrese el nombre del equipo" << " " << x + 1 << ":" << endl;
  29. getline(cin, equipo[x]);
  30.  
  31. }
  32. for (int x = n*2; x > n; x++)
  33.  
  34.  
  35. {
  36. for (int j = x+1 ; j > n; j++)
  37. {
  38. cout << equipo[x] << " vs " << equipo[j] << endl;
  39. }
  40.  
  41. cout << "\n";
  42. }
  43. }
  44. else
  45. {
  46. cout << "El numero de equipos seleccionados es impar NO se puede contiinuar :(" << endl;
  47. }
  48.  
  49.  
  50. system("pause");
  51. }

ES c++

  • 0

#2 Delphius

Delphius

    Advanced Member

  • Administrador
  • 5.940 mensajes
  • LocationArgentina

Escrito 03 diciembre 2016 - 11:25

Hola Ronny,

Bienvenido a DelphiAccess,

He movido el hilo que iniciaste al foro dedicado a C++. El foro Noticias no es el lugar más adecuado para iniciar un tema sobre dudas ;)

También he editado el mensaje para darle formato al código.

 

Respecto a pedir ayuda urgente, me temo que eso no deja una buena imagen en ti. Aquí no hay hilos con prioridades, se ayuda en la medida en que los compañeros tienen tiempo libre. Espero que sepas entenderlo. Además es parte de nuestras guías y sanas sugerencias. También no estaría mal que te vayas familiarizando con las normas.

 

Respecto a tu problema al desconocer C++ no sabría sugerirte, pero si hay otros compañeros que lo dominan. Mientras tanto puedes comentarnos que errores te aparecen, en que línea, cual es tu duda concretamente. Cuanto más nos puedas comentar, más fácil será asesorarte.

 

Saludos,


  • 0

#3 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.689 mensajes
  • LocationMadrid - España

Escrito 04 diciembre 2016 - 06:22

Hola de nuevo, Ronny
 
En primer lugar no repitas los temas, con ello no conseguirás más ayuda y quizás si rechazo. Elige bien en que subforo colocar tu pregunta, en este caso está bien claro que debe ser en Otros Lenguajes (C, C++, Java, ASM).
 
En segundo lugar debes poner un título descriptivo a tu problema, ten en cuenta que pretendes que a alguien le llame la atención lea tu hilo, para eso debe estar también bien ubicado. Luego debes explicar bien el escenario de tu problema para conseguir el interés en dar una respuesta. En este caso deberías explicar el problema de los equipos, como se introducen, que hacer con ellos, como has intentado solucionarlo, tu duda concreta, errores encontrados...
 
Viendo tu código creo haber entendido tu problema, pero obligas a interpretar lo que preguntas y si el código tiene errores, como los tiene, puede ser que no se entienda tu pregunta y nadie responda.
 
En este foro encontrarás ayuda pero debes ayudar a que así sea con una buena formulación de la misma. Es importante que leas lo que te propone Delphius
 

Respecto a pedir ayuda urgente, me temo que eso no deja una buena imagen en ti. Aquí no hay hilos con prioridades, se ayuda en la medida en que los compañeros tienen tiempo libre. Espero que sepas entenderlo. Además es parte de nuestras guías y sanas sugerencias. También no estaría mal que te vayas familiarizando con las normas.

 
Tras estos consejos paso a explicarte lo que veo en tu código. 

Tratándose de una tarea de algún profesor, seguramente os ha impuesto una forma de hacerlo determinada. Cómo para conseguir la entrada y salida, a y desde la consola, existen muchas formas en C/C++ pero viendo tu código voy a responderte según lo tienes para que funcione, como creo que te han impuesto, usando string y cin.
 
Tienes varios errores uno serio es considerar que cin admite strigs y no es así, sólo admite caracteres. De esta forma que debes convertir el nombre del equipo a char[] con la función miembro c_str(). En segundo lugar tienes mal diseñados los índices de comienzo y final de los bucles:


cpp
  1. for (int x = n*2; x > n; x++){
  2. for (int j = x+1 ; j > n; j++){
  3. cout << equipo[x] << " vs " << equipo[j] << endl;
  4. }
  5. //.......

Si comienzas por x = n*2 ya estás fuera, porque el límite del bucle debe ser ¡menor que n, que es el número de equipos!. Además el límite superior es erróneo, es un bucle creciente por lo que no puede ser mayor que n. Ambos bucles anidados son incorrectos con lo que tendrás un bucle infinito en tiempo de ejecución. El bucle for se lee así: "para x igual a valor, mientras que valor sea menor que n, hago... e incremento x". Piensa bien este punto pues es la base del algoritmo donde no puedes fallar.
 
La línea con ignore está mal posicionada con lo que te pide dos "Enter" entre cada equipo nuevo.
 
El código corregido sería algo como esto:


cpp
  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<string>
  4.  
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10.   string equipo[30];
  11.   int n;
  12.  
  13.   cout << "--------------> SOCCER APP <----------------" << endl;
  14.   cout << endl;
  15.   cout << "** Si el numero de equipos a agregar es impar anadir un (equipo fantasma) **" << endl;
  16.   cout << "** Este mostrara el equipo que descansara una de las jornadas **" << endl;
  17.   cout << endl;
  18.   cout << "Ingrese un numero par de equipos: " << endl;
  19.   cin >> n;
  20.  
  21.   if (n % 2 == 0){
  22.     cin.ignore(256, '\n');
  23.     for (int x = 0; x < n; x++){
  24.       cout << "Ingrese el nombre del equipo" << " " << x + 1 << ":" << endl;
  25.       getline(cin, equipo[x]);
  26.     }
  27.     for (int x = 0; x < n; x++){
  28.       for (int j = x+1 ; j < n; j++)
  29.         cout << equipo[x].c_str() << " vs " << equipo[j] << endl;
  30.       cout << "\n";
  31.     }
  32.   }
  33.   else
  34.     cout << "El numero de equipos seleccionados es impar NO se puede continuar :(" << endl;
  35.  
  36. system("pause");
  37. }

Un último consejo, indenta tu código para que sea más fácil de leer.
 

Saludos.


  • 1





Etiquetado también con una o más de estas palabras: C++, Visual, HTML, png