Se explica para que sirven y la utilizacion de Malloc y Realloc con un ejemplo de Vector Dinamico que elimina los valores que tiene repetidos y reajusta su tamaño.
Пікірлер: 79
@miguelangelmartinezcasado89356 жыл бұрын
POR FIIIIIIIN ME HA SALIIIIIDOOOOOO. Por dios, he estado atascado, pensando que no entendia Malloc ni Realloc, pero NO, el problema era un error de escritura, casi me vuelvo loco. Por fin vuelvo a la carga a verme tus videos, esperate que en un par de meses, acabo este curso ;). Muchas gracias por tus videos y mucho apoyo!!!
@AlejandroCosta19824 жыл бұрын
La verdad que seria un placer tenerlo como profesor. Con sus videos y sin interactividad con los visitantes, logra llegar a los puntos de ignorancia sobre el tema, que tenemos los que empezamos de cero. Con sólo ver una vez cada video, pude lograr a la primera crear vectores y matrices dinámicas. Con un nivel de complejidad alto para mi "NADA" de conocimientos. Los videos anteriores me parecieron fáciles. Se nota su experiencia con alumnos. Felicitaciones y gracias por compartir. Quiero aprender a programar PICs en C. Pero claro, primero tenía que aprender C y me topé con Ud. que se convirtió en uno mis profesores favoritos. Saludos desde Buenos Aires...
@atzayacatzintorres38884 жыл бұрын
Una pregunta, ¿para qué sirve el código que ya estaba? que habla de el por el min. 12:22.
@marktulsoto86853 жыл бұрын
@@atzayacatzintorres3888 El metodo "aleatorio" solo llena el vector con numeros aleatorios que pueden ser entre 0 y 2.
@Mental_Vision8 ай бұрын
ya es tu profesor online en todo lo que sube a su canal jajaj
@sergionidhas5 жыл бұрын
El warning es porque en la línea 15 te falto un puntero en el primer int osea tiene que ser vector = (int*)malloc(N*sizeof(int)); ya lo tenias pero al explicar lo borraste, por cierto , gracias muy buen video
@AlejandroCosta19824 жыл бұрын
Venía a decir lo mismo. No podía prestar atención al resto del video. Me molestaba ese * que faltaba. 😜
@ahmetsaykal4683 жыл бұрын
ne
@gabrii_ro22282 жыл бұрын
lo sabia
@alejandrosauraseo9 жыл бұрын
En un par de días, me has resuelto dudas que ningún profesor me había dejado claras y por ello te doy las gracias. Eres muy bueno y procuraré seguirte en la medida de lo posible. Un saludo y gracias por compartir estos videotutoriales.
@frankjobs71134 жыл бұрын
Me tomó varias horas y tratar de resolver el problema, lo hice primeramente con vectores, me costo bastante establecer la logica y en una parte en la q me travé recoorte 5 papelitos para verlo de una forma mas visual. ahi comprendi cosas q se me pasaban en la codificacion. Una vez teniendo clara la forma de operar procedi a realizarlo con punteros. pondre las dos resoluciones un poco orgulloso del logro mas q por ponerlo. Devo decir q al hacerlo con punteros salto q el algoritmo no funcionaba bien y tuve q volver a pensarlo una vez resuelto porsegui con punteros, cuando termine de hacerlo y continué viendo el video observe q las formas en q resolvimos el problema fue la misma. lo cual resulto muy interesante. saludos emilio. //Con vectores -------------------------------------------------- int main() { int N=20, i, j; int vector[N]; aleatorio(vector,N); for (i=0; i
@flordurante34549 ай бұрын
Excelentes tus tutoriales, super didácticos, gracias por compartirlos!
@emilioortega94877 жыл бұрын
Gracias por los videos
@emersonpalaciootalvaro26324 жыл бұрын
gracias excelente ejemplo
@RodrigoEsquivel2210 жыл бұрын
Estan muy buenos los videos, me sirvieron mucho para programación y algoritmos. Lo que no me quedo muy claro es el algoritmo que diseñaste para comparar los elementos del vector (al comienzo del video cuando reescribís un valor sobre otro). Muy buen aporte para los estudiantes. Saludos..
@germantoobe3 жыл бұрын
Cuando borraste los punteros de ejemplo del primer int le borraste los dos en lugar de dejar uno; por eso debe ser el warning, genial el vídeo, saludos.
@user-eo5ew1ue3i Жыл бұрын
Emilio tío esto es facilísimo, complícame la vida un poco. pd: gracias por estos vídeos, están bárbaros
@EmpiezaAProgramar Жыл бұрын
Cuando te pasas a Java y aprender la programación orientada a objetos veras el siguiente paso en la escala de complicación xD
@fedecereda Жыл бұрын
explicas muy bien, quizás un poco difíciles los ejemplos pero muy bueno el curso en general.
@aureliojosemunozrios92616 жыл бұрын
Gracias pana.
@manuelsiete93762 жыл бұрын
Excelentes temas, tengo la siguiente pregunta.- Es recomendable usar realloc en caso de que el vector resultante es mas grande que el original?
@maryta223 жыл бұрын
Gracias :)
@kevinender54097 жыл бұрын
muy claro para los q tienen ciertos conocimientos previos..pero para comenzar a progrmamar ...mmmmm!!!!
@EmpiezaAProgramar7 жыл бұрын
Este es el bloque 7.2, hay casi 40 videos previos, jejeje, esta pensado para enseñar solo que son el malloc y el realloc. Un saludo.
@G16Luis7 жыл бұрын
si el usuario quiere asignar un valor a una posicion determinada del vector seria asi: scanf("%i", *(arreglo + i)); o me equivoco en algo?
@G16Luis7 жыл бұрын
esque me pidieron un codigo en la escuela pero no me sale y no encuentro el error: #include #include int main(){ //FILE* archivo; int i = 0, aux = 1, *arreglo; char tecla; //archivo = fopen("datos.txt", "w"); arreglo = (int*)malloc(aux * sizeof(int)); //if(archivo == NULL){ // printf("El archivo no fue creado"); // exit(-1); //} //else{ // printf("El archivo 'datos.txt' fue creado CORRECTAMENTE "); //} do{ printf("Ingrese un registro: "); scanf("%i", *(arreglo + i)); // Segun yo aqui no debe de tener el & ¿o si? printf("Quieres ingresar otro registro? (s = si, n = no): "); do{ fflush(stdin); scanf("%c", &tecla); if((tecla != 's' && tecla != 'S') && (tecla != 'n' && tecla != 'N')){ // Para que solo pueda yngresar n, N, s y S printf("%c", 07); printf("Intente de nuevo: "); } }while((tecla != 's' && tecla != 'S') && (tecla != 'n' && tecla != 'N')); if(tecla == 's' || tecla == 'S'){ arreglo = (int*)realloc(arreglo, aux++); } }while(tecla == 's' || tecla == 'S'); printf(" "); while(i < aux){ printf("%i, ", *(arreglo + i)); i++; } printf(" "); system("pause"); return 0; }
@siefex96994 жыл бұрын
Cuando haces el realloc no se lo deberias guardar en un auxiliar de la variable "vector" ? en caso de que no encuentre lugar y pierda los datos
@HorckunHarotTutoriales6 жыл бұрын
Buenas, Supongo que ya lo sabrás pero el Warning fue porque sin querer borraste el puntero del entero en el malloc del vector. Saludos.
@javiperezcano20499 жыл бұрын
Un short int si ocupa 2 pero no es el caso. Un saludo
@EmpiezaAProgramar9 жыл бұрын
Javi Pérez Cano Realmente no puedo decirte porque el compilador da un numero u otro, puede que el compilador de Dev C++ no cumpla el estandar, pero lo que si que te digo seguro es que un int se concibio para que tuviese 2 bytes y que llegase al numero maximo de (2^16)/2, que son 32 mil y pico... prueba a meterle un numero mayor de 64mil, a ver que si almacena correctamente el numero. Creo que esta es la mejor solucion para salir de dudas. Un saludo.
@javiperezcano20499 жыл бұрын
Y x que al compilar imprime 4?
@agustinlyon81733 жыл бұрын
Ugh no logro entender el codigo de cuando hay que eliminar los datos repetidos, me hace mucho ruido. No lo veo claro :(
@enmanuelcolina42032 жыл бұрын
Mi mente explotó
@ahmetsaykal4683 жыл бұрын
cok iyi
@leonardobatista74705 жыл бұрын
Creo que el tercer bucle que usas, no es necesario sólo podías aumentar la j a una posición más y luego refrescarla en el valor actual. Bueno eso pienso yo 😅 además estoy aprendiendo. Solo es mi opinión gracias👍👋
@Astromanbaker9 жыл бұрын
Llevo un par de días buscando información al respecto y de verdad que el video me ha resuelto muchas dudas, ya que en mi caso tengo que hacer una estructura (fichas de clientes) los cuales no se cuantos pueden ser y a la vez una de las variables de la estructura serán facturas ( las cuales irán incrementando) al igual que la estructura de clientes. En mi caso el procedimiento sería igual? Pero en vez de disminuyendo incrementando con N++ ?
@elkaesar268 жыл бұрын
el warning segun wikipedia es porque antes de usar malloc debemos usar una funcion llamado casting. es.wikipedia.org/wiki/Malloc
@AlejandroCosta19824 жыл бұрын
Eso es en C++ . cito: " Se requiere el uso del casting en C++ debido al fuerte sistema de tipos, mientras que éste no es el caso de C." (Ya se que pasaron >3 años, pero para no confundir al que lea su comentario).
@icarvs73 жыл бұрын
macho
@joseantoniovargasserrano73363 жыл бұрын
Alguien me podría guiar en la función void aleatorio que usa
@adriancaraballo30316 жыл бұрын
Un dato INT no es de tamaño 4 bytes? aclrame esa duda bro, y muy buen video.
@AlejandroCosta19824 жыл бұрын
short int = 2 bytes = 16 bits.
@agustinroman10742 жыл бұрын
Depende la arquitectura del SO
@mihaelarcebaldo53618 жыл бұрын
Por qué te compiló el programa si al primer (int) de la línea 15 no le pusiste (int*) como supuestamente se debe hacer?
@EmpiezaAProgramar8 жыл бұрын
+Mihael Arce Baldo Para este tipo de cosas los simpsons lo explicaron muy bien: kzbin.info/www/bejne/gpnTgZmhpbR2es0 Ya fuera de bromas, es erróneo tal como yo lo hice, pero como lo que tu haces es reservar memoria, pues mientras que no reserves menos de la que ocupas, no debes de tener ningun problema, simplemente estas reservando espacio de mas que nunca va a ser utilizado. Otra posible explicación es que el compilador se de cuenta y optimice el tamaño, esto ultimo no lo puedo asegurar puesto que no se en detalle como funciona el compilador de C (existen varios diferentes y creeme que entender como funciona un compilador no es naaaaada sencillo). Un saludo.
@feriasTopG6 жыл бұрын
Amigo tengo una duda para que sirve la libreria time.h Grasias por tus videos son muy buenos pero cada vez se ba poniendo dificil
@PipeFelpe5 жыл бұрын
para los numeros random
@samuelalegre79093 жыл бұрын
En que video explicaba como crear un número random
@juangarcia-pe9ql4 жыл бұрын
7 años despues sigue salvando, deberias ser santo
@alejandrocervantes81853 жыл бұрын
6:13
@carlossantaella1398 жыл бұрын
una pregunta y espero me puedas responder por que en vez de poner el REALLOC no pusistes simplemente este codigo for(i = 0 ; i < E ; i++){ printf("%i, ",*(vec+i)); } printf(" ");
@AlejandroCosta19824 жыл бұрын
realloc asigna una nuevo valor al espacio de memoria asignado previamente al vector. Lo que expones en tu comentario es para mostrar por pantalla los valores asignados en el vector (printf) y NO para asignar nuevo espacio de memoria. (Ya se que pasaron >3 años, pero para no confundir al que lea su comentario).
@alansalmeron23598 жыл бұрын
En el video de matrices dinamicas no pusiste un puntero en donde en este video en el minuto 7:00 dices que va, entonces nadamas se ponen en los tipos de datos? por ejemplo: si es una matriz dinamica **m1, se asignaria asi el valor?: m1 = (int**)malloc(tamaño*sizeof(int*)); no se le pone un puntero menos en esta parte que dandoasi: *m1 = (int**)ma...... ???
@Leandro-np1uk4 жыл бұрын
y si el primer elemento del vector es igual al ultimo? de donde saco el siguiente numero para reemplazar? ahí me mato ! Saludos
@guillermonoemax4 жыл бұрын
Cuando escribis en el min 14:40 (* (vector+i) == *(vector+j)) que significa los *. Y como funcionan la busqueda de elementos en el vector a travez de la suma de posicion como por ej vector+j
@pablolecocq55064 жыл бұрын
No sé si seguirás queriendo una explicación, pero aquí te dejo una: Básicamente "vector" contiene una direccion de memoria y al otorgarle el * es lo mismo que decirle "lo que hay dentro de", es decir, *(vector+1) devuelve lo que hay dentro de la la direccion de memoria almacenada en "vector" + 1. Porqué el +1? Porque cuando haces el malloc o creas un array, la memoria reservada está "alineada". La direccion de memoria de vector + 1 es la contigua a vector, y la de vector + 2, es la contigua la de vector +1...
@pablolecocq55064 жыл бұрын
Bueno te referías a vector + i, pero es el mismo principio
@mynormeza499710 жыл бұрын
Para usar realloc se tiene que ultilizar malloc primero por ley? osea q no se puede usar realloc cuando se asigna un vector con cantidad N de la manera tradicional?
@EmpiezaAProgramar10 жыл бұрын
Noop, siempre primero un malloc o calloc (en el siguiente video se explica) y despues se podra hacer un realloc... sino siempre usariamos un realloc xD!!
@mynormeza499710 жыл бұрын
Cierto! :D Gracias, exelente canal sigue asi!
@lucgpg5 жыл бұрын
A veces imprime 3 y otras veces imprime 1 o 2 valores (después de hacer realloc) ¿es normal?
@luisalbertomunoz36434 жыл бұрын
a mi me hace exactamente lo mismo
@mrhiggjins3 жыл бұрын
No puede ser normal
@joelayllon94412 жыл бұрын
Claro que sí es normal, para eso sirve el 'srand', para sacar un valor 'random', es decir, aleatorio.
@ahmetsaykal4683 жыл бұрын
el van
@ahmetsaykal4683 жыл бұрын
ne
@xadrianc8 жыл бұрын
He hecho el programa y me tira un error de windows al ejecutar, copio mi codigo porque veo todo identico... a ver si alguien me ayuda: (El depurador me dice que el error salta en el bucle de impreson del vecotor redimensionado, pero no se por que, en el da un error de segmentacion) #include #include #include void aleatorio (int *vector, int N); int main(){ int i, j, k; int N = 10; int *vector; vector =(int*)malloc(N*sizeof(int)); //asigna un tamaño al vector dinamico if(vector == NULL){ printf("No se ha podido reservar espacio de memoria para el vector- "); } else{ aleatorio(vector, N); for(i=0; i
@xadrianc8 жыл бұрын
Ya he encontrado mis dos errore: 1-: en el segundo if puse: if(vector = NULL) en lugar de if(vector == NULL){ 2- if((vector+1)==(vector+j)) confundi la i con un 1 y solo me imprimia un termino la segunda vez if((vector+i)==(vector+j)) Todo ok!
@franciscoabad63793 жыл бұрын
@@xadrianc Increible lo que un solo signo puede hacer A mi me pasó lo mismo
@javiperezcano20499 жыл бұрын
La explicacion es incorrecta. Un Int son 4bytes
@EmpiezaAProgramar9 жыл бұрын
Javi Pérez Cano Pues lo cierto es que es correcto, son 2 bytes o 16 bits.Aqui puedes leerlo en la wikipedia:en.wikipedia.org/wiki/C_data_types Un saludo.
@clakoclakson8 жыл бұрын
+Javi Pérez Cano El dato será incorrecto, pero la explicación, además de correcta me parece excelente!
@leoreichert546 Жыл бұрын
No terminaste de explicar realloc, la verdad me desiluciono, porque seria bueno aprender C desde un canal tan completo, pero me gusta saber como funciona cada cosa y solo hiciste un ejercicio innecesario y no explicaste el funcionamiento de realloc.