92. Programación en C++ || Punteros || Ejercicio - Suma de matrices dinámicas con punteros
ฝัง
- เผยแพร่เมื่อ 26 ต.ค. 2024
- Puedes apuntarte al curso completo en la siguiente plataforma:
Hotmart: hotmart.com/es...
En este vídeo vamos a resolver los siguientes ejercicios:
Ejercicio 9: Realice un programa que calcule la suma de dos matrices dinámicas.
Ejercicio 10: Realice un programa que lea una matriz dinámica de NxM y cree su matriz traspuesta.
Nota: La matriz traspuesta es aquella en la que la columna i era la fila i de la matriz original.
Descarga el código de los ejercicios 9 y 10, en el siguiente link (solo uno).
Mega: mega.nz/#!UJQ2...
Mediafire: www.mediafire.c...
Visita mi sitio web para más cursos:
programacionat...
Sigueme por las redes sociales:
Facebook ProgramacionATS: goo.gl/sqmEE1
Twiter: goo.gl/WE4oaP
Hotmail: alejandro.acb@hotmail.com
Facebook personal: goo.gl/xL9qLl
instagram: @alejandroats
Cuenta paypal para donaciones: migueltaboadas@hotmail.com
💻 Apúntate al curso completo de Programación en C++:
Hotmart: hotmart.com/es/marketplace/productos/programacion-en-c-v0ivo/N78682741H
Naciste para enseñar man, muchas gracias por los videos!!!
mufa
@@Samuvalle jajajajaja
Simplemente eres Genial Alejandro, siempre te recordaremos. Descansa en paz campeón
QUE ?
@@alidiaz2366 Amigo, Alejandro Taboada Sánchez, que así es como se llamaba, falleció hace ya unos años por un sarcoma en la rodilla (cáncer de hueso). Dejó éste increíble legado que ayudó y enseñó, ayuda y enseña, y ayudará y enseñará a muchísimos estudiantes creo y espero que siempre. Por ahora, sigue haciéndolo.
Comparto mi solución. El ejercicio estuvo entretenido, aunque por alguna razón al utilizar el getch(); para que no se cierre el programa, aveces funcionaba y aveces no, pero con system("pause"); no tuve ningún problema. Algun sabido del tema que me explique se lo agradezco (Reemplacen system("pause"); por getch(); y ese el el codigo que me daba error).
#include
#include
#include
using namespace std;
void pedirMatriz();
void mostrarTraspuesta(int **,int,int);
int **matriz,nFilas,nColu;
int main(){
pedirMatriz();
mostrarTraspuesta(matriz,nFilas,nColu);
for (int i = 0; i < nColu; i++){
delete[] *(matriz+i);
}
delete[] matriz;
system ("pause");
return 0;
}
void pedirMatriz(){
coutnFilas;
coutnColu;
matriz = new int*[nFilas];
for (int i = 0; i < nColu; i++){
matriz[i] = new int[nColu];
}
cout
Eres un campeón amigo... hasta yo progreso con tus vídeos!! (aunque poco a poco jajaja)
gracias por tus vídeos!
Neta que nadie enseña cómo tu! Gracias!
Alejandro, como siempre tu explicación es impecable. Ojala pudieras ver nuestro reconocimiento.
Para mostrar las matrices use la función siguiente. Hay que tener cuidado al generar la transpuesta porque puede no ser una matriz cuadrada.
void mostrarMatrices(int **puntero_matriz, int numFilas, int numColumnas){
cout
Wow! Me has ayudado muchísimo con tus videos. Gracias ;) Saludos desde Chile
Me alegro :) Saludos desde Perú
Cuando libere matriz puede todo en un solo for , así
For(int i=0;i
Para los que se les haga muy complicado, en versiones actuales de C++ es tan sencillo como una vez declarada la matriz dinámica referirse a ella como una matriz común y corriente, es decir, en lugar de poner; "cout
Al principio me saltaba un error porque había hecho mal los delete y estuve decenas de minutos para darme cuenta. En los comentarios lo que vi es que NO HACEN LA MATRIZ TRASPUESTA sino que directamente muestran cómo es la traspuesta de la original, cuando realmente eso está casi de más (aunque viene bien para ver si el programa es correcto) ya que había que hacer una matriz nueva a partir de la original.
#include
#include
#include
using namespace std;
void pedirDatos();
void matrizTraspuesta(int **,int **,int,int);
void mostrarTraspuesta(int **,int,int);
int **pendorcho_matriz1, **pendorcho_matriz2, N, M;
int main(){
pedirDatos();
matrizTraspuesta(pendorcho_matriz1,pendorcho_matriz2,N,M);
mostrarTraspuesta(pendorcho_matriz2,N,M);
for(int i=0;i
Si muchos hicieron eso, yo lo que hice fue modificar una unica matriz a su traspuesta en vez de usar 2, me pareció mas entretenido, aunque al final tampoco cumpli las ordenes xD.
que gran canal¡ ojala suba mas videos de programación
Bro..... ese día ya nunca llegara ;-;
Mi version del ejercicio 9 un poco mas ordenado:
/*Ejercicio 9: Realice un programa que calcule la suma de dos matrices dinámicas.*/
#include
#include
#include
using namespace std;
//Prototipos
void pedirDatos();
void sumaMatrices(int **ptr_matriz_1, int **ptr_matriz_2, int nFil, int nCol);
void mostrarMatriz(int **ptr_matriz, int nFil, int nCol);
int **ptr_matriz_1, **ptr_matriz_2,nFilas,nCol;
int main(){
pedirDatos();
sumaMatrices(ptr_matriz_1, ptr_matriz_2, nFilas, nCol);
mostrarMatriz(ptr_matriz_1, nFilas, nCol);
for(int i=0; i
#include
#include
#include
void pedirDatos();
void transpuesta(int**,int,int);
void mostrarDatos();
int **matriz,nfilas,ncolumnas;
using namespace std;
int main(){
pedirDatos();
mostrarDatos();
transpuesta(matriz,nfilas,ncolumnas);
for(int i=0;i
esta es mi aportacion al ejercicio
/* Ejercicio 10: Realizar una matriz transpuesta*/
#include
#include
#include
using namespace std;
//Prototipo de la funcion
void pedirDatos();
void matrizOriginal(int **, int, int);
void matrizTraspuesta(int **, int, int);
int **matriz, nFilas, nColumnas;
int main() {
pedirDatos();
matrizOriginal(matriz, nFilas, nColumnas);
matrizTraspuesta(matriz, nFilas, nColumnas);
getch();
return 0;
}
void pedirDatos() {
cout
Ejercicio 10:
Mi código funciona hasta con matrices que no son cuadradas ¡Espero le sirva!
/*128. Realice un programa que lea una matriz dinámica de NxM y cree su
matriz traspuesta.
Nota: La matriz traspuesta es aquella en la que la columna i era la fila i
de la matriz original.
1 2 3 -> 1 4 7
4 5 6 -> 2 5 8
7 8 9 -> 3 6 9
*/
#include
#include
using namespace std;
void pedirDatos();
void matrixTranspuesta(int **, int, int);
int **matrix, nFilas, nCol;
int main(){
pedirDatos();
matrixTranspuesta(matrix,nFilas,nCol);
//Liberando la memoria utiliza en matrix
for(int i=0;i
Una pregunta Alejandro, comprare la version premium del curso de c++, cuantos videos mas se adicionan a los que ya tienes en tu canal de youtube?
Hola Bill :) el curso premium contiene 279 vídeos (por ahora estaré agregando más proximamente), y contiene los siguientes capítulos extras:
18. POO: Clases y Objetos en C++
19. POO: Clases derivadas - Herencia y Polimorfismo
20. Genericidad - Plantillas (templates)
21. Análisis y Eficiencia de Algoritmos
22. Algoritmos Recursivos
23. Biblioteca Estándar de Plantillas (STL) (Proximamente)
24. Grafos (Proximamente)
25. Interfaz gráfica de usuario en Qt (Proximamente)
Waaaao... Si que vale la pena, ni bien termine de ver todos los videos que tienes en youtube, me compro el curso premium bro :D
Ejercicio 10:
#include
#include
using namespace std;
void llenarMat1();
void llenarMat2();
int **mat1,**mat2,x,y;
int main () {
coutx>>y;
llenarMat1();
llenarMat2();
return 0;
}
void llenarMat1(){
mat1 =new int*[x];
for(int i=0;i
/*Ejercicio 10
Realice un programa que lea una matriz dinamica de NxM y cree su transpuesta.
NOTA: La matriz transpuesta es aquella en la que se reemplazan las columnas por filas y filas por columnas de la matriz original.
*/
#include
#include
using namespace std;
void pedirDatos();
void liberarMemoria(int **, int );
void original(int **, int, int);
void transpuesta(int **, int, int);
int **pMatriz,nf,nc,i,j;
int main(int argc, char *argv[]) {
pedirDatos();
original(pMatriz,nf,nc);
transpuesta(pMatriz,nf,nc);
liberarMemoria(pMatriz,nf);
return 0;
}
void pedirDatos(){
cout
Un heroe sin capa
Yo lo hice con dos punteros, pero puedo encontrar la transpuesta de TODA matriz, no tiene que ser cuadrada necesariamente
//Ejercicio 10: Realice un programa que lea una matriz dinámica de NxM y cree su matriz traspuesta.
#include
#include
#include
using namespace std;
int **matriz1,**matrizT,nFilas,nCol;
void pedirDatos();
void mostrarMatriz(int **,int,int);
void matrizTranspuesta(int **,int **,int,int);
void mostrarTranspuesta(int **,int,int);
int main(){
pedirDatos();
mostrarMatriz(matriz1,nFilas,nCol);
matrizTranspuesta(matriz1,matrizT,nFilas,nCol);
mostrarTranspuesta(matrizT,nFilas,nCol);
//Liberamos la memoria que reservamos para la matriz1
for(int i=0;i
Ejercicio 10:
#include
#include
using namespace std;
void pedirDatos();
void mostrar(int **,int,int);
int **matriz1,filas,columnas;
int main(){
pedirDatos();
mostrar(matriz1,filas,columnas);
for(int i=0;i
Fue más fácil que cuando ella te dijo: "podemos ser amigos" :'v
/*Ejercicio 10: Realice un programa que lea una matriz dinámica de NxM y cree su matriz transpuesta.
Nota: La matriz transpuesta es aquella en la que la columna i era la fila i de la matriz original. */
#include
#include
#include
using namespace std;
void pedirDatos();
void mostrandoMatriz(int **,int,int);
int **matriz, nFilas, nCol;
int main(){
pedirDatos();
mostrandoMatriz(matriz,nFilas,nCol);
for(int i=0;i
ATS
Sin leer datos
Se puede generar una matriz donde cada elemento de esta corresponda a la suma de la fila con la columna
Te agradezco me colabores con eso ??
/*Ejercicio 10: Realice un programa que lea una matriz dinámica de NxM y cree su matriz traspuesta.
Nota: La matriz traspuesta es aquella en la que la columna i era la fila i de la matriz original.
*/
#include
#include
#include
using namespace std;
void pedirDatos();
void mostrar_matriz_transpuesta(int**,int,int);
int **matriz1,nFilas,nColumnas;
int main(){
pedirDatos();
mostrar_matriz_transpuesta(matriz1,nFilas,nColumnas);
//Eliminando los datos que se utilizaron en dicha matriz.
for(int i=0;i
Mi versión del programa del ejercicio 10:
/*Realice un programa que lea una matriz dinamica de N x M, y cree su matriz traspuesta
NOTA: usar punteros*/
#include
#include
using namespace std;
void pedirD();
void trasponerM();
void mostrarM();
void liberarMem();
int** matriz_puntero, **matriz_puntero_auxiliar, nfilas, ncolumnas;
int main()
{
pedirD();
trasponerM();
mostrarM();
liberarMem();
return 0;
}
void pedirD()
{
cout nfilas;
cout > ncolumnas;
matriz_puntero = new int* [nfilas];
for (int j = 0; j < ncolumnas; j++)
{
matriz_puntero[j] = new int[ncolumnas];
}
cout
/* Sin variables globales
Ejercicio 10: Realice un programa que lea una matriz dinámica de NxM y cree su matriz traspuesta.
Nota: La matriz traspuesta es aquella en la que la columna i era la fila i de la matriz original.*/
#include
using namespace std;
void tamFilasColumnas(int &, int &);
void ingresarDatos(int **, int, int);
void matrizOriginal(int **, int, int);
void matrizTranspuesta(int **, int, int);
int main(){
int **matriz,filas,columnas;
tamFilasColumnas(filas,columnas);
matriz = new int*[filas];
for(int i=0;i
/*Ejercicio 10: Realice un programa que lea una matriz dinámica de NxM y cree su matriz traspuesta.
Nota: La matriz traspuesta es aquella en la que la columna i era la fila i de la matriz original.*/
#include
#include
using namespace std;
void pedirDatos();
void mostrarMatriz(int **,int,int);
void mostrarTraspuesta(int **,int,int);
int **puntero_matriz,nFil,nCol;
int main(){
pedirDatos();
mostrarMatriz(puntero_matriz,nFil,nCol);
mostrarTraspuesta(puntero_matriz,nFil,nCol);
//Liberando memoria.
for(int i = 0; i
Yo pienso que no es necesario prototipos con parámetros si vas a usar las variables y los apuntadores dobles de manera global... Ademas, pienso que seria mas elegante mostrar las matrices 1 y 2 y usar una tercera para la suma, y asi poder mostrar los datos de las 3 matrices y asi tener mas visibilidad de los datos para comprobar el resultado.
He aqui mi aportacion:
/*
Realice un programa que calcule la suma de dos
matrices dinámicas.
*/
#include
#include
#define CLS "clear"
using namespace std;
void pedirDatos();
void sumarMatrices();
void multiplicaMatrices();
void mostrarMatrices();
int **pm1, **pm2, **pm3, **pm4, rows, cols;
int main(int argc, char **argv){
system(CLS);
pedirDatos();
sumarMatrices();
multiplicaMatrices();
mostrarMatrices();
cout
*Como dato por si les sirve
Cuando llamamos a las matrices para mostrar datos o guardar datos en ellas podemos hacerlo de dos formas:
--> *(*(matriz + i) + j) --> Esta es una...
--> matriz[i][j] --> Esta es otra...
Ambas sirven ahi se las dejo por si alguna se les hace mas facil de usar xD
Pero estamos en punteros :( xd
@@danielfrank9650 aunque lo estemos igual sirve XDD a gusto del consumidor
profe una pregunta
que diferencia hay cuando tengo una variable puntero(de un arreglo ) y le pongo ++ ole pongo
nombre de varible +1??? espero su respuesta muchas gracias
Si haces esto: p++, estas desplazando el puntero una posición en memoria (en bytes) de acuerdo al tipo de dato, por ejemplo: si p es entero, se desplazaria y apuntaria a los siguientes 8 bytes, si p fuera flotante se desplazaria 16 bytes, si fuera double se desplazaria 32 bytes...
Si haces esto (p+1) estas haciendo referencia a un desplazamiento de una posición de memoria hacia adelante (en bytes), pero sin desplazar el apuntador, el apuntador siempre esta apuntando al inicio del arreglo, siempre, pero no se mueve para apuntar a la posicion +n, solo haces referencia a esa posicion.
Espero me hayas entendido.
//Suma de matrices dinamicas con punteros a traves de un struct
#include
#include
using namespace std;
struct sumaMatriz{
int **pMatriz;
}m1,m2;
void pedirDatos();
void muestraOriginal(sumaMatriz, sumaMatriz);
sumaMatriz suma(sumaMatriz, sumaMatriz,int,int);
void muestraSuma(sumaMatriz,int,int);
void liberarMemoria(sumaMatriz,sumaMatriz,int);
int i,j,nf,nc;
int main(int argc, char *argv[]) {
pedirDatos();
muestraOriginal(m1,m2);
suma(m1, m2,nf,nc);
muestraSuma(m1,nf,nc);
liberarMemoria(m1,m2,nf);
return 0;
}
void pedirDatos(){
cout
excelente video te felicito amigo!
/*Realice un programa que lea una matriz dinámica de NxM y cree su matriz traspuesta.
Nota: La matriz traspuesta es aquella en la que la columna i era la fila i de la
matriz original.*/
#include
#include
#include
void pedirDatos();
void mostrar(int **,int, int);
void mostrarTranspuesta(int **,int, int);
int **puntero_Matriz, nFilas,nColu;
main(){
pedirDatos();
mostrar(puntero_Matriz,nFilas,nColu);
mostrarTranspuesta(puntero_Matriz,nFilas,nColu);
/// liberar memoria
for(int i=0;i
Mi tarea profe:
/*Ejercicio 10.*/
#include
#include
#include
using namespace std;
void pedirDatos();
void matrizNormal(int **, int, int);
void matrizTranspuesta(int **, int, int);
int **puntMatriz, nFila, nColum;
int main(){
pedirDatos();
matrizNormal(puntMatriz, nFila, nColum);
matrizTranspuesta(puntMatriz, nFila, nColum);
for(int i=0;i
Like+Sub. Una duda,una vez seguidos todos tus tutoriales de c++ crees que podría defenderme a la hora de desarrollar un videojuego?
yo pienso que si, normalmente si mi info esta bien con la Programacion Orientada a Objetos es con lo que se hacen los videojuegos
hola excelente video.... sabes me gustaría que me ayudarás... Quiero saber como sacar la inversa de una matriz en dev....Estaría genial gracias.... SALUDOS
#include
#include
#include
using namespace std;
int **mtr,nFilas, nColum;
//Prototipos de Funicones
void pedirDatos();
void mostrar(int **,int,int);
main(){
pedirDatos();
mostrar(mtr,nFilas,nColum);
for(int i=0; i
Justo tenía problemas de lógica para mostrar la matriz traspuesta ya que yo quería llenar una nueva matriz a partir de la original pero veo que a ti se te ocurrió algo mucho mas sencillo, mostrar la matriz ya creada en otra forma y se crea esa matriz traspuesta jaja gracias por tu aportación.
intenté hacer el programa con casi todo delegado en funciones ... pero no logré evitar la declaración de variables globales sigue la versión
#include
#include
using namespace std;
int **ptrM1, **ptrM2, nr, nc;
void entrRC();
int** mkM(int **, int, int);
void entrMe(int **, int, int, int);
void addM(int **, int **, int, int);
void dispSM(int **, int, int);
void delM(int **, int);
int main()
{
entrRC();
ptrM1=mkM(ptrM1, nr, nc);
ptrM2=mkM(ptrM2, nr, nc);
entrMe(ptrM1, nr, nc, 1);
entrMe(ptrM2, nr, nc, 2);
addM(ptrM1, ptrM2, nr, nc);
dispSM(ptrM1, nr, nc);
cout
Excelente video amigo es un gusto poder ver tus videos espero algun dia devolverte el favor.
Creo que en esta vida material ya no amigo... Pero creo que si rezas por el le ayudara bastante en el plano donde se encuentra ahora...
Muy buen vídeo
porqué no pones la declaracion de las matrices** dentro del main() y en el método pedirDatos() las pones como parámetros. Lo digo porqué lo he intentado y no me funciona. Pero tal y como lo haces tienes variables locales por ahí :/
Hola, no te desanimes. Si te interesa este tema, en verdad te recomiendo que regreses unos 20 videos atrás y hagas más prácticas y pruebas, así te quedará más claro cuando vuelvas a llegar a este punto, sobre todo te recomiendo si te interesa que no lo dejes en pausa porque cuando quieras volver, batallarás más. Si quieres declarar las variables dentro de la función principal main(), esas variables serán locales dentro de la función main. Cuando las requieras en una función externa como por ejemplo pedirDatos() los parámetros serán de tipo paso por referencia, ya que si son de paso por valor, tu función pedirDatos() no encontrará la variable de la matriz (por ejemplo), ya que tu función pedirDatos() buscará dentro de su alcance, sin entrar en la función main() que es donde tendrías declarada tu variable matriz[][]. Al hacerlo de paso de parámetro por referencia, le indicarás a tu función pedirDatos() la posición en memoria de donde deberá buscar esa variable, y de esa manera puedes declarar tus funciones localmente en la función principal main() y llamarlas en funciones externas. Para esto, la variable se declara de manera normal **puntero_matriz, pero dentro de tu prototipo de función irá así: pedirDatos(int**&), y sería lo mismo dentro de tu definición de la función.
@@adriel8152 Nunca hubiera notado el error, en verdad gracias. Voy a repasar el paso de parámetros por valor y por referencia porque aún no entiendo por qué debe hacerse así.
hola muy buenos tus videos! quisiera saber tambien para desarrollar aplicaciones de windows usando c++ y c
#include
#include
#include
#include
using namespace std;
//prototipo
void pedirdatos();
void mostrarnormal(int **, int, int);
void mostrartranspuesta(int **, int , int);
int **puntero_matriz;
int nfilas;
int ncolumnas;
int main()
{
pedirdatos();
mostrarnormal(puntero_matriz,nfilas,ncolumnas);
mostrartranspuesta(puntero_matriz,nfilas,ncolumnas);
for(int i = 0; i < nfilas; i++)
{
delete[] puntero_matriz[i];
}
delete[] puntero_matriz;
getch();
return 0;
}
void pedirdatos()
{
coutnfilas;
coutncolumnas;
puntero_matriz = new int *[nfilas];
for(int i = 0; i < nfilas; i++)
{
puntero_matriz[i] = new int [ncolumnas];
}
//fin de reservar memoria;
cout
//Ejercicio Resuelto
#include
#include
#include
using namespace std;
void pedirDatos();
void imprimirMatrizTraspuesta();
int **punteroMatriz, nFilas, nCol;
int main() {
pedirDatos();
imprimirMatrizTraspuesta();
for(int i=0;i
#include
#include
#include
using namespace std;
void pedirDatos();
void obtenerMatrizTranspuesta(int **,int, int,int,int);
void mostrarMatrices(int **, int **, int, int,int,int);
int **puntero_matriz, **matriz_transpuesta, numero_filas1,numero_columnas1,numero_filas2,numero_columnas2;
int main(){
pedirDatos();
obtenerMatrizTranspuesta(puntero_matriz,numero_filas1, numero_columnas1,numero_filas2,numero_columnas2);
mostrarMatrices(puntero_matriz,matriz_transpuesta,numero_filas1,numero_columnas1,numero_filas2,numero_columnas2);
getch();
return 0;
}
void pedirDatos(){
coutnumero_filas1;
coutnumero_columnas1;
numero_filas2=numero_columnas1;
numero_columnas2=numero_filas1;
//Reservando memoria
puntero_matriz=new int*[numero_filas1];
for(int i=0;i
Un like hasta el cielo....
Por que sera que cuando ejecuto ingreso los valores de la matrtiz 1 y se tilda el programa y me dice dejo de funcionar :(
Buenas, ¿dónde puedo encontrar los ejercicios que haces en los vídeos? Gracias
Yo estoy poniendo esos ejercicios como aportaciones en agradecimiento a este amigo que nos brindo este curso gratis. Desafortunadamente ya no está entre nosotros, y por eso es como una manera de brindarle un tributo a los que nos aporto como ayuda a la humanidad de forma desinteresada como lo hizo él...
sera que pueden publicar el ejercicio usando el printf y el scanf .. siempre tratanto de hacer por el camino facil
es mas facil con cou y cin
/*Realice un programa que calcule la suma por posiciones de dos matrices dinámicas.*/
#include
#include
#include
using namespace std;
int fila,colum,**matriz1,**matriz2;
void pedirDatos(){
coutfila;
coutcolum;
cout
EXECELENTE APORTE
LE FALTAN LOS *(* A UN APUNTADOR PERO ESTA PERFECTO, GRACIAS
SIN EMBARGO SUBO EL CODIGO CORRINEDO CON TUS CREDITOS
#include
#include
#include
using namespace std;
int fila,colum,**matriz1,**matriz2;
void pedirDatos(){
coutfila;
coutcolum;
cout
Ejercicio 9
#include
#include
using namespace std;
void llenarMat1();
void llenarMat2();
void sumar();
int **mat1,**mat2,x,y;
int main () {
coutx;
couty;
llenarMat1();
llenarMat2();
sumar();
return 0;
}
void llenarMat1(){
mat1 =new int*[x];
for(int i=0;i
¿Qué pasa si no se libera la memoria reservada? Ya que lo ha compilado sin hacerlo y el programa ha funcionado sin error. Es solo por curiosidad para saber como funciona. Gracias de antemano, un saludo.
Con estos pequeños ejercicios no pasa nada, porque la memoria se libera igualmente al terminar el programa y no causa mayor problema.
Pero si es un proyecto grande que usa mucha memoria, puedes llegar a quedarte sin memoria si no la vas liberando cuando la dejas de usar.
@@learning2895 Ok, muchas gracias
Alguien podría explicarme porque necesito que la segunda función pida parámetros si el ámbito de todas las variables anteriores es global?
/*
Realice un programa que lea una matriz dinámica y cree su matriz traspuesta
*/
#include
#include
#include
using namespace std;
void crearMatriz();
void mostrarOriginal(int **,int,int);
void MatrizTraspuesta(int **,int,int);
int **matriz,nf=3,nc=3;
int main(){
//llamadas de funciones
crearMatriz();
mostrarOriginal(matriz,nf,nc);
MatrizTraspuesta(matriz,nf,nc);
//liberar memoria
for(int i=0;i
#include
#include
#include
using namespace std;
//prototipo de funciones
void pedirDatos();
void intercambiarValores(int **,int,int);
//variables globales
int **puntero_matriz,nFilas,nCol;
int main()
{
pedirDatos();
intercambiarValores(puntero_matriz,nFilas,nCol);
for(int i=0;i
Y como puedo poner para que se crea un archivo de texto?
A mi me quedo un poco mas corto.
//Ejercicio 9: Realice un programa que calcule la suma de dos matrices dinámicas.
#include
using namespace std;
void llenar_matriz(int **m1, int fil, int col);
void sumar_matriz(int **m1, int **m2, int fil, int col, int** resultante);
int main(void){
int fil, col;
//Pedir datos:
coutfil;
coutcol;
int **m1= new int*[fil];
int **m2= new int*[fil];
for (int f=0; f
¿por que le pasas las matrices como argumento si las has declarado como variables globales, creo que no es necesario no?
No es para nada necesario, creo que el lo hace para mostrar cómo se envían los parámetros, aunque la gente que no entiende bien el tema de variables globales y locales podría llegar a confundirse,
Alguien sabe si es necesaria la librería "stdlib.h" para usar el "new" y "delete"?
Porque también me compila sin usarla 🤔
Desde el 2015 ya no se requiere usar la biblioteca para usar new y delete, pruébenlo y veran.
#include
#include
using namespace std;
int filas, columnas,**dir;
void pedir_datos();
void mostrar_matriz(int**,int,int);
void mostrar_transpuesta(int**, int, int);
int main()
{
pedir_datos();
mostrar_matriz(dir, filas, columnas);
mostrar_transpuesta(dir, filas, columnas);
system("pause");
return 0;
}
void pedir_datos()
{
cout filas;
cout columnas;
dir = new int *[filas];
for (int i=0; i < filas; i++)
{
dir[i] = new int[columnas];
}
cout *(*(dir + i) + j);
}
}
}
void mostrar_matriz(int**dir,int filas,int columnas)
{
cout
Ejercicio 10 sin variables globales: #include
#include
using namespace std;
struct Matriz{
int i,j;
int nFilas, nColumnas;
int **Puntero_de_punteros;
};
void PedirDatos(Matriz &); /// (struct Matriz)
void CrearMatrizDinamica(struct Matriz &);
void ImprimirMatriz(Matriz &);
void CrearTranspuesta(Matriz &);
void LiberarMemoria(struct Matriz &);
main()
{
struct Matriz mtz;
PedirDatos(mtz);
CrearMatrizDinamica(mtz);
ImprimirMatriz(mtz);
CrearTranspuesta(mtz);
LiberarMemoria(mtz);
}
void PedirDatos(struct Matriz &m1) /// o tambien (Matriz m1)
{
coutm1.nFilas;
coutm1.nColumnas;
}
void CrearMatrizDinamica(Matriz &m1)
{
m1.Puntero_de_punteros = new int*[m1.nFilas]; //Crea n variables de tipo puntero (n= nFilas)
for(m1.i=0;m1.i
Hola amigo en el caso de que las quisiera multiplicar que cambio del código?
#include
#include
#include
using namespace std;
void pedirDatos();
void multiplicar(int **, int **, int, int,int);
void mostrar(int **, int **, int, int);
int **pun1, **pun2, nFilas, nCols, multi;
int main(){
pedirDatos();
multiplicar(pun1,pun2,nFilas,nCols,multi);
mostrar(pun1,pun2,nFilas,nCols);
for(int i=0;i nCols;
if(nFilas!=nCols){
cout
#include
using namespace std;
int **matriz, nFilas, nCol;
void pedirDatos();
void matrizTranspuesta(int **, int, int);
int main()
{
pedirDatos();
matrizTranspuesta(matriz, nFilas, nCol);
}
void pedirDatos()
{
cout nFilas;
cout nCol;
matriz = new int*[nFilas];
for(int i= 0;i
#include
#include
using namespace std;
void datos(int **&, int &, int &);
void ingreso (int **&, int &, int &);
void verificacion(int **&, int &, int &);
int main() {
int **matriz;
int filas, columnas;
datos(matriz,filas,columnas);
ingreso(matriz,filas,columnas);
verificacion(matriz,filas,columnas);
for(int i = 0; i< filas; i++){
delete[] matriz[i];
}
delete[] matriz;
return 0;
} void datos(int **&matriz, int &filas, int &columnas){
cout > filas;
cout > columnas;
matriz = new int*[filas];
for (int i= 0; i< filas; i++){
matriz[i]=new int[columnas];
}
}
void ingreso(int **&matriz, int &filas, int &columnas){
for(int i=0; i
uff me costa mas que nada porque no puedo utilizar variables globales
#include
#include
#include
using namespace std;
void pedirdatos();
void transpuesta(int **,int **,int,int);
void imprimir(int **,int **,int,int);
int **p1,**p2, nfilas, ncol;
int main(){
pedirdatos();
transpuesta(p1,p2,nfilas,ncol);
imprimir(p1,p2,nfilas,ncol);
for(int i=0;i
#include
#include
using namespace std;
void iniciarMatriz(int**& m);
void pedirDatos(int**& m, char);
void mostrar(int**& m, char);
void sumar(int**& a, int**& b, int**& c);
int** A, ** B, ** C, filas, cols;
int main()
{
cout > filas;
cout > cols;
pedirDatos(A, 'A');
pedirDatos(B, 'B');
mostrar(A, 'A');
mostrar(B, 'B');
iniciarMatriz(C);
sumar(A, B, C);
mostrar(C, 'C');
return 0;
}
void iniciarMatriz(int**& m)
{
m = new int* [filas];
for (int i = 0; i < filas; i++)
{
m[i] = new int[cols];
}
}
void pedirDatos(int**& m, char nom)
{
iniciarMatriz(m);
for (int i = 0; i < filas; i++)
{
for (int j = 0; j < cols; j++)
{
cout
#include
#include
#include
using namespace std;
//Prototipos de Funcion
void pedirDatos();
void mostrarMatrizTranspuesta(int **,int,int);
//Variables Globales
int **matriz, filas, columnas;
int main(){
pedirDatos();
mostrarMatrizTranspuesta(matriz,filas,columnas);
//Liberando memoria
for(int i=0;i
Hice este programa, pero no recoge bien los datos, ¿alguien sabe el pq?
#include
#include
#include
using namespace std;
void pedirDatos();
void calcular(int **,int **,int,int);
void mostrarMatriz(int **,int,int);
int **puntero_matriz,**mtras,nFilas,nCol;
int main(){
for(int i=0;i
Capaz ya te diste cuenta, pero es esta linea que esta al revez: *(*(puntero_matriz+i)+j) = *(*(mtras+j)+i);
Lo correcto es: *(*(mtras+j)+i)= *(*(puntero_matriz+i)+j);
No entendi porque usas deletes al inicio y al final del main, solo deberian estar los del final.
@@learning2895 Vale, gracias!
Bro cómo se haria con la multiplicacion de matrices
Creo que igual, solo que cambiando el (+=) por un (*=)
Cómo seria un programa que multiplique matrices utilizando punteros?
Todo es igual lo único que cambia es el símbolo de + a *
PDT: Alejandro Fallecio hace un año
lo mas triste es qeu el codigo aun esta en mediafire
¿Alguien sabe cómo podemos comprobar que efectivamente la memoria de una matriz es liberada?
y como seria para multiplicarla
{{a, b}, {c, d}} . {{r, s}, {t, u}}={{a r + b t, a s + b u}, {c r + d t, c s + d u}}
v
#include
#include
#include
using namespace std;
void pedirDatos();
void m_O(int **, int , int); //Matriz original
void m_T(int **, int, int); //Matriz traspuesta
int **puntero_matriz, nFilas, nCol;
int main()
{
pedirDatos();
m_O(puntero_matriz, nFilas, nCol);
m_T(puntero_matriz, nFilas, nCol);
for(int i=0; i
Escribir un programa que lea una matriz de números enteros y que devuelva la suma de los elementos positivos de la matriz y la suma de los elementos negativos