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

VisualC++ MATRIZ Problema

Estas en el tema de VisualC++ MATRIZ Problema en el foro de C/C++ en Foros del Web. bueno antes que todo Indicar que soy nuevo en el foro y pos me llamo la atencion sobre el apoyo que dan en c++, como ...
  #1 (permalink)  
Antiguo 27/05/2006, 20:45
Avatar de Cristus  
Fecha de Ingreso: mayo-2006
Mensajes: 42
Antigüedad: 18 años, 7 meses
Puntos: 0
VisualC++ MATRIZ Problema

bueno antes que todo Indicar que soy nuevo en el foro y pos me llamo la atencion sobre el apoyo que dan en c++, como veran soy un novato que recien aprende a programar en c++ y andaba teniendo problemas con un problema... como el titulo lo dice Matriz Problema

bueno como recien entro a este tema ya tengo problemas... pues me lio a veces ^^ pero siempre ando probando y probando... y como aqui se dice... " quemando neuronas "

bueno 1ero planteo mi problema que es... ( aunque a muchos le paresca muy simple )

Ingresar numeros a una matriz 4x4
condiciones
-no se debe de repetir el numero... caso contrario mostrar mensaje de existe.. pero dentro de la matriz.
-mostrar el numero mayor y menor dentro de la matriz
-por ultimo mostrar el total de la suma de los numeros ingresados en la matriz.

bueno yo hice el problema... pero solo mostraba el existe el mayor y el menor de una matriz pero no dentro de la matriz ejm:
1<-- existe
650<- mayor
1<-menor
pero la idea no es mostrarlo de esta manera sino dentro de la matriz
ejm

1<-menor 2 3 4
5 6 7 11
8 15 30<-mayor 12
13 14 16 17

y pos no me va... aqui tengo mi avance y mientras sigo modificando me sale un error nuevo y me da una idea nueva... pero lo que no me da en la cabezita.. es que si hay una forma de ordenar bien la matriz... para que no se vea tan disparatada...

en todo caso aqui dejo mi ultimo avanze y espero un apoyo

sea el caso... quisas no tengo muchas erramientas que usar... es pk no eh visto mucho para agregar... de todas maneras si alguien me dice mi error y me da algunas cositas mejores,,, para poder ampliar mi conocimiento se los agradecere

Avanze: por favor compilenlo.

#include<iostream.h>
#include<stdlib.h>
void inicializar(void);
void ingresar(int n);
void mostrar (void);
int numeros[4][4];
int filas=0;
int columnas=0;
void suma(void);
int k=0,s=0,y=0,x=0;
void mayor(void);
main ()
{
int num;
inicializar();
char r='s';
do{
system("cls");
cout<<"Ingrese Numero --->> ";cin>>num;
if (columnas<4)
{
ingresar(num);

}
else
{
filas++;
cout<<"Fila nro :"<<filas<<" llena \n";
columnas=0;
}
cout<<"Desea continuar ? "; cin>>r;
}while(r=='s');
cout<<"Numeros Ingresados \n";
cout<<"______________________\n";
mostrar ();
cout<<" \n";
mayor();
cout<<" \n";
suma();
}
void inicializar (void)
{
for(int x=0;x<4;x++)
{
for (int y=0;y<4;y++)
{
numeros[x][y]=0;
}
}
}
void ingresar (int n)
{
if(filas<4)
{
int existe1,existe2,foco=0;
for(x=0;x<4;x++)
{
for(y=0;y<4;y++)
{
if(numeros[x][y]==n)
{
foco=1;
existe1=x;
existe2=y;
}
}
}
if(foco==0)
{
numeros[filas][columnas]=n;
mostrar();
columnas++;
}
else
{
for(x=0;x<4;x++)
{
for(y=0;y<4;y++)
{
if((existe1==x))
{
if(existe2==y)
{
cout<<"-->"<<numeros[x][y]<<"<<-- Existe";
}
}
else
{
cout<<numeros[x][y]<<" ";
}
}
cout<<"\n";
}
}
}
else
{
cout<<"Matriz llena \n";
}
}
void mostrar (void)
{
for (int a=0;a<4;a++)
{
for(int b=0;b<4;b++)
{
cout<<numeros[a][b]<<" ";
}
cout<<"\n";
}
}
void suma(void)
{
for(int h=0;h<4;h++)
{
for(int d=0;d<4;d++)
{
k=numeros[h][d];
s=s+k;
}
}
cout<<"La suma de la Matriz llena es: "<<s<<" \n";
}
void mayor(void)
{
int mayor=0,posma1=numeros[0][0],posma2=numeros[0][0];
for(int m=0;m<4;m++)
{
for(int n=0;n<4;n++)
{
if(numeros[m][n]>=mayor)
{
mayor=numeros[m][n];
posma1=m;
posma2=n;
}
}
}
int menor=0,posme1=numeros[0][0],posme2=numeros[0][0];
for(int p=0;p<4;p++)
{
for(int o=0;o<4;o++)
{
if(numeros[p][o]<=menor)
{
menor=numeros[p][o];
posme1=p;
posme2=o;
}
}
}
for(int i=0;i<4;i++)
{
for(int u=0;u<4;u++)
{
if(i==posma1)
{
if(u==posma2)
{
cout<<"Numero -->"<<numeros[i][u]<<"<-- Mayor";
}
else
{
cout<<numeros[i][u]<<" ";
}
}
else
{
if((i==posme1)&&(u==posme2))
{
cout<<"Numero -->"<<numeros[i][u]<<"<--Menor";
}
else
{
cout<<numeros[i][u]<<" ";
}
}
}
cout<<"\n";
}
}

/*PD: vi por el foro que criticaban a una persona por pedir ayuda sobre como resolver un problema... y por que no habia posteado mas... en mi caso soy nuevo y quisas no tenga el mismo derecho que los mas antiguos... pero aportare en otras zonas... ya que aqui soy nuevo para este lenguaje.
gracias */
  #2 (permalink)  
Antiguo 29/05/2006, 14:06
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 8 meses
Puntos: 2
SI ya puedes encontral el mayor u el menor solo tienes que hacer la busqueda al imprimir.
e indicarlo en el momento que se imprma este, despues seguir imprimiendo.

Saludos.
  #3 (permalink)  
Antiguo 29/05/2006, 22:04
Avatar de Cristus  
Fecha de Ingreso: mayo-2006
Mensajes: 42
Antigüedad: 18 años, 7 meses
Puntos: 0
si a eso me refiero a mi me va bien... mira tengo un ultimo avance pero aun tengo algunos fallos y no me doi cuenta en donde me equivoco :/ quisas algo mas ilustrativo

salu!
  #4 (permalink)  
Antiguo 30/05/2006, 00:45
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 8 meses
Puntos: 2
no es necesario usar las coordenadas o indices de valor, en su lugar mejor usa el valor.

int mayor = numeros[0][0];

for(int i = 0; i < 4;i++)
for(int j = 0; j < 4;j++)
if(mayor < numeros[i][j])mayor = numeros[i][j];


el menor seria similar.

y el existe seria:
bool existe = false;
for(int i = 0; i < 4 && !existe;i++)
for(int j = 0; j < 4 && !existe;j++)
if(valor == numeros[i][j])existe =true;

con esto ya tienes:
mayor
menor
valor(existe).

if(mayor == numeros[i][j])cout << numeros[i][j]<< "<_-Mayor";
else cout << numeros[i][j];

lo mismo seria para los demas.

Intentalo y me cuentas.

Saludos.
  #5 (permalink)  
Antiguo 30/05/2006, 02:20
Avatar de Cristus  
Fecha de Ingreso: mayo-2006
Mensajes: 42
Antigüedad: 18 años, 7 meses
Puntos: 0
ahora mismo me pongo a resolverlo amigo

muchas gracias eh tenido un avance increible... solucione lo de el mayor para mostrar en la matriz y intentaba hacer los cambios en el menor y bueno ahora modificarlo tambien para el existe con este apoyo voy a probar y te dire que tal me va

muchas gracias...

realmente estoi muy agradecido ;)

me gusta cuando me apoyan y apoyo ^^, te lo agradesco enormemente :)
  #6 (permalink)  
Antiguo 30/05/2006, 02:35
Avatar de Cristus  
Fecha de Ingreso: mayo-2006
Mensajes: 42
Antigüedad: 18 años, 7 meses
Puntos: 0
bueno estuve viendo lo que me pusiste... pero mira mi problema no es ayar el mayor y el menor... sino es mostrar dentro de la matriz para esto pongo aqui la parte modificada del programa de como hice el mayor

//-------- Mayor y Menor --------
void mayor(void)
{
int mayor=0,posma1=numeros[0][0],posma2=numeros[0][0];
for(int m=0;m<4;m++)
{
for(int n=0;n<4;n++)
{
if(numeros[m][n]>=mayor)
{
mayor=numeros[m][n];
posma1=m;
posma2=n;
}
}
}
int menor=0,posme1=numeros[0][0],posme2=numeros[0][0];
for(int p=0;p<4;p++)
{
for(int o=0;o<4;o++)
{
if(numeros[p][o]<=menor)
{
menor=numeros[p][o];
posme1=p;
posme2=o;
}
}
}
for(int i=0;i<4;i++)
{
for(int u=0;u<4;u++)
{
if(i==posma1)
{
if(u==posma2)
{
cout<<"Numero->"<<numeros[i][u]<<"<-Mayor";
}
else
{
cout<<numeros[i][u]<<" ";
}
}
else
{
if(i==posme1)
{
if(u==posme2)
{
cout<<"Numero->"<<numeros[i][u]<<"<-Menor";
}
else
{
cout<<numeros[i][u]<<" ";
}
}
}
}
cout<<"\n";
}
}

mira yo le acabo de cambiar el menor pero me va fatal... el mismo error que ahora me va con el existe a la hora de mostrar en la matriz...

pero si modifico de nuevo lo que es de el menor por la forma de arriba le mayor de muestra bien en lamatriz

salu! ;)
  #7 (permalink)  
Antiguo 30/05/2006, 02:40
Avatar de Cristus  
Fecha de Ingreso: mayo-2006
Mensajes: 42
Antigüedad: 18 años, 7 meses
Puntos: 0
bueno ya tengo bien lo que es existe en mi funcion... como veras pude resolverlo.. ahora la cosa es con el menor... se que en mi parte posteada esta mal... por que hago una contradiccion... en todo caso a la hora que pasa relleno 2 veces... creo que deberia hacerlo en 2 partes... pero aun asi haciendolo por funciones separadas... no sabria como incorporarlas

pero voy a seguir intentando ;)


//------------ Ingresar -----------
void ingresar (int n)
{
if(filas<4)
{
int existe1,existe2,foco=0;
for(x=0;x<4;x++)
{
for(y=0;y<4;y++)
{
if(numeros[x][y]==n)
{
foco=1;
existe1=x;
existe2=y;
}
}
}
if(foco==0)
{
numeros[filas][columnas]=n;
mostrar();
columnas++;
}
else
{
for(x=0;x<4;x++)
{
for(y=0;y<4;y++)
{
if((existe1==x))
{
if(existe2==y)
{
cout<<"->"<<numeros[x][y]<<"<-Existe ";
}
else
{
cout<<numeros[x][y]<<" ";
}
}

}
cout<<"\n";
}
}
}
else
{
cout<<"Matriz llena \n";
}
}
  #8 (permalink)  
Antiguo 30/05/2006, 02:55
Avatar de Cristus  
Fecha de Ingreso: mayo-2006
Mensajes: 42
Antigüedad: 18 años, 7 meses
Puntos: 0
ahora que lo compilo al full me doi cuenta... que solo me muestra la columna de la que existe el numero y no toda T_T
  #9 (permalink)  
Antiguo 30/05/2006, 02:58
Avatar de Cristus  
Fecha de Ingreso: mayo-2006
Mensajes: 42
Antigüedad: 18 años, 7 meses
Puntos: 0
bueno ahora sin duda alguna termine de resolver el problema de mostrar en el existe :P

//------------ Ingresar -----------
void ingresar (int n)
{
if(filas<4)
{
int existe1,existe2,foco=0;
for(x=0;x<4;x++)
{
for(y=0;y<4;y++)
{
if(numeros[x][y]==n)
{
foco=1;
existe1=x;
existe2=y;
}
}
}
if(foco==0)
{
numeros[filas][columnas]=n;
mostrar();
columnas++;
}
else
{
for(x=0;x<4;x++)
{
for(y=0;y<4;y++)
{
if((existe1==x))
{
if(existe2==y)
{
cout<<"->"<<numeros[x][y]<<"<-Existe ";
}
else
{
cout<<numeros[x][y]<<" ";
}
}
else
{
cout<<numeros[x][y]<<" ";
}

}
cout<<"\n";
}
}
}
else
{
cout<<"Matriz llena \n";
}
}

;)
  #10 (permalink)  
Antiguo 30/05/2006, 03:01
Avatar de Cristus  
Fecha de Ingreso: mayo-2006
Mensajes: 42
Antigüedad: 18 años, 7 meses
Puntos: 0
problema resuelto en un 99% jajaja dios cuando lleno la matriz no me muestra el menor es lo unico pero cuando no la lleno si me muestra el 0 jajaja no se... creo que hay tengo un error a ver aqui esta el programa
  #11 (permalink)  
Antiguo 30/05/2006, 03:04
Avatar de Cristus  
Fecha de Ingreso: mayo-2006
Mensajes: 42
Antigüedad: 18 años, 7 meses
Puntos: 0
#include<iostream.h>
#include<stdlib.h>
void inicializar(void);
void ingresar(int n);
void mostrar (void);
int numeros[4][4];
int filas=0;
int columnas=0;
void suma(void);
int k=0,s=0,y=0,x=0;
void mayor(void);
main ()
{
int num;
inicializar();
char r='s';
do{
system("cls");
cout<<"Ingrese Numero --->> ";cin>>num;
if (columnas<4)
{
ingresar(num);

}
else
{
filas++;
cout<<"Fila nro :"<<filas<<" llena \n";
columnas=0;
}
cout<<"Desea continuar ? "; cin>>r;
}while(r=='s');
cout<<"Numeros Ingresados \n";
cout<<"______________________\n";
mostrar ();
cout<<" \n";
mayor();
cout<<" \n";
suma();
}
void inicializar (void)
{
for(int x=0;x<4;x++)
{
for (int y=0;y<4;y++)
{
numeros[x][y]=0;
}
}
}
//------------ Ingresar -----------
void ingresar (int n)
{
if(filas<4)
{
int existe1,existe2,foco=0;
for(x=0;x<4;x++)
{
for(y=0;y<4;y++)
{
if(numeros[x][y]==n)
{
foco=1;
existe1=x;
existe2=y;
}
}
}
if(foco==0)
{
numeros[filas][columnas]=n;
mostrar();
columnas++;
}
else
{
for(x=0;x<4;x++)
{
for(y=0;y<4;y++)
{
if((existe1==x))
{
if(existe2==y)
{
cout<<"->"<<numeros[x][y]<<"<-Existe ";
}
else
{
cout<<numeros[x][y]<<" ";
}
}
else
{
cout<<numeros[x][y]<<" ";
}

}
cout<<"\n";
}
}
}
else
{
cout<<"Matriz llena \n";
}
}
//-------------- Mostrar ----------
void mostrar (void)
{
for (int a=0;a<4;a++)
{
for(int b=0;b<4;b++)
{
cout<<numeros[a][b]<<" ";
}
cout<<"\n";
}
}
//-------------- Suma Matriz ---------
void suma(void)
{
for(int h=0;h<4;h++)
{
for(int d=0;d<4;d++)
{
k=numeros[h][d];
s=s+k;
}
}
cout<<"La suma de la Matriz llena es: "<<s<<" \n";
}
//--------------- Mayor y Menor ----------
void mayor(void)
{
int mayor=0,posma1=numeros[0][0],posma2=numeros[0][0];
for(int m=0;m<4;m++)
{
for(int n=0;n<4;n++)
{
if(numeros[m][n]>=mayor)
{
mayor=numeros[m][n];
posma1=m;
posma2=n;
}
}
}
int menor=1000,posme1=numeros[0][0],posme2=numeros[0][0];
for(int p=0;p<4;p++)
{
for(int o=0;o<4;o++)
{
if(numeros[p][o]<=menor)
{
menor=numeros[p][o];
posme1=p;
posme2=o;
}
}
}
for(int i=0;i<4;i++)
{
for(int u=0;u<4;u++)
{
if(i==posma1)
{
if(u==posma2)
{
cout<<"Numero->"<<numeros[i][u]<<"<-Mayor";
}
else
{
cout<<numeros[i][u]<<" ";
}
}
else
{
if(i==posme1)
{
if(u==posme2)
{
cout<<"Numero->"<<numeros[i][u]<<"<-Menor ";
}
else
{
cout<<numeros[i][u]<<" ";
}
}
else
{
cout<<numeros[i][u]<<" ";
}
}

}
cout<<"\n";
}
}
  #12 (permalink)  
Antiguo 30/05/2006, 03:06
Avatar de Cristus  
Fecha de Ingreso: mayo-2006
Mensajes: 42
Antigüedad: 18 años, 7 meses
Puntos: 0
EL PROBLEMA ESTA RESUELTO!!!!!!!!!!!!
oh si ^^ no me salia por que menor inicialize en 0... y como no hay numero menor a 0 pues entonces no se mostraba pues por la razon xD

Nivel 7 Gracias por tu apoyo y animo ;) y la idea :P

salu!
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:00.