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
#include <stdlib.h> //incluye srand() y rand()
#include <conio.h>
#include <time.h> //incluye time()
#include<cstdlib>//color consola
#include<windows.h>
using namespace std;
void gotoxy(int x, int y){
HANDLE Manipulador;
COORD Coordenadas;
Manipulador = GetStdHandle(STD_OUTPUT_HANDLE);
Coordenadas.X=x;
Coordenadas.Y =y;
SetConsoleCursorPosition(Manipulador, Coordenadas);
}
int main()
{
int filas, columnas, bateria, posicion, inicialf,inicialc, i, j;
int matriz[100][100];
cout<<"Digite el tamaño de su mundo:";
cout<<"Largo:";
cin>>filas;
cout<<"Ancho:";
cin>>columnas;
cout<<"En que posicion desea iniciar a lo largo:";
cin>>inicialf;
cout<<"En que posicion desea iniciar a lo ancho:";
cin>>inicialc;
for (int i=1 ; i<=filas; i++)
{
for (int j=1 ; j<=columnas; j++)
{
if (i==inicialf && j==inicialc)
{
matriz[inicialf][inicialc]=1;
}
matriz[i][j]=0;
}
}
for (int i=1 ;i>=filas;i++)
{
for (int j=1 ;j>=filas;j++)
{
cout<<"\t", matriz[i][j];
}
}
}
es urgente porfa alguien que me responda...he estado intentando toda la novhe y nada :-[ :(
Falta
#include <iostream>
También te faltó una llave al final
Un saludo
¿Por qué incluyes la librería conio.h si has definido gotoxy con la API de Windows?
Cita de: shaelb en 27 Mayo 2015, 12:05 PMhice 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:
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):
matriz[inicialf][inicialc] = 1;
* La asignación en el mentado bucle esta mal:
for (int i=1 ; i<=filas; i++){
for (int j=1 ; j<=columnas; j++){
if (i==inicialf && j==inicialc){
matriz[inicialf][inicialc]=1; /* 1 */
}
matriz[i][j]=0; /* 2 */
}
}
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:
for (int i=1 ; i<=filas; i++){
for (int j=1 ; j<=columnas; j++){
if (i==inicialf && j==inicialc){
matriz[inicialf][inicialc]=1;
}else {
matriz[i][j]=0;
}
}
}
* 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:
cout<<"\t", matriz[i][j];
Cuando debería ser:
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í:
for (int i = 0; i != filas; ++i){
for (int j = 0; j != columnas; ++j)
cout << "\t" << matriz[i][j];
cout << std::endl; // Falta incluir <iostream>
}
Un saludo