[C++] Ejemplo 7: Diagonal de una matriz
Perdon por la demora con esta seccion es que estoy con muchos proyectos personales más las obligaciones de la facultad. Encontre una carpeta con ejemplos que tenia de una materia anterior, estan en C asi que los tengo que ir pasando a C++.
Aca les dejo un ejemplo que sirve para sumar los valores de la diagonal de una matriz.
Posted October 2nd, 2007 by Tinchio under Informatica, Programacion
Tambien te pueden interesar estos articulos:
- [C++] Ejemplo 8: Lista dinamica de objetos
- Mini Tips: PHP
- Buenos Aires 3º sede mundial de Google
- Chip de Texas Instruments convierte al celular en proyector
- [C++] Ejemplo 5: convertir vocales
- [C++] Ejemplo 4: Mayor entre 3
- [C++] Ejemplo 3: Piramide
- [C++] Ejemplo 9: Miembros estáticos de una clase

October 2nd, 2007 at 9:54 pm
Q buena onda q continues con esta seccion, pero oie, el programa no corre =( aun no e llegado a esa parte de matrizes en la universidad, por eso no puedo corregirlo como a los otros =( pero me interesa mucho, espero lo puedas resolver.
October 3rd, 2007 at 1:05 am
@Micky: acabo de volver a probarlo para asegurarme, y si funciona, deberias revisar tu compilador a ver que errores te da, yo lo compilo con el compilador libre g++. Saludos
October 3rd, 2007 at 7:07 pm
=( probablemente ese sea el problema, yo uso el compilador C++ para windows =(
October 3rd, 2007 at 7:15 pm
Pero que sea para windows no tiene nada que ver, yo trato de hacer el codigo lo mas cercano al ANSI posible por lo tanto no importa el SO, es mas los ejemplos los compilo en Linux y en Windows.
Proba otro compilador, como el DevC++ sobre el cual hice un post. Saludos
October 4th, 2007 at 11:10 pm
La función que suma las diagonales es *demasiado* rebuscada. Qué te parece esta:
int suma_diag(int matriz[fi][co],int lim){
int suma = 0, i = 0;
for (i = 0 ; i < lim ; i++){
suma += matriz[i][i];
}
return suma;
}
October 5th, 2007 at 12:32 am
@waldo: es verdad ahi se simplifica un poco el uso de variables y lineas de codigo, es otra buena alternativa para esto. Es una de las cosas buenas de la programacion, que hay muchas soluciones para un mismo problema. De paso si tienen algun ejemplo que quieran publicar avisenme, por ahi no tengo tiempo de buscar o pensar alguno, asi que si tienen lo publicamos.
Saludos
October 5th, 2007 at 6:21 pm
No, Tinchito, lo de waldo es mucho mejor. Lo que hacÃÂas vos era buscar a lo bruto, y si justo coincidÃÂa que era un valor de la diagonal, sumabas. Lo de waldo hace solamente lo que tiene que hacer.
October 5th, 2007 at 6:57 pm
Y si yo no dije que no lo fuera… :-/
October 17th, 2007 at 2:24 pm
que chevere encontrar paginas como estas! en la U en el momento me encuentro viendo un repaso de vectores; si tienen mas ejemplos que me puedan ayudar se los recomiendo mucho, es muy util ver el punto de vista de otras personas, se los agradeseria mas si tienen ejemplos donde se use memoria dinámica, aún tengo problemas con eso…
Tambien si saben alguna forma super buena de ayudarme a hacer clases se los agradeceria tambien…
October 23rd, 2007 at 2:29 am
[...] este ejemplo lo hice a pedido de una lectora. Aca trate de hacer un programa lo más simple que pude, en el que hago uso de una lista dinamica [...]
October 31st, 2007 at 12:30 pm
gracias por tener ejempos, el de lista dinamica de objetos creo que me sera de gran utilidad.
En cuanto tenga tiempo te mandare un ej. para que lo subas.
October 31st, 2007 at 1:41 pm
de nada, si tenes un ejemplo mandalo nomas. Saludos
November 6th, 2007 at 11:10 am
MIL GRACIAS POR EL EJEMPLO; PERO AHORA TENGO UNA PREGUNTICA: SI TEMEMOS DOS CLASES A Y B, Y EN LA CLASE B A UNO DE LAS FUNCIONES NECESITO PASARLE UN PARAMENTRO DE TIPO A, NECESITO ALGUNA ESPECIFICACION EN ESPECIAL;
POR EJEMPLO PUEDO HACER
B::B(A objeto, int radio);
porque es que al momento de compilar me arroja un error…
GRACIAS DE NUEVO
November 6th, 2007 at 2:32 pm
El parametro asi como lo pasas esta bien, solamente que el objeto B para usar los metodos y atributos de l objeto A necesita ser clase “amiga” para esto en la definicion de la clase A
class A
{
private:
atributos…
public:
friend class B;
};
con esto la clase B es amiga de A y podra acceder a todos los metodos y atributos de A.
Saludos
November 6th, 2007 at 4:22 pm
OYE! MIL GRACIAS, TU SIEMPRE ME SALBAS…
TE VOY A CONTRATAR COMO MI PROFESOR PRIVADO.
JAJAJA
MIL GRACIAS
November 6th, 2007 at 4:38 pm
jaja con que instales Firefox y recomiendes el blog si te gusto me conformo ^_^
Saludos
November 14th, 2007 at 2:11 pm
oye de casualidad no tienes notas sobre apuntadores que me puedan servir
sobre el uso de ellos y eso
Mil gracias
November 14th, 2007 at 4:52 pm
En esta web hay muy buena informacion sobre C++ seguramente te sea de utilidad.
February 27th, 2008 at 2:48 pm
hola sera q me pueden ayudar tengo q hacer un programa en c++ de matrizes dinamicas, con opciones 1. cargar matriz a
2. cargar matriz b
3. sumar matriz a+b
4. mostrar matriz a b c
5. salir por fa vor me pueden ayudar
March 29th, 2008 at 11:16 pm
buenas…
necesito una ayuda con un ejercicio.
tengo que implementar un programa con que puede realizar una interseccion, union y diferencia entre 2 vectores y arrogarlo en un vector distinto, al realizar la union los elementos no pueden aparecer 2 veces, es decir ejem:(si en un conjunto A:a,b,c y en el con junto B:b,c,e,f; el vector de la union es C:a,b,c,e,f..)
y en la interseccion debe aparecer en el vector resultante solo los elementos que hay en comun los otros 2.. en la diferencia debe aparecer en el vector resultante los elementos que hay en el primero y no en el segundo(ejm: A:a,b,c B:b,c,e,f; en C=a,e,f)..
no entiendo mucho como hacerlo..
necesito ayuda..
May 8th, 2008 at 10:19 am
hola colega, el programa completo para sumar ls matrices y mostarlas todas es el siguiente, corre perfectamente.
//para sacar la suma toca digitar un numero y enter
#include
#include
void main (){
int **A,**B,**C,i,j;
cout<<”digite los datos de la matriz A:”;
A=new int *[3];
for(i=0; i<3; i++)
A[i]= new int [3];
for (i=0; i<3; i++)
for (j=0; j>A[i][j];
cout<<”datos de la matriz A:”<<endl;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
cout<<A[i][j]<<”";
cout<<endl;
getch();
cout<<”digite los datos de la matriz B:”;
B=new int *[3];
for(i=0; i<3; i++)
B[i]= new int [3];
for (i=0; i<3; i++)
for (j=0; j>B[i][j];
cout<<”datos de la matriz B:”<<endl;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
cout<<B[i][j]<<”";
cout<<endl;
getch();
C=new int *[3];
for(i=0; i<3; i++)
C[i]= new int [3];
for (i=0; i<3; i++)
for (j=0; j>C[i][j];
cout<<”datos de la matriz C=A+B”<<endl;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
cout<<C[i][j]<<”";
cout<<endl;
getch();
cout<<endl;
cout<<”datos de la matriz A:”<<endl;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
cout<<A[i][j]<<”";
cout<<endl;
cout<<endl;
cout<<”datos de la matriz B:”<<endl;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
cout<<B[i][j]<<”";
cout<<endl;
cout<<endl;
cout<<”datos de la matriz C”<<endl;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
cout<<C[i][j]<<”";
cout<<endl;
getch();
}
May 8th, 2008 at 10:24 am
el programa completo para sumar ls matrices y mostarlas todas es el siguiente, corre perfectamente.
//para sacar la suma toca digitar un numero y enter
#include
#include
void main (){
int **A,**B,**C,i,j;
cout<<”digite los datos de la matriz A:”;
A=new int *[3];
for(i=0; i<3; i++)
A[i]= new int [3];
for (i=0; i<3; i++)
for (j=0; j>A[i][j];
cout<<”datos de la matriz A:”<<endl;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
cout<<A[i][j]<<”";
cout<<endl;
getch();
cout<<”digite los datos de la matriz B:”;
B=new int *[3];
for(i=0; i<3; i++)
B[i]= new int [3];
for (i=0; i<3; i++)
for (j=0; j>B[i][j];
cout<<”datos de la matriz B:”<<endl;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
cout<<B[i][j]<<”";
cout<<endl;
getch();
C=new int *[3];
for(i=0; i<3; i++)
C[i]= new int [3];
for (i=0; i<3; i++)
for (j=0; j>C[i][j];
cout<<”datos de la matriz C=A+B”<<endl;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
cout<<C[i][j]<<”";
cout<<endl;
getch();
cout<<endl;
cout<<”datos de la matriz A:”<<endl;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
cout<<A[i][j]<<”";
cout<<endl;
cout<<endl;
cout<<”datos de la matriz B:”<<endl;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
cout<<B[i][j]<<”";
cout<<endl;
cout<<endl;
cout<<”datos de la matriz C”<<endl;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
cout<<C[i][j]<<”";
cout<<endl;
getch();
}
May 10th, 2008 at 8:34 am
buenas. creo q paresca un poco tonto al preguntar esto. pero como podria crear un programa para cargar una matriz de 3 por 3 que al sumarla en cualquiera de sus direciones me de como resultado 15. si saben como poder ayudarme en esto se los agradeceria.
May 27th, 2008 at 4:25 pm
bueno esta es la suma de la matriz de forma diagona,solo se necesitan dos include , espero haber colaborado.. algun comentario lo pueden agregar al correo — pipecalle1987@hotmail.com..
#include
#include
main()
{
int mat[4][4],i,j,x,y,suma=0;
cout<<”ingresar datos de la matriz :”<<endl;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
cout<>mat[i][j];
if(i==j)
{
suma=suma+ mat[i][j];
}
}
}
clrscr();
y=1;
for(i=0;i<4;i++)
{
x=1;
for(j=0;j<4;j++)
{
gotoxy(x,y);
cout<<mat[i][j];
x=x+4;
}
y=y+2;
}
cout<<”\n\n\n\n\n\la suma de la diagonal es:”<<suma;
getch();
}
May 27th, 2008 at 9:10 pm
Che, y recursivo, ya que deliramos ?
int suma_diag(int matriz[fi][co],int lim){
if (lim >= 0){
return suma_dig( matriz[fi][co], –lim) +matriz[lim][lim]
}
else{
return 0;
}
}
June 11th, 2008 at 7:27 pm
hola nesecito q me colaboren con un ejercicio de matrices, consiste en hacer un programa que lea caracteres y determine cual de los caracteres se repite mas………bueno esper q me puedan ayudar..gracias..bay
July 18th, 2008 at 6:50 pm
como puedo hacer un codigo en visual la suma diagonal lo he intentado con los codogos que estan en esta pagina y no funcionan.
les agredeciria si me pueden ayudar gracias
September 2nd, 2008 at 3:11 pm
Me gustaria ver un ejemplo sobre una matriz diagonal. Debo saber si es diagonal. Como puedo hacerlo???
September 2nd, 2008 at 5:18 pm
Yetty estoy en las mismas yo tampoco puedo hacerlo.Yo dijito la matriz y no se ejecuta la funcion.
Yo tambien necesito un ejemplo
September 3rd, 2008 at 12:15 pm
hola Alguien me puede ayudar necesito saber si una matriz es diagonal o no?Cuando digito la matriz me debe retornar 1 si es diagonal y 0 si no es….
este es el codigo d mi funcion pero no me retorna nada… es urgente
int diagonal()
{
for(i=0; i<m; i++)
{
for (j=0; j<n; j++)
{
if(i=j)
{
if(matA[i,j]!=0)
return true;
}
}
} return false;
};
September 5th, 2008 at 7:22 pm
hola Alguien me puede ayudar necesito dos matrices zic-zac una que lea por la derecha y otra por la isquierda necesito el codigo fuente en c++ por fa.
___________
1 3 4 10 11
2 5 9 12
6 8 13
7 14
15
YLA OTRA de esta manera
__________
1 2 6 7 15
3 5 8 14
4 9 13
10 12
11
espero recibir ayuda y grasias
October 3rd, 2008 at 9:08 pm
por favor necesito saber como hago para resolver una matriz de 4 por 4 por el metodo de determinantes por menores pero con recursividad. necesito que me ayuden con ese programa en c++.
December 11th, 2008 at 1:01 am
Se pide realizar un programa que sea capaz de calcular la unión e intersección de dos conjuntos de palabras. Se recuerda que la intersección de ambos conjuntos es el conjunto dado por aquellas palabras que se encuentran tanto en el primer conjunto como en el segundo. Por su parte la unión es el conjunto de todas las palabras que pertenecen a uno y/u otro conjunto, eliminando las palabras repetidas. Esto se puede ver en el siguiente ejemplo:
Conjunto 1 Conjunto 2 Unión Intersección
Casa casa casa casa
Casa casa casa casa
Pez casa casa pez
Pez pez pez
Pez ave pez
Palo perro pez
ave
palo
perro
Menú:
1) Pedir palabras arreglo 1
2) Pedir palabras arreglo 2
3) Ver Unión
4) Ver Intersección
5) Ver arreglo basura
6) Salir
Las palabras de ambos arreglos solo deben ser de longitud par, las de longitud impar deben ser almacenadas en un arreglo llamado basura, que podremos mostrar en una de las opciones.
—-
December 11th, 2008 at 1:02 am
por fa ayudenme
January 10th, 2009 at 7:10 pm
plis ayudemen tengo que hacer una matriz con punto flotante… envielan ami correo carlos_velez31@hotmail.com es urgente… puedo perder el semestre si no me ayudan
February 19th, 2009 at 10:41 pm
hola como va esta muy bueno este foro alguien me podria hacer un programa. necesito hacer una matriz de m x n que los numeros que se le ingresen sean menores que 10 y crear una funcion que me detecte si los numeros son impares o no. si alguien me lo puede pasar antes del domingo seria joya muchas gracias
March 31st, 2009 at 6:54 pm
holaa emmm
la coza es asi
estudio la prepa y pss de tarea me dejaron hacer dos programas con matrices
nosotros representamos la matriz como una tabla
la de mi cazo es una tabla de 4×4 en el programa debemos sumar los elementos pares de la tabla
la tabla queda asi
0,0|0.1|0,2|0,3
1,0|1,1|1,2|1,3
2,0|2,1|2,2|2,3
3,0|3,1|3,2|3,3
de est tengo que hacer un rpograma que sume los elementos pares de la tabla y otro que sume la diagonal principal que es esta \ (osea estos elementos 0,0|1,1|2,2|3,3)
y de extra si se puede tambien esta diagonal / (estos elementos 0,3|1,2|2,1|3,0)
ojala me ayuden
mi correo
Aguilas206@hotmail.com
gracias adelantadas haha porfaaa
March 31st, 2009 at 6:55 pm
es para mañanaaaa la tareaa haha XD
miercoleeeesss haha
April 29th, 2009 at 8:58 pm
Hola buen dia.
Me da gusto saber que existan foros o blog para este tipo de temas, es interesante porque ayudan a las personas que no sabemos programar.
yo necesito ayuda, si no es mucha molestia podrian ayudarme a realizar un programa que realice la union, interseccion y compremento de tres vectores, ya intente hacerlo pero se me dificulta mucho en la comparacion de arreglos.
gracias por su amable atencion.
October 15th, 2009 at 8:32 am
hola la verdad es la primera vez q visito est foro, pero keria saber si puedes ayudarme con un programa de un menu de matrices, pero en visual studio c++ 6.0 y las matrices son, matrix diagonal, escalar, y de identidad.
plis me seria de mucha ayuda yaque soy de primero y no se programar apenas estoy aprendiendo.
gracias
espero y me puedas resolver pronto,
gracias
October 22nd, 2009 at 10:09 pm
hola como estan todos mi nombre es Michael jose herrera tengo 19 años y nesecito que porfavor me ayuden con un programa que voy a exponer se trata de calcular la diagonal de una matriz solo nesecito la ecuacion que al alguien me ayude espero sus respuestas no dejen de escribirme les dejo mi correo para que ahi me escrivan y memanden la información mi correo es ing.josetinoco@yahoo.com memandan la información porfa
October 25th, 2009 at 9:06 pm
hola sera q alguien me ayuda necesito un programa que lea una matriz cuadrada y la convierta a una matriz triangular superior
October 26th, 2009 at 5:07 pm
idiotas
November 6th, 2009 at 12:13 pm
diagonal de la matriz 4*4 normal e inversa
lleno de ceros matriz inversa
for(i=0;i<=4;i++){
for(j=0;j<=4;j++){
matrizinver[i][j]=0;}
}
matriz diagonal
for(i=0;i<=4;i++){
for(j=0;j<=4;j++){
if(i=j){
matrizinver[i][j]=matriz[i][j];}
}
}
calculo matriz inversa
j=4;
for(i=0;i<=4;i++){
matrizinver[i][j]=matriz[i][j];
j–;
}
se imprime la matriz y eso es todi
November 9th, 2009 at 9:05 pm
#include
#include
#define t 100
main()
{
int matriz[t][t],n,m,i,j,s;
printf(“ingresa las dimensiones de la tabla de nxn: \n”);
scanf(“%i%i”,&n,&m);
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
printf(“lectura de la tabla (%i,%i): “,i,j);
scanf(“%i”,&matriz[i][j]);
}}
printf(“\n”);
printf(“\n”);
for(i=1;i<=n;i++){
printf(“%i”,matriz[i][i]);
s+=matriz[i][i];
printf(“\n”);
}
printf(“\n”);
printf(“la suma de la diagonal es %i”,s);
getch();
}
ESTE PROGRAMA TE SUMA LA DIAGONAL DE MATRICES DE NXM ESTA HECHO POR MI Y FUNCIONANDO EN C++!!!
November 9th, 2009 at 9:08 pm
PD SOLO ES PARA LA DIAGONAL PRINCIPAL O SEA ESTA:
1 0 0
0 1 0
0 0 1
LOS UNOS FORMAN LA DIAGONAL PRINCIPAL
December 6th, 2009 at 3:10 pm
nesecito un favorsote.
no c si me puedan ayudar a realizar un programa en c++ que lea un matriz de nxn me de las dos diagonales un numero y lo demas cero
ejemplo
1 0 0 1
0 1 1 0
0 1 1 0
1 0 0 1
es de mucha importancia por favor ayudenme
February 28th, 2010 at 6:32 pm
hola a todos necesito un programa en matrices pero lo k necesito es que imprir la diagonal y el usuario tieene k meter los demas digitos y despues sumarlos u restarlos
ejemplo:
134567
581998
879180
786816
798981
la diagonal son los 1
y la suma de la parte superior e inferior es
superior: 65
inferior:107
y la resta seria: 32
espero recibir ayuda de ustess
July 31st, 2010 at 6:51 pm
suma de la diagonal secundaria en c++
July 31st, 2010 at 6:52 pm
es urgente por favor
July 31st, 2010 at 6:53 pm
como puedo mover una letra en una matriz en c++