Ayuda con Matriz que muestre 0 y 1 en Dev C++

Iniciado por wolfxalex, 4 Marzo 2012, 23:58 PM

0 Miembros y 1 Visitante están viendo este tema.

wolfxalex

Que tal amigos he estado tratando de lograr que una matriz en c++ de N tamaño "dado por el usuario", imprima en todas sus casiilas el valor 0 y en su diagonal principal y secundaria, el valor 1. Es decir que básicamente dibuje una equiz con 0 y 1

ejemplo

100000001
010000010
001000100
000101000
000010000
000101000
001000100
010000010
100000000

el problema es que el codigo que e logrado solo muestra la mitad del lado izquierdo es decir

10000
01000
00100
00010
00001
00010
00100
01000
10000

si pueden indicarme que me falta o que debo hacer se los agradeceria

el codigo es#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#define a 1

void main()
{

int m[a][a],r;
int i=0;
int j=0;
int x;

clrscr();

cout<<"Introduzca tamaño: ";
cin>>r;

for(i=0; i<=r;i++){
for(j=0;j<=r;j++){
m[i][j]=0;

if(i==j){
m[i][j]=1;
}
printf("%d ",m[i][j]);
}
printf("\n");
}

for(i=0; i<=r;i++){
for(j=0;j<=r;j++){
m[i][j]=0;

if(j==r-i){
m[i][j]=1;
}
printf("%d ",m[i][j]);
}
printf("\n");
}


fflush(stdin);
getchar();
}


gracias de antemano!!

rir3760

Ese programa tiene varias deficiencias como el nombre de los encabezados y la definición de la función principal. Por favor lee el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

En C++ no puedes declarar un array indicando su numero de elementos mediante una variable, debe ser una constante. Y no necesitas de un array ya que una vez impreso el carácter no hay mas nada que hacer con el.

En uno de los temas del día cortesía de Xandrete se explica como reconocer la diagonal secundaria: Guardar la segunda diagonal de una matriz

Revisalo, seguro te da una idea de los cambios a realizar en tu programa.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

soyloqbuskas

¡Buenas wolfxalex!

Como bien te ha dicho rir3760, el main esta mal declarado y las matrices debes declararlas de un tamaño constante, por tanto, para hacer lo que dices yo haria lo siguiente:

1) me declararia una matriz con un tamaño grande, superior al que el usuario necesita, por ejemplo 50x50
2) pediria al usuario el "tamaño de la matriz" el cual no puede ser superior a 50, si intruduce un numero superior a 50, le pido que vuelva a introducir un valor valido.
3) recorreria la matriz hasta el valor introducido por el usuario llenandola de 0, y si estoy en la posicion i=j o en la posicion i+j=n (siendo n el valor introducido por el usuario), entonces lo pongo a 1, y voy impimiendo el resultado.

Espero haberte servido de ayuda, un saludo.
"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw