Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: shaelb en 27 Mayo 2015, 12:05 pm



Título: ayudaa..no se ejecuta(urgente)
Publicado por: shaelb en 27 Mayo 2015, 12:05 pm
hola...hice este codigo para que muestre el numero 1 en la posicion que desse el usuario...pero no imprime nada solo lee....cual podria ser el error :(....lo que quiero hacer cun el 1 es que pueda ir moviendose por la matriz ...que hago

Código
  1. #include <stdlib.h> //incluye srand() y rand()
  2. #include <conio.h>
  3. #include <time.h> //incluye time()
  4. #include<cstdlib>//color consola
  5. #include<windows.h>
  6. using namespace std;
  7. void gotoxy(int x, int y){
  8.  
  9.             HANDLE Manipulador;
  10.             COORD Coordenadas;
  11.               Manipulador = GetStdHandle(STD_OUTPUT_HANDLE);
  12.             Coordenadas.X=x;
  13.             Coordenadas.Y =y;
  14.               SetConsoleCursorPosition(Manipulador, Coordenadas);
  15.       }
  16.  
  17. int main()
  18. {
  19. int filas, columnas, bateria, posicion, inicialf,inicialc, i, j;
  20. int matriz[100][100];
  21.  
  22.  
  23. cout<<"Digite el tamaño de su mundo:";
  24. cout<<"Largo:";
  25. cin>>filas;
  26. cout<<"Ancho:";
  27. cin>>columnas;
  28. cout<<"En que posicion desea iniciar a lo largo:";
  29. cin>>inicialf;
  30. cout<<"En que posicion desea iniciar a lo ancho:";
  31. cin>>inicialc;
  32.  
  33.  
  34.  
  35. for (int i=1 ; i<=filas; i++)
  36. {
  37. for (int j=1 ; j<=columnas; j++)
  38. {
  39. if (i==inicialf && j==inicialc)
  40. {
  41. matriz[inicialf][inicialc]=1;
  42. }
  43.  
  44. matriz[i][j]=0;
  45. }
  46. }
  47. for (int i=1 ;i>=filas;i++)
  48. {
  49. for (int j=1 ;j>=filas;j++)
  50. {
  51. cout<<"\t", matriz[i][j];
  52. }
  53. }
  54.  
  55.  
   
   
   
   
   
   
}


Título: Re: ayudaa..no se ejecuta(urgente)
Publicado por: shaelb en 27 Mayo 2015, 13:01 pm
es urgente porfa alguien que me responda...he estado intentando toda la novhe y nada  :-[ :(


Título: Re: ayudaa..no se ejecuta(urgente)
Publicado por: 0xFer en 27 Mayo 2015, 19:30 pm
Falta

Código
  1. #include <iostream>

También te faltó una llave al final

Un saludo


Título: Re: ayudaa..no se ejecuta(urgente)
Publicado por: Seyro97 en 28 Mayo 2015, 01:11 am
¿Por qué incluyes la librería conio.h si has definido gotoxy con la API de Windows?


Título: Re: ayudaa..no se ejecuta(urgente)
Publicado por: rir3760 en 2 Junio 2015, 15:37 pm
hice este codigo para que muestre el numero 1 en la posicion que desse el usuario...pero no imprime nada
Cambios adicionales que debes hacer al programa:

* Puedes inicializar todos los elementos del array a cero con:
Código
  1. int matriz[100][100] = {0};
A continuación para colocar el elemento indicado por el usuario a uno basta con la asignación (en lugar del primer par de bucles anidados):
Código
  1. matriz[inicialf][inicialc] = 1;

* La asignación en el mentado bucle esta mal:
Código
  1. for (int i=1 ; i<=filas; i++){
  2.   for (int j=1 ; j<=columnas; j++){
  3.      if (i==inicialf && j==inicialc){
  4.         matriz[inicialf][inicialc]=1; /* 1 */
  5.      }
  6.  
  7.      matriz[i][j]=0; /* 2 */
  8.   }
  9. }
Ya que solo en una iteración se cumplirá la condición del bucle y por ello se asignara el valor uno pero no importa ya que a continuación se asigna el valor cero. En su lugar hay que utilizar una sentencia condicional if ... else, de esta forma:
Código
  1. for (int i=1 ; i<=filas; i++){
  2.   for (int j=1 ; j<=columnas; j++){
  3.      if (i==inicialf && j==inicialc){
  4.         matriz[inicialf][inicialc]=1;
  5.      }else {
  6.         matriz[i][j]=0;
  7.      }
  8.   }
  9. }

* En el ultimo par de bucles anidados utilizas el operador ">=" cuando debería ser "<=" y en la condición del bucle interno comparas contra "filas" cuando debería ser "columnas".

* En ese mismo bucle utilizas para la salida:
Código
  1. cout<<"\t", matriz[i][j];
Cuando debería ser:
Código
  1. cout << "\t" << matriz[i][j];

* En C y C++ los indices no inician en uno, inician en cero, hay que cambiar todos los bucles. Por ejemplo el ultimo par termina así:
Código
  1. for (int i = 0; i != filas; ++i){
  2.   for (int j = 0; j != columnas; ++j)
  3.      cout << "\t" << matriz[i][j];
  4.  
  5.   cout << std::endl; // Falta incluir <iostream>
  6. }

Un saludo