Gracias por tanto Alejandro, este tema no se lo eh entendido estas ultimas semanas a mi profesor pero tu manera didactica y asertiva de explicar me ah ayudado, ayudó y seguro ayudara a muchos mas. Tu legado sera eterno.
Brother ! GRACIAS!!!!!!!!!!!!!!!!!!!! Justo me dejaron un problema de hacer la transpuesta de una matriz de 5x5 con punteros, no tenia ni una maldita idea para hacerlo, vi tu canal y todo salio !! GRACIAS!!!!! Saludos desde Lima-Peru !
8 років тому+1
Gracias a ti por ver amigo :D Un saludaso (Y) suerte
Que descanse en paz el gran maestro. Lo único que yo no entendí es porque para reservar espacio en memoria para las columnas en el bucle ponga hasta i menor a número de filas, me enrede ahí, yo creí que pondría hasta i menor a número de columnas.
Según entendí es como la constante tamaño que creaban ejemplo numero[tamaño]; Número es una variable, tamaño es la cantidad de valores. Por ejemplo const int tamaño =5. Cuando se hace el Puntero_matriz = new int*[filas] Se le dice que el valor que tenga fila es lo que debe reservarle de memoria ( o sea guarda una posición de memoria para ese dato que introduciremos. Con el for for (int i=0;i
Gracias amigo gracias, me salvo la noche. Tengo que implementar una propagacion de onda en cuda y necesitaba una forma de movere en la ram de forma matricial. Con esto me soluciono todo :3
Hola Alejandro, muy buenos videos, explicas excelente. Crees que podrias realizar una explicacion de como llenarias una matriz de arreglos de caracteres? Gracias, saludos.
aun tengo una duda de hacer una matriz pero con strings el problema es que me como es dinamico no me deja usar las funciones de porque segun me sale es para arreglos no dinamicos porque lo que yo queria hacer esa poner nombres en esa matriz y ver si estaban en una lista peropor la razon antes mencionadas no puedo comparar arreglos dinamicos con no dinamicosni sirve strcpy para copiarlos
Por lo que he visto tras probarlo, realizan exactamente la misma función, y veo muchísimo mejor la segunda forma de expresarlo. En el vídeo él dice que es exactamente lo mismo también, pero que la primera forma de expresarlo es mucho más elegante para él jajaja
de esta forma es como hacerlo procedural. me refiero a cundo ejemplo se crea un mapa y si se cumple determinada condicion sigue creando mapas o terrenos y etc, etc y se borra lo que se creo anteriormente ? de manera que reserva memoria al sistema para crear nuevos terrenos y borrando los que se crearon anteriormente etc.
una pregunta, es buena practica declarar variables globales?
7 років тому+2
Hola :) Depende de la situación, si hay una variable que la vas a tener que utilizar en varias funciones de tu programa, es bueno declararla de forma global. Pero si solo la vas a utilizar en una sola función, mejor declararla local
alguien me puede decir por que no ejecuta bien el codigo el programa inicia pero solo me lanza directamente dos numeros el 12 y 34 #include #include #include using namespace std; void pedirDatos(); void mostrarMatriz(int **,int,int); int **puntero_matriz,nFilas,nCol; int main(){ pedirDatos(); mostrarMatriz(puntero_matriz,nFilas,nCol);
como se puede generar una matriz , con solamente una cuantas constantes ejemplo nada mas se tiene los valores de las esquinas 50 50 50 ? ? 100 50 ? ? 100 100 100 este método es gauss-jordan en encontrar la variación de temperatura en un mallado pero sin introducir los valores de la matriz , que el programa la genere ?
Una pregunta ¿Por qué declaraste al puntero, las filas y las columnas como variables globales?¿Acaso no funcionaría también si los coloco como variables locales? Gracias
@@realNoFAKE-lm2cv Sí funciona, pero sería más laborioso porque en cada función a usar dichas variables las tendría que estar declarando, mejor como dice él si vas a usar una variable en diferentes funciones mejor declarara como global.
Quisiera saber qué diferencia habría entre hacer uso de punteros y hacer esto: #include using namespace std; int filas, columnas; int main(){ int matriz[filas][columnas];
cout > filas >> columnas;
for(int i = 0; i < filas; i++){ for(int j = 0; j < columnas; j++){ cout
Que puedes usar memoria dinámica, por lo tanto, puedes liberar espacio en el proceso o hacerle cambios durante la ejecución.Esto hace más eficiente tu programa.
Amigo, no se porque, pero al compilar llega al numero x numero cuando pide el numero y se cierra el programa, estuve checando y no veo el problema, me podrian ayudar?? //Ejemplo de matriz dinámica #include #include using namespace std; //prototipos de funciones void pedirDatos(); void imprimirDatos(int **, int, int); //Matriz dinamica int **puntero_matriz,nFilas = 0, nCol=0; /* 1 2 3 2 3 4 2 5 2 5 2 2 8 2 8 */ int main (){ system ("color 4F"); pedirDatos(); imprimirDatos(puntero_matriz, nFilas, nCol); //Liberar la memoria que usamos en la matriz for (int i = 0; i < nFilas; i++){ delete [] puntero_matriz; } delete [] puntero_matriz; system ("pause"); return 0; } void pedirDatos(){ coutnFilas; coutnCol; //Reservando memoria para la matriz dinámica puntero_matriz = new int *[nFilas]; //Reservando memoria para las filas for (int i = 0; i < nFilas; i++){ puntero_matriz = new int*[nCol];//Reservando memoria para las columnas } cout
PD: Al poner como tu pusiste para guardar memoria en las columnas me dice que no puede cambiar de * a ** y por eso lo puse como int *[nCol] PD2: No le hagan caso a lo del color xD, estaba invesgando y me entro la curiosidad
8 років тому
Hola :D veo que el problema está al reservar memoria para las columnas, debería ser: puntero_matriz[i] = new int[nCol]; Un saludo :)
8 років тому+1
Seguramente lo estas poniendo puntero_matriz = new int[nCol]; por eso te sale ese error, si lo pones puntero_matriz[i] = new int[nCol]; Con el [i] funcionará correctamente :)
se que cuesta entender un poco los punteros, solo imagina que cuando asignas un puntero hacia una variable es como si la variable fuera una casa en una ciudad, y el puntero guarda la direccion y el codigo postal de la casa, entonces como una matriz es un arreglo de arreglos, lo mas logico seria que nesesitas direcciones de direcciones de las casas, una casa dentro de una casa, una dirreccion dentro de una direccion que apuntan al valor de la matriz
En ese caso la memoria apartada por el "new" no se libera hasta que la computadora se apague y encienda, se supone que siempre es buena práctica usar el delete.
Hola, buenas noches. He estado estudiando, y aprendiendo de tu curso, el cual es muy bueno. Sin embargo, al yo poner en marcha este ejercicio desde mi computadora, me reporta el error: C:\Users\Sebastian\Desktop\Algoritmos sebastian\collect2.exe [Error] ld returned 1 exit status Y el mensaje C:\Users\SEBAST~1\AppData\Local\Temp\ccmJDCCL.o MATRICES DINAMICAS.cpp:(.text+0x30): undefined reference to `mostrar(int**, int, int)' No creo que sea un error tan complicado. Agradecería su consejo. Saludos desde san Cristobal, Venezuela
Quisiera saber qué diferencia habría entre hacer uso de punteros y hacer esto: #include using namespace std; int filas, columnas; int main(){ cout > filas >> columnas; int matriz[filas][columnas];
for(int i = 0; i < filas; i++){ for(int j = 0; j < columnas; j++){ cout
Que puedes usar memoria dinámica, por lo tanto, puedes liberar espacio en el proceso o hacerle cambios durante la ejecución.Esto hace más eficiente tu programa.
💻 Apúntate al curso completo de Programación en C++:
Hotmart: hotmart.com/es/marketplace/productos/programacion-en-c-v0ivo/N78682741H
Gracias por tanto Alejandro, este tema no se lo eh entendido estas ultimas semanas a mi profesor pero tu manera didactica y asertiva de explicar me ah ayudado, ayudó y seguro ayudara a muchos mas. Tu legado sera eterno.
no importa cuanto tiempo haya pasado tu partida siempre me dolera
cout
? wtf de donde sacas eso?
@@rafaelkarim1419 bro el fallecio el año pasado, vivo en el mismo pais que el y salio en las notocias
Amigo que gran lastima, yo soy de mexico y no tengo mucho viendo sus videos para mi uni, en verdad me ha ayudado :c
@@rafaelkarim1419 si bro, siempre lleva su pensamiento a donde vayas "si puedes imaginarlo puedes programarlo " mucha suerte men
Que en paz descanse el muchacho :(
lo que hacemos en vida tiene eco en la eternidad, gracias por dejar un gran legado con tus enseñanzas.
Eras el puto amo.
Gracias, tus videos continúan apoyando a estudiantes.
Era y lo es. Hace un año, ahora, después de un año.
Para los que no entendieron bien como funciona la parte de reservar memoria para la matriz, acá doy mi entendimiento:
/*explicacion aproximada:
1. puntero_matriz = new int*[nfilas];
aca crea las filas, por ejemplo 3: []
[]
[]
2. for(int i=0;i
Descanse en paz maestro.
espera, como?
@@peksn falleció :(
Eres tontísimo
@@nataliapapvillanueva joder :(, bueno, me alegro de que mediante estos vídeos siga de alguna manera vivo, y ayudando a otras personas.
es increible como puede llegar a ayudar con su legado qepd Alejandro. gracias.
Excelentes tus vídeos, y tu manera de explicar. Saludos desde Monterrey :)
Muchisimas gracias,tu canal es de lo mejor,saludos
Eres un dios, me haz salvado ya en varias ocasiones
Empezamos con c, c++ y ahora que siga JAVA, como siempre excelentes videos. Exitos!!!!!
Hola :D claro, cuando finalice el curso de C++, continuaré con Java
como vas? :v
@@promipicode el falleció :´(
Brother ! GRACIAS!!!!!!!!!!!!!!!!!!!! Justo me dejaron un problema de hacer la transpuesta de una matriz de 5x5 con punteros, no tenia ni una maldita idea para hacerlo, vi tu canal y todo salio !! GRACIAS!!!!! Saludos desde Lima-Peru !
Gracias a ti por ver amigo :D Un saludaso (Y) suerte
Mas bien te iba a preguntar si piensas hacer lectura de ficheros???
Así es :) continuaré con arboles y luego con ficheros (Y)
Rayos! Hahaha justo tengo una tarea de lectura de ficheros T-T
gracias grande eres y siempre seras ATS
Gracias por la información, super claro😁👍
Gracias Men donde sea que estés :')
Ya tengo una idea para hacer mi tarea
¡Excelente vídeo! Muy bien explicado, saludos desde México
Muchas gracias Carlos :D Un saludo desde Perú
Osea Ami me encanta programar y definitivamente eres lo mejor.🤗🤗😭😭
Que descanse en paz el gran maestro. Lo único que yo no entendí es porque para reservar espacio en memoria para las columnas en el bucle ponga hasta i menor a número de filas, me enrede ahí, yo creí que pondría hasta i menor a número de columnas.
@@EvaristeG10 creo que porque las filas controlan las columnas
Excelente ejemplo, me ayudo muchisimo, gracias
Según entendí es como la constante tamaño que creaban ejemplo numero[tamaño];
Número es una variable, tamaño es la cantidad de valores. Por ejemplo const int tamaño =5.
Cuando se hace el
Puntero_matriz = new int*[filas]
Se le dice que el valor que tenga fila es lo que debe reservarle de memoria ( o sea guarda una posición de memoria para ese dato que introduciremos.
Con el for
for (int i=0;i
Gracias amigo gracias, me salvo la noche. Tengo que implementar una propagacion de onda en cuda y necesitaba una forma de movere en la ram de forma matricial. Con esto me soluciono todo :3
Explicas muy bien, podrias hacer unos videos dedicado a punteros con pilas colas y listas enlazadas? Saludos, muy buenos tus videos.
Hola :D claro, pronto llegaremos a esos temas, Un saludo desde Perú
Hola Alejandro, muy buenos videos, explicas excelente.
Crees que podrias realizar una explicacion de como llenarias una matriz de arreglos de caracteres?
Gracias, saludos.
Bien :') sigue subiendo ejercicios de matrices
Tome su like buen hombre :)
Muchas Gracias Ale por todo !!! maestro y programador de vocacion ! Excelente tu canal (A favoritos) Abrazo
Él falleció :(
Explicas mejor que la profesora Iris, pero shh es un secreto! jajaja
jaja :D Muchas gracias por el apoyo :) Un saludo desde Perú
@ poto
@@kevinhuanca4113 ¿Cómo? ¿Qué quieres decir con "poto"?
Buen video,me resultó bastante útil,cecyt 14,4IV6,Carlos Mendoza
Excelente explicación gracias
Hasta pronto héroe 😥
muy buen video
aun tengo una duda de hacer una matriz pero con strings el problema es que me como es dinamico no me deja usar las funciones de porque segun me sale es para arreglos no dinamicos
porque lo que yo queria hacer esa poner nombres en esa matriz y ver si estaban en una lista peropor la razon antes mencionadas no puedo comparar arreglos dinamicos con no dinamicosni sirve strcpy para copiarlos
Hola, eliminaste los videos de los cursos de c?
3:25 ese bien solo algo raro :v(por suerte le tengo a diosito para que en mis sueños entienda todo
¿Por qué no eres profesor de mis clases de Programación? :(
ah weh porque ya esta muerto
@@rommel0563 quizas un poco cruel pero meh, ya no puede bloquearme si no esta vivo xd
@@rommel0563 no, de hecho gracias a este tipo aprendi c++ y ahora estoy con java
gracias!! :D
Podes ir preparando videos para JAVA. Por favor
Hola, ¿donde puedo encontrar ejercicios de constructores?
muy buena explicación Gracias
Sirve de algo poner *(*(puntero_matriz+i)+j); a poner puntero_matriz[i][j]?? o solo es comodidad y legibilidad?
Por lo que he visto tras probarlo, realizan exactamente la misma función, y veo muchísimo mejor la segunda forma de expresarlo. En el vídeo él dice que es exactamente lo mismo también, pero que la primera forma de expresarlo es mucho más elegante para él jajaja
Él lo expresa así porque estamos en el tema punteros
de esta forma es como hacerlo procedural. me refiero a cundo ejemplo se crea un mapa y si se cumple determinada condicion sigue creando mapas o terrenos y etc, etc y se borra lo que se creo anteriormente ? de manera que reserva memoria al sistema para crear nuevos terrenos y borrando los que se crearon anteriormente etc.
+Programacion ATS Podrias hacer un parentesis en el curso y ensenar a como usar los header plz
Hola! Me encanta tu curso. Puedes explicarme que es 'reservar memoria' por favor? No lo entiendo muy bien.
🤦♂️
wey ya se murio
Por casualidad tienes un video en donde expliques BFS?
Muy bueno.!
una pregunta, es buena practica declarar variables globales?
Hola :) Depende de la situación, si hay una variable que la vas a tener que utilizar en varias funciones de tu programa, es bueno declararla de forma global. Pero si solo la vas a utilizar en una sola función, mejor declararla local
aaaa okey muchisimas gracias, muy buenas explicaciones en sus videos.
En general, no: es.stackoverflow.com/questions/29177/por-qu%C3%A9-es-considerado-una-mala-pr%C3%A1ctica-utilizar-variables-globales
3:24 no entiendo ese bien si es la voz de alejandro o de quien xd :v
alguien me puede decir por que no ejecuta bien el codigo el programa inicia pero solo me lanza directamente dos numeros el 12 y 34
#include
#include
#include
using namespace std;
void pedirDatos();
void mostrarMatriz(int **,int,int);
int **puntero_matriz,nFilas,nCol;
int main(){
pedirDatos();
mostrarMatriz(puntero_matriz,nFilas,nCol);
for (int i=0;i
qué datos metes?
ya lo he solucionado la cosa era que metia datos grandes entonces eso hacía que no ejecutara bien
oh, qué bueno!
como se puede generar una matriz , con solamente una cuantas constantes
ejemplo
nada mas se tiene los valores de las esquinas
50 50
50 ? ? 100
50 ? ? 100
100 100
este método es gauss-jordan
en encontrar la variación de temperatura en un mallado
pero sin introducir los valores de la matriz , que el programa la genere ?
cual es la configuracion del c++ para que se vea de esa forma? par resaltar los parentesis y simbolos
Descansa en paz Alejandro!
Tengo una duda porque usas varíables globales a diferencia de C donde se usaban las varíables locales y las enviabamos como parámetros?
Tengo la misma duda. Creo que no tiene sentido simplemente se le paso eso. Todo lo demás es correcto. Siento responder 4 años mas tarde ajaj.
Has pensado en utilizar Unreal Engine?
Gran video gracias, oye bro y si quisiera sacar la tramspuesta como le haría?
Para eso tienes que cambiar las filas por columnas y viceversa
No seria necesario pedir las variables en la funcion mostrarMatriz porque los hiciste globales. Gracias por el video
Una pregunta ¿Por qué declaraste al puntero, las filas y las columnas como variables globales?¿Acaso no funcionaría también si los coloco como variables locales?
Gracias
Sí funciona.
@@realNoFAKE-lm2cv Sí funciona, pero sería más laborioso porque en cada función a usar dichas variables las tendría que estar declarando, mejor como dice él si vas a usar una variable en diferentes funciones mejor declarara como global.
Quisiera saber qué diferencia habría entre hacer uso de punteros y hacer esto:
#include
using namespace std;
int filas, columnas;
int main(){
int matriz[filas][columnas];
cout > filas >> columnas;
for(int i = 0; i < filas; i++){
for(int j = 0; j < columnas; j++){
cout
Que puedes usar memoria dinámica, por lo tanto, puedes liberar espacio en el proceso o hacerle cambios durante la ejecución.Esto hace más eficiente tu programa.
Amigo, no se porque, pero al compilar llega al numero x numero cuando pide el numero y se cierra el programa, estuve checando y no veo el problema, me podrian ayudar??
//Ejemplo de matriz dinámica
#include
#include
using namespace std;
//prototipos de funciones
void pedirDatos();
void imprimirDatos(int **, int, int);
//Matriz dinamica
int **puntero_matriz,nFilas = 0, nCol=0;
/*
1 2 3 2 3
4 2 5 2 5
2 2 8 2 8
*/
int main (){
system ("color 4F");
pedirDatos();
imprimirDatos(puntero_matriz, nFilas, nCol);
//Liberar la memoria que usamos en la matriz
for (int i = 0; i < nFilas; i++){
delete [] puntero_matriz;
}
delete [] puntero_matriz;
system ("pause");
return 0;
}
void pedirDatos(){
coutnFilas;
coutnCol;
//Reservando memoria para la matriz dinámica
puntero_matriz = new int *[nFilas]; //Reservando memoria para las filas
for (int i = 0; i < nFilas; i++){
puntero_matriz = new int*[nCol];//Reservando memoria para las columnas
}
cout
PD: Al poner como tu pusiste para guardar memoria en las columnas me dice que no puede cambiar de * a ** y por eso lo puse como int *[nCol]
PD2: No le hagan caso a lo del color xD, estaba invesgando y me entro la curiosidad
Hola :D veo que el problema está al reservar memoria para las columnas, debería ser: puntero_matriz[i] = new int[nCol];
Un saludo :)
Seguramente lo estas poniendo puntero_matriz = new int[nCol]; por eso te sale ese error, si lo pones puntero_matriz[i] = new int[nCol];
Con el [i] funcionará correctamente :)
:O muchas gracias!!! :D
De nada Terror HD :) y gracias por ver los vídeos
Como se haría ceros la diagonal principal de una matriz de punteros??
Ya llevo viendo este video como 10 veces para entender xd :'v
x2
@@andree6237 x3
x5
se que cuesta entender un poco los punteros, solo imagina que cuando asignas un puntero hacia una variable es como si la variable fuera una casa en una ciudad, y el puntero guarda la direccion y el codigo postal de la casa, entonces como una matriz es un arreglo de arreglos, lo mas logico seria que nesesitas direcciones de direcciones de las casas, una casa dentro de una casa, una dirreccion dentro de una direccion que apuntan al valor de la matriz
asu 15 minutos, si se puede xD
Que falta nos haces y nos harás 😭😭😭😭
tengo duda no puse el delete pero aun asi me compila y aparentemente no tiene ningun error
El delete borra la memoria asignada, visualmente no afecta en nada al programa, pero por dentro, se libera espacio de memoria.
Este vídeo está mezclado en la lista de reproducción de C
Hola, alguien me podría decir que pasa en dado caso de que nunca borres memoria cuando utilizas "new"?
solo es curiosidad, gracias xd
En ese caso la memoria apartada por el "new" no se libera hasta que la computadora se apague y encienda, se supone que siempre es buena práctica usar el delete.
@@raquelsanchez7119 no tenía idea, muchas graciass
hola qué tal. Tengo una duda, al liberar la memoria note que la ultima fila no se elimina. ¿Alguien me podría decir cómo solucionarlo?
@Dark Style no sé todabia la respuesta, vi en otro tutoriales y daba el mismo resultado.
Hola, y como sería para una matriz tridimensional?
el programador del vídeo murió haces unos meses
osea que sepone ** por las nfilas n columnas
Se pone ** asteriscos ya que : primero aprendimos a hacer el puntero pero uno nomas y ahora 2 ya que un puntero llama a otro puntero :v
buenas tardes ¿me podrias ayudar a ensanblar matrices con diferentes vectores de pocion gracias
A partir de la 3ra fila, el delete que haz puesto ya no funciona
me pasa lo mismo
Que tengo que poner si las quiero llenar con Caracter
;v
porque es mejor usar esto
*puntero
en vez de esto
puntero[i][j]
Es para poder hacer memoria dinamica sobre la matriz, ademas, de esta forma puedes hacer no solo matrices cuadradas. Es como mas para optimizacion
Hola excelente video, solo tengo un problema. Me marca error en esto
int main() {
int t, **m;
coutt;
m = new int *[t];
for (int i=0;i
man a mi tambien, lo lograste solucionar?
busqué el video porque me olvide de como declarar doble punteros xd
F
Siempre me da un error cuando declaro que el número de filas sea menor al número de columnas
por ke harias eso
te extraño
Porque no pusiste el codigo de matriz dinamica ayuda por fa pasamelo
FLOJO DE MIERDA PROGRAME USTED.
@Dark Style jajajajajajaja
bro :c... ¿por qué te moriste :´c?
Ahorita le pregunto.
Porque diosito quería aprender a programar
No entendí nada
Hola, buenas noches. He estado estudiando, y aprendiendo de tu curso, el cual es muy bueno. Sin embargo, al yo poner en marcha este ejercicio desde mi computadora, me reporta el error:
C:\Users\Sebastian\Desktop\Algoritmos sebastian\collect2.exe [Error] ld returned 1 exit status
Y el mensaje
C:\Users\SEBAST~1\AppData\Local\Temp\ccmJDCCL.o MATRICES DINAMICAS.cpp:(.text+0x30): undefined reference to `mostrar(int**, int, int)'
No creo que sea un error tan complicado. Agradecería su consejo. Saludos desde san Cristobal, Venezuela
Por si no te enteraste, el chico del video fallecio hace ya un tiempo
Descanse en paz maestro.
Quisiera saber qué diferencia habría entre hacer uso de punteros y hacer esto:
#include
using namespace std;
int filas, columnas;
int main(){
cout > filas >> columnas;
int matriz[filas][columnas];
for(int i = 0; i < filas; i++){
for(int j = 0; j < columnas; j++){
cout
Que puedes usar memoria dinámica, por lo tanto, puedes liberar espacio en el proceso o hacerle cambios durante la ejecución.Esto hace más eficiente tu programa.
🤦♂️
F