Bloque 5.3: Vectores con punteros y Ejemplo

แชร์
ฝัง
  • เผยแพร่เมื่อ 10 ธ.ค. 2024

ความคิดเห็น • 161

  • @sasosan2428
    @sasosan2428 8 ปีที่แล้ว +9

    me han servido mucho tus videos, me he quitado el ADBlock y lo posteo por si alguien gusta hacerlo

    • @TheMarrioser
      @TheMarrioser 7 ปีที่แล้ว

      Yo hice lo mismo, pero para todo youtube, es una forma de agradecerlo.
      Pero igualmente doné un poquito, porque me pareció muy amable y muy útil el canal.
      Lo digo por si alguien se anima también y así que vea que tiene apoyo y continúe con su canal

  • @Jairolooo
    @Jairolooo 10 ปีที่แล้ว +3

    Me ha encantado el video, aunque estos 2 o 3 últimos vídeos si que los tendré que repasar porque lo de los vectores aunque comprendo más o menos cómo funcionan no lo he asimilado del todo, son muchas cosas nuevas. Gracias por los vídeos.

  • @adrifreeskate3289
    @adrifreeskate3289 7 ปีที่แล้ว +2

    Son geniales los vídeos, lo único que he echado de menos es un tutorial (que no se si lo habrá más adelante) en el que expliques los errores que da al compilar, como los llama y a que se suelen deber. Así en vez de buscar las diferencias entre el tutorial y mi código podría intentar ver cual es el fallo.
    Mil gracias! Eres un crack

  • @redl1ner170
    @redl1ner170 8 ปีที่แล้ว +79

    Resumen de este video: vec[i] es lo mismo que *(vec+i). Y el nombre de un vector solo, sin corchetes ni nada, no es más que un puntero a la primera posición del vector.

    • @joserobertoherreracuriel2054
      @joserobertoherreracuriel2054 8 ปีที่แล้ว +7

      Oye tu muy bien, ya había visto dos veces el video y no entendía, hasta que leí tu bendito comentario.

    • @Kazzoi1
      @Kazzoi1 7 ปีที่แล้ว

      ole tu te quiero!

    • @enzo7400
      @enzo7400 6 ปีที่แล้ว +2

      Exacto ! Saber que un vector en realidad es un puntero que tiene almacenada la direccion de memoria del primer elemento del vector y que justamente apunta a ese elemento, aclara varias dudas.
      Para acceder al segundo elemento, avanzas una posicion de memoria, por eso el *(vec+1) que dice: a lo que apunta vec+1. O en el caso del for: *(vec+i).

    • @TheOrphanHatesYou
      @TheOrphanHatesYou 5 ปีที่แล้ว

      Y si quiero guardar un nuevo valor en la misma posición de memoria dentro de una función? Puedo guardar una tabla en la misma variable, pero si intento que mantenga la dirección en la memoria me pone mal uno de los valores int

    • @isailopezmartinez8434
      @isailopezmartinez8434 4 ปีที่แล้ว

      Más sencillo, todos los vectores o arreglos son en si apuntadores., pero se pueden reescribir como un puntero o apuntador

  • @Anynomuos74648
    @Anynomuos74648 9 ปีที่แล้ว +8

    He estado probando y creo que resulta más sencillo poner esto en la parte del sorteo, al menos a mí me ha funcionado, lo pego:
    void loteria (int *v){
    int i,dado;
    for (i=1;i

  • @Camila-do8ot
    @Camila-do8ot ปีที่แล้ว

    me exploto un pcoo le cerebro pero re contra aprendii mil gracias

  • @germantoobe
    @germantoobe 3 ปีที่แล้ว

    Exelentes explicaciónes, gracias y saludos.

  • @antoniollaguno2357
    @antoniollaguno2357 4 ปีที่แล้ว

    exelentes clases de programacion en C++

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  4 ปีที่แล้ว

      Gracias! Aunque recuerda que no es C++, sino C lo que enseño :D

  • @demorootmail673
    @demorootmail673 7 ปีที่แล้ว +15

    Solo que no era necesario hacer un swich
    bastaba con solo *(vec+aux)++;
    asi es mas corto y eficiente

    • @EvaristeG10
      @EvaristeG10 4 ปีที่แล้ว

      No funciona con ++, debes poner +=1

    • @juansimonmerlo6854
      @juansimonmerlo6854 4 ปีที่แล้ว

      @@EvaristeG10 hola, podrías explicarme por qué no funciona con ++?

    • @jorgerosas6037
      @jorgerosas6037 3 ปีที่แล้ว

      Exacto..

  • @santiagoinigo5045
    @santiagoinigo5045 10 ปีที่แล้ว +1

    El video, como todos está muy bien. En el ejemplo del dado sobra el "case", porque siempre la operación es la misma *(vec+aux)++ o lo que es lo mismo *(vec+aux)=*(vec+aux)+1

    • @josuebracho4529
      @josuebracho4529 ปีที่แล้ว

      Eso pense yo tambien, pero si pongo *(vec+aux)++ da error, tiene que ser *(vec+aux)+=1

  • @Kazzoi1
    @Kazzoi1 7 ปีที่แล้ว +1

    como consejo para la gente que este ultimo tema le queda un poco nublado yo me he olvidado de usar los vectores de esta forma y los uso como en el video anterior, por que es la manera que los entiendo perfectamente y total es lo mismo

  • @neurosp
    @neurosp 3 ปีที่แล้ว +1

    Gracias por los punteros , estoy en un curso y lo explican cómo el culo

  • @cesargamboa13
    @cesargamboa13 6 ปีที่แล้ว +3

    /*
    **********************
    Hola amigo, excelente video, creo que el switch no es necesario, aqui esta el codigo de mi version funcionando para el que lo quiera ver ya que algunos comentan que no anda sin el switch.
    Gracias por hacer tan excelentes videos.
    **********************
    Bloque 05.03.02; Calcular la probabilidad de que salga cada uno de los numeros de un dado de 6 lados usando punteros.
    Calcular 10000 iteracciones
    Version de César Gamboa
    */
    #include
    void funcLanzarDado(int v[6]);
    void funcLeerResultados(int v[6]);
    int main()
    {
    int vVector01[]={1,2,3,4,5,6}; //Se va a usar como un contador, cada resultado del dado se le va a sumar 1 a la parte correspondiente
    funcLanzarDado(vVector01); // Se llama a la funcion de lanzar dado con el vector como parametro
    funcLeerResultados(vVector01);
    system("pause");
    return 0;
    }
    void funcLanzarDado(int *v) //Se recibe el vector como parametro peo como se va a tratar con punteros se define con el simbolo '*'
    {
    //Se crea un numero aleatorio
    //Se crea una semilla para captar un numero largo aleatorio
    int aux;
    srand(time(NULL));
    int i;
    for(i=0;i

  • @lilviper7607
    @lilviper7607 3 ปีที่แล้ว +9

    Yo tuve que utilizar las bibliotecas stdlib.h
    , time.h porque me decia que time, rand y srand no estaban declaradas, usando solo stdio.h

  • @Rafael-ix2rk
    @Rafael-ix2rk 9 ปีที่แล้ว

    eres un fiera

  • @lumnt6042
    @lumnt6042 10 ปีที่แล้ว +1

    ¡Excelente!

  • @zalebu
    @zalebu 6 ปีที่แล้ว

    ¿Porqué en el segundo programa, minuto 6:41, imprime salto de linea si en el código no se puso
    ?

  • @jorgeandrescordobamedina8009
    @jorgeandrescordobamedina8009 9 ปีที่แล้ว +2

    ¿podrías hacer ejemplos donde el usuario ingrese el tamaño de la longitud del vector?
    me seria de mucha ayuda gracias! espero me puedas responder si si o si no.

  • @ZUK-DT-em4wf
    @ZUK-DT-em4wf 6 ปีที่แล้ว

    Con lo que me ha enseñado a través de sus vídeos y aprendido de Internet estoy haciendo un juego de batallas por turnos, y lo que quiero lograr es que si un golpe es seleccionado, el rango de daño en la vida sea de entre 10 y 20. A base de mi escasa creatividad he hecho lo siguiente.
    //Número aleatorio.
    #include
    int main (){
    int x;
    int i;
    srand (time(NULL));
    x = rand () % 20;
    for (i=0;i=0&&x=10&&x

  • @Julianes_code
    @Julianes_code 8 ปีที่แล้ว

    que pasa si no usas el condicional switch, es decir a mi parecer no hace falta ya que el numero que arroje la variable aux no va a cambiar mientras el bucle no de otra vuelta, asi que simplemente se le sumara uno a la posicion del vector.

  • @Cris-ru3st
    @Cris-ru3st 4 ปีที่แล้ว

    gracias por el video :) logre entenderlo solo me falto las librerias xd

  • @martinmacola6256
    @martinmacola6256 8 ปีที่แล้ว

    GENIO!

  • @darske1
    @darske1 8 ปีที่แล้ว

    Totalmente innecesario ese switch, si en todos los casos hace lo mismo, hubiera bastado con poner *(vec+aux)+=1; Así se ahorraban un montón de líneas de código y tiempo en comparaciones. Igualmente muy buen trabajo, muy bien explicado todo :)

  • @SUPERKMB1997
    @SUPERKMB1997 7 ปีที่แล้ว

    Disculpe la molestia, no comprendo el porque se utilizan punteros si de todas maneras al modificar los valores de un vector en una funcion los valores se quedan modificados en la funcion main, me explico, hice un programa en el cual cree un vector y le meti como valores el 1,2 y el 3, ademas cree una funcion (llamada fun) en la cual a ese vector se le suma un 5, quedando los valores del vector como 6, 7 y 8, luego imprimi los valores del vector en la funcion fun y me imprimio 6,7,8 luego imprimi los valores del vector fuera de la funcion fun y me sigue dando 6, 7 y 8. No se supone que los punteros son para "extraer" mas de un solo valor de variables utilizadas en una funcion?, entonces si el vector conserva los valores que se le asignaron en la funcion fun , entonces para que se usan los punteros?.

  • @heroe2214
    @heroe2214 8 ปีที่แล้ว

    Hola ante todo queria agradecer sus videos tutoriales, estan muy pero muy bien explicados, realmente con usted estoy aprendiendo mucho. Tengo una duda, ojala usted tenga tiempo y me la responda: Sino me equivoco en el video anterior, usted dijo que los punteros no hacen falta en los vectores, ya que cuando se le pasa como argumento un vector a una funcion, ésta modifica el vector original, o sea no crea una nueva variable en memoria, entonces me surge la duda de por que en este video, se usan punteros en vectores. De vuelta muchas gracias y perdon por el comentario tan largo

  • @luisllorensmompo
    @luisllorensmompo 3 ปีที่แล้ว

    ¿Es preciso el switch? Si quisiera hacerlo con los números de la Loto o del bingo serían muchos case y el código sería larguísimo.

  • @dooby777777777777
    @dooby777777777777 9 ปีที่แล้ว

    He hecho el segundo problema pero sin punteros, ya que me parece mucho más sencillo y me ha permitido ahorrarme código.
    #include
    void dado (int a[]);
    void leer (int a[]);
    int main () {
    int v[6] = {0,0,0,0,0,0};
    dado (v);
    leer (v);
    system ("pause");
    return 0;
    }
    void dado (int a[]){
    srand (time(NULL));
    int i,aux;
    for (i=0;i

  • @MrGrapas
    @MrGrapas 3 ปีที่แล้ว

    cuando sacaste el curso tenía 10 años jaja, y aquí me tienes

  • @elarcademan
    @elarcademan 9 ปีที่แล้ว

    ni te preocupes ya lo e resuelto
    1 necesitaba otras librerias
    2 no abia declarado como flotante la variable
    disculpa la molestia sigo practicando jejeje...

  • @benko-pi1fi
    @benko-pi1fi 9 ปีที่แล้ว

    EXCELENTE

  • @elarcademan
    @elarcademan 9 ปีที่แล้ว

    Hola muy buenas exelente video este cada vez aprendo mas
    e tenido un problemilla con srand y es que estoy en linux y parece
    que se utiliza de otra forma lo buscare en google pero si saves cual es
    te agradeceria que me lo digeces asi no boy dando tumbos por hay jejeje
    muchas gracias un saludo.

  • @hamblinperez3386
    @hamblinperez3386 9 ปีที่แล้ว

    Hola solo tengo una duda se pueden hacer comparaciones entre vectores y matrices y que imprima una matriz resultante sin duplicados ??

  • @iNrelevante
    @iNrelevante 10 ปีที่แล้ว +1

    Tengo una duda:
    Tanto en el printf del segundo ejemplo como en el scanf a la hora de referirte al vector lo pones entre paréntesis ,*(vec+i)),
    he probado sin los paréntesis y no cambia nada. ,*vec+i);
    Me puedes explicar si los paréntesis responden a algún tipo de función o simplemente los pones para aclarar que dentro hay una suma?
    Gracias.

    • @enzo7400
      @enzo7400 6 ปีที่แล้ว

      Mmm no se a que te referis que no cambia en nada. Yo lo veo asi: si haces un printf de *(vec+i) se mostrara el elemento de la primera posicion+i. Por ejemplo si vec={1,5,7} e i=2 se mostrara el 7.
      Por el contrario si haces printf de *vec+i yo pienso que el * solo afecta a vec, por ende, siguiendo el ejenplo anterior, se mostrara la suma del primer elemento del vector ( ya que *vec significa: a lo que apunta vec, y justamente vec es un puntero que tiene almacenada la posicion de memoria del primer elemento del vector) más i, entonces queda: 1+2=3.

  • @Anesar93
    @Anesar93 4 ปีที่แล้ว

    Alguien sabe por que me da error de invalid initializer in function main?

  • @TukaPlay
    @TukaPlay 8 ปีที่แล้ว

    yo lo había hecho todo en una misma función.
    int main (){
    int i;
    int vec[10];
    for (i = 0; i < 3; i++){
    printf (" Introduce un valor para la posicion %i del vector: ",i);
    scanf ("%i",(vec+i));
    }
    i = 0;
    for (i = 0; i < 3; i++){
    printf ("%i ",*(vec+i));
    }
    system ("pause");
    return 0;
    }

  • @cesarwadskier9217
    @cesarwadskier9217 8 ปีที่แล้ว

    hola como hago para imprimir en que posicion del vector se encuentra un numero ya guardado

  •  9 ปีที่แล้ว

    En el caso anterior usted hacía un llamado a la la función con punteros de esta forma: imprimir(&vec); y declaraba la función con punteros así: int imprimir(int *a){};
    Y yo entendía que el a=&vec. Pero ahora veo que es igual pero en vez de poner el &vec al declarar en el main la función,solo le pone "vec". Quisiera despejar esa duda...

  • @robeabraham365
    @robeabraham365 10 ปีที่แล้ว +1

    Exelente!!

  • @Juankam
    @Juankam 7 ปีที่แล้ว

    hola Emilio, tengo una duda, es que en el ejemplo 2 de este video lo intente realizar solo, pero siempre que lo ejecuto me sale algún valor negativo, pero no se si es normal, y muchas gracias he aprendido bastante con tus videos, mira esto es lo que he echo:
    //calcular la probabilidad de que un numero salga en un dado con un vector en 10000 tiros
    #include
    void probabilidad(int *vector);
    void leer(int*vector);
    int main (){
    int vector[]={0,0,0,0,0,0};
    probabilidad(vector);
    leer(vector);

    }
    void probabilidad (int*vector){
    srand(time(NULL)); //es para sacar numeros aleatorios
    int i,a;
    for(i=0;i

  • @ignaciosebastian88
    @ignaciosebastian88 6 ปีที่แล้ว +1

    si pones (vec+i) hace referencia a la direccion de memoria no?. en el caso de ponerle * es el dato que le asignaste a ese puntero?.
    PD: hace falta poner la libreria #include ?.

    • @keinmaster
      @keinmaster 4 ปีที่แล้ว

      También en mi caso tuve que agregar la librería #include

  • @carlaberard1203
    @carlaberard1203 2 ปีที่แล้ว +1

    Buenas, tengo una duda: porqué no se le pone el "&" antes de (vec+i)?

  • @eaomorsa
    @eaomorsa 6 ปีที่แล้ว

    Emilio: Para calcular la probabilidad solo hay que dividir total de éxitos entre total de eventos.

  • @juancarlosrelloso1302
    @juancarlosrelloso1302 3 ปีที่แล้ว

    Hola porque no lo haces que sea real los números aleatorios del 1 al 6 en vez del 0 al 5. Muchas gracias (eres muy bueno, me gustan tus videos un montón)

  • @hernianbedac5804
    @hernianbedac5804 7 ปีที่แล้ว

    Hola Emilio, te hago una consulta: tengo un problema que me impide avanzar con los vectores, no puedo hacer los ejercicios por mi cuenta ya que me tira un error al compilar.
    #include
    int main(){
    int i;
    int vec[] = (1,2,3);
    for (i=0 ; i

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  7 ปีที่แล้ว

      El problema es que no se inicializan los vectores con paréntesis "(", sino con llaves "{".
      Un saludo.

    • @davidcandelaruze
      @davidcandelaruze 6 ปีที่แล้ว +1

      int vec[] = {1,2,3} //tu pusiste (1,2,3)

  • @rauleduardocruzperez7270
    @rauleduardocruzperez7270 9 ปีที่แล้ว

    Hola que tal, una duda o más bien pregunta, *(vec+i) equivale a ¿ vec[i] ? lo hize de las 2 formas y al parecer me sale lo mismo, supongo solamente es para ver el funcionamiento con punteros ¿cierto?

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  9 ปีที่แล้ว

      Raúl Crüez Tienes que volver a verte el video, creo que ahi se explica lo suficientemente bien como para que te quede claro.
      Un saludo.

    • @laloespino240
      @laloespino240 9 ปีที่แล้ว +1

      Turn down for what!

  • @Kazzoi1
    @Kazzoi1 7 ปีที่แล้ว

    uf he notado un salto de dificultad bastante grande en la linea de aprendizaje que llevavamos hasta aqui jeje

    • @Kazzoi1
      @Kazzoi1 7 ปีที่แล้ว

      es curioso lo dificil que es hacer tu trabajo por que en un solo video le dejas claro a todo el mundo como funcionan las cosas y no suele haber preguntas como pasaria en cualquier clase expuesta presencialmente eso pocos profesores del mundo lo logran

  • @FaculocoDj
    @FaculocoDj 8 ปีที่แล้ว

    Uso el programa Zinjai y copie este codigo:
    #include
    #include
    #include
    int main(){
    int i;
    int vec[]=(1,2,3);
    for (i=0;i

  • @leonorrobledo8873
    @leonorrobledo8873 8 ปีที่แล้ว

    hola", yo tengo esto así, pero no sale, ya cambie mil veces las cosas y sigue marcándome errores, que hago?
    #include
    #include
    #include
    #include
    float EDO(float y[],float dydx[]); // prototipo
    int main(){
    float *x,y[10],x0,xf,y0[10],dydx[10],h;
    int i,N, Neq;
    FILE *Archivo;
    Archivo = fopen ("Resultados.txt", "w");
    Neq=10;
    scanf("%i",&N);
    x= (float*)malloc(N*sizeof(float));
    x0=(float*)malloc(N*sizeof(float));
    xf= (float*)malloc(N*sizeof(float));
    x0=0.0; //Valor inicial de la variable independiente
    xf=10.0;
    y0[0]=0.0; //Valor inicial de la variable dependiente
    y0[1]=0.0;
    y0[2]=0.0;
    me dice que tengo tipos incompatibles con float

  • @Javi11Cc
    @Javi11Cc 10 ปีที่แล้ว +2

    Buenas a todos, tengo una duda. Por qué usamos en el ejercicio del dado los punteros? Por ejemplo en esta parte del código pongo el puntero en case4 y no lo pongo en case5 y me compila igual y se ejecuta igual
    case 4:{
    *(v+aux)+=1;
    break;
    }
    case 5:{
    v[aux]+=1;
    break;
    }
    Gracias de antemano

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  10 ปีที่แล้ว +1

      JaviCc Vaya, me has hecho ver mi propio video (lo cual resulta raro), en el minuto 0:40 aproximadamente explico de que va el video y lo que digo es que voy a enseñar una nueva forma para acceder a los datos de un vector... es decir, que son iguales ambas formas, por supuesto.
      Te pediría que en el futuro antes de postear te vieras un par de veces los videos si tienes dudas porque realmente lo suelo explicar casi todo y tras un año y pico, lo que no esta en los videos suele estar en los comentarios del mismo ya contestado. En el caso de que tu duda no este explicada en el video o en los comentarios, sera un placer responderte!
      Un saludo :D.

    • @Javi11Cc
      @Javi11Cc 10 ปีที่แล้ว

      Muchísimas gracias! Lo haré así ^^

  • @yeraipros5
    @yeraipros5 8 ปีที่แล้ว

    No entiendo muy bien para que ponemos el switch, cuando en todas las situaciones se lleva acabo la misma función, he probado a hacerlo sin el switch y da el mismo resultado, así que para que sirve el switch en este caso?

    • @sasosan2428
      @sasosan2428 8 ปีที่แล้ว

      +yerai pros el switch se puede omitir

    • @yeraipros5
      @yeraipros5 8 ปีที่แล้ว

      +Saso San entoces para que lo pone?

    • @sasosan2428
      @sasosan2428 8 ปีที่แล้ว +1

      +yerai pros pues supongo yo que porque son ejercicios de aprendizaje, no necesariamente optimizados y pues si eres principiante de paso prácticas switch .. no creo que muchos se den cuenta de que se puede omitir el switch ya que estamos concentrados en los punteros y operaciones

  • @jesusrubio1633
    @jesusrubio1633 7 ปีที่แล้ว

    El switch ese no nos vale para mucho realmente, no? Al fin y al cabo siempre hará *(vec+aux)++, por lo que no nos hace falta una estructura selectiva (como seria el switch).

  • @RodrigoSantos-ou9oh
    @RodrigoSantos-ou9oh 10 ปีที่แล้ว

    se podria hacer este mismo ejercicio con vectores. pero sin usar punteros?

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  10 ปีที่แล้ว

      Rodrigo Santos Buenas, pues a partir de ahora cuando tengas una duda del tipo, ¿Se podria hacer de tal manera? Lo que tienes que hacer es probarlo, asi es como se aprende a programar de verdad, asi que adelante, prueba y saca tus propias conclusiones y luego, si quieres, puedes compartirlas aqui.
      Un saludo y a seguir aprendiendo!

  • @juanpablomuccillidemaria8167
    @juanpablomuccillidemaria8167 4 ปีที่แล้ว

    Prócer del universo

  • @FranXcoT
    @FranXcoT 8 ปีที่แล้ว

    En que video explicas lo de punteros en funciones? Este es el segundo video que veo de punteros y lo das por entendido, en todo caso, mi duda es en scanf, por que hay que poner vec+i???

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  8 ปีที่แล้ว

      +Franco Taborda Lo mejor es no preguntarlo y buscarlo tu mismo, cada vídeo tiene un titulo y una descripción, por lo que lo podrás ver fácilmente.
      Aquí tienes la lista de reproducción con todos los vídeos:
      th-cam.com/play/PLw8RQJQ8K1ySN6bVHYEpDoh-CKVkL_uOF.html
      Un saludo.

    • @FranXcoT
      @FranXcoT 8 ปีที่แล้ว

      +Empieza A Programar Vi desde el primer vídeo de punteros hasta este vídeo y en ningún lugar dices el porque de lo que te pregunto, lo único que aclaras es que normalmente se pone la posición del elemento que se quiere reemplazar adentro de los corchetes.

  • @mroscardd57
    @mroscardd57 8 ปีที่แล้ว

    Hola! He intentado hacer el ejercicio del algoritmo de la probabilidad introduciendo el numero de iteraciones como parametro de entrada "n", una vez sustituidos los "10000" por "n", cuando lo sustituyo en la variable "x" de probabilidad me da error , ya ponga el punto en el numerador o en el denominador, ¿A alguien se le ocurre que sucede?

  • @firecode5276
    @firecode5276 7 ปีที่แล้ว

    no me sirve la función srand (time(NULL));
    hay otra opción que se lo mismo?

    • @10meloalan
      @10meloalan 7 ปีที่แล้ว

      talvez a esta altura no te sirva pero debes poner otra libreria #include

    • @roisdelythgonzalez4159
      @roisdelythgonzalez4159 7 ปีที่แล้ว

      tengo el mismo problema pero yo ya agregué la libreta stdlib

    • @jorgearroyogonzalez9088
      @jorgearroyogonzalez9088 7 ปีที่แล้ว

      #include
      #include

  • @diyarbakirvasquezsilva3747
    @diyarbakirvasquezsilva3747 10 ปีที่แล้ว

    hola, como seria verificar si un dato existe en un vector y mostrar su posición?

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  10 ปีที่แล้ว +1

      Diyar Bakir Vásquez Silva Pues para eso, tendras que pensarlo tu mismo, si te ves todos los videos de vectores se te ocurrira, ya que es realmente sencillo, pero la gracia de la programacion es pensar en como usar una herramient (C en este caso), no lo contrario.
      Un saludo.

    • @diyarbakirvasquezsilva3747
      @diyarbakirvasquezsilva3747 10 ปีที่แล้ว

      Empieza A Programar lo intenté así
      #include
      int main(){
      int x, i, a[5]= {9,8,7,5,3};
      printf ("indique la posicion del dato q desea ver: ");
      scanf("%i", &x);

      for(i = 0 ; i< 5; i++){
      }
      if(x== a[i]){
      printf("el %i esta en posicion %i", x, a[i]);
      }
      else{
      printf("%i no existe en la lista ", x);
      }
      system("pause");
      return 0;
      }
      no obstante no ocurre lo que busco

    • @andersonloaiza9622
      @andersonloaiza9622 10 ปีที่แล้ว

      Diyar Bakir Vásquez Silva amigo como estas, voy en este video aprendiendo a programar, no se si todavia tengas esta duda igual te dare mis dos posibles soluciones:
      Si lo que quieres es dar una posicion del vector y saber que valor tiene, esta este programa:
      #include
      int main(){
      int x, i, a[5]= {9,8,7,5,3};
      printf ("indique la posicion del dato q desea ver: ");
      scanf("%i", &x);
      printf ("el numero en la posicion %i es: %i
      ",x,a[x]);
      system("pause");
      return 0;
      }
      y el otro ejercicio es saber si un dato existe en un vector y en que posicion esta, hice este programa:
      #include
      int main(){
      int y, i, a[5]= {9,8,7,5,3};
      printf ("introduce un numero para y: ");
      scanf ("%i", &y);
      for (i = 0 ; i < 5 ; i++){
      //printf ("%i, ",a[i]);
      if (y == a[i]){
      printf ("el numero %i introducido para Y si existe y es el numero %i y esta en la posicion %i
      ",y,a[i],i);
      }
      }
      system("pause");
      return 0;
      }

  • @TheSebascasta
    @TheSebascasta 8 ปีที่แล้ว

    existe algun problema si opto por nunca usar los punteros?. pq en serio que no entiendo como se usan :/

  • @chavakseya
    @chavakseya 9 ปีที่แล้ว

    en los ejemplos que salen al principio del video del vec [] = 1,2,3
    me imprime solamente el 2;
    en el siguiente ejemplo me imprime solamente el 8 tengo la vercion mas reciente de dev c++ con el TDM-GCC (pense que tenia que ver con el compilador) y descarge a la vercion que esta e el video con el compilador Mingw e imprime lo mismo ("guarde con nom_archivo.c")

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  9 ปีที่แล้ว

      andrew Osorio Dale al cuarto boton, el de rebuild o reconstruir todo y seguro que no habra problema. Tambien ten en cuenta que estes leyendo bien el vector.
      Un saludo.

    • @danielvr746
      @danielvr746 9 ปีที่แล้ว

      andrew Osorio lo que te pasa es que cuando debes poner printf("%i, ", *(v + i)); y en vez de eso tu le sumas uno en vez de la letra i

  • @Parra116
    @Parra116 ปีที่แล้ว

    Pero como yo hago para disminuir la cargar del vector ?

  • @the_radio_deer
    @the_radio_deer 10 ปีที่แล้ว

    haciendo el mismo codigo ktu me da un error, el numero generado por rand no cambia y me el 100% uno de los numeros.

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  10 ปีที่แล้ว

      Si aun sigue el error pon aqui el codigo, algo debes de tener mal.
      Un saludo.

    • @the_radio_deer
      @the_radio_deer 10 ปีที่แล้ว

      Gracias, pero ya lo sulocione. :)

  • @RaicitoxD
    @RaicitoxD 7 ปีที่แล้ว

    Tengo un serio problema aunque creo que probablemente sea un bug de la versión ya que ami los floats desde que empece no me dan decimales, me dan los números exactos continuados de un punto y ceros ej: 17.00000 no me da decimales, a lo mejor alguien sabe como solucionarlo, gracias de antemano !

    • @saulaxel
      @saulaxel 7 ปีที่แล้ว

      r1nx casi seguro que han sido errores de conversión por hacer operaciones con enteros y guardarlos en floats. El error no de versión sino tuyo.

  • @bydocexx7867
    @bydocexx7867 7 ปีที่แล้ว

    que tengo mal? me salen infinitos numeros
    #include
    void funcion (int *vec);
    void leer (int *vec);
    int main () {
    int vec [3];
    funcion (vec);
    leer (vec);

    system ("Pause");
    return 0;
    }
    void funcion (int *vec) {
    int i;
    for (i = 0; i < 3; i++) {
    printf ("Introduce valor para la posicion %i: ", i+1);
    scanf ("%i", (vec +i));
    }
    }
    void leer (int *vec) {
    int i;
    for (i = 0; 1 < 3; i++) {
    printf ("%i ", *(vec +1));
    }
    }

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  7 ปีที่แล้ว

      Te recomiendo que utilices el depurador en este tipo de casos en vez de preguntar, suele ser mucho mas rapido e instructivo.
      Un saludo.

  • @gustavorangel894
    @gustavorangel894 9 ปีที่แล้ว

    En el resultado todos me dan el mimo numero es decir que no me da la totalidad del 100%
    Aca esta el codigo
    #include
    void sorteo(int *vec);
    void leer(int *vec);
    int main(){
    int vec[] = {0,0,0,0,0,0};
    sorteo(vec);
    leer(vec);
    system("pause");
    return 0;
    }
    void sorteo(int *vec){
    srand (time(NULL));
    int i,aux;
    for(i = 0; i < 10000; i++){
    aux = rand()%6;
    switch (aux){
    case 0:{
    *(vec+aux) +=1;
    break;
    }
    case 1:{
    *(vec+aux) +=1;
    break;
    }
    case 2:{
    *(vec+aux) +=1;
    break;
    }
    case 3:{
    *(vec+aux) +=1;
    break;
    }
    case 4:{
    *(vec+aux) +=1;
    break;
    }
    case 5 : {
    *(vec+aux) +=1;
    break;
    }
    }
    }
    }
    void leer(int *vec){
    int i;
    float x;
    for (i=0; i

  • @facebookwhatsapp2155
    @facebookwhatsapp2155 8 ปีที่แล้ว

    el uso de los punteros para no ocupar mucha memoria verdad?
    con eso se optimiza el trabajo

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  8 ปีที่แล้ว +1

      Entre otras cosas, es para no ocupar mucha memoria, exactamente, si tienes una cosa en memoria y lo puedes usar desde varios lugares diferentes (por ejemplo varias funciones diferentes), te ahorras tenerlo de forma repetida, por lo que ahorra memoria y tiempo de volver a crearlo.
      Un saludo.

  • @cosck
    @cosck 7 ปีที่แล้ว +1

    no era necesario el switch (aux)con solo poner *(vec+aux) +=1; en un solo renglón era suficiente.

    • @Kazzoi1
      @Kazzoi1 7 ปีที่แล้ว

      supongo que lo hizo para que la gente recordara el switch ya que hace muchos videos que no a puesto un ejemplo!

  • @ermitoba7620
    @ermitoba7620 7 ปีที่แล้ว

    Hola, en el primer ejemplo que pones, a mí solamente me imprime el segundo número, lo he repasado 20 veces y he usado el depurador, y no encuentro la solución. Alguien me puede ayudar?
    #include
    void funcion (int *vec);
    void imprimir (int *vec);
    int main(){
    int vec[3];

    funcion (vec);
    imprimir (vec);
    system ("pause");
    return 0;
    }
    void funcion (int *vec){
    int i;
    for (i = 0 ; i < 3 ; i++){
    printf ("Introduce un valor para la posicion %i: ",i+1);
    scanf ("%i", (vec+i));
    }
    }
    void imprimir (int *vec){
    int i;
    for (i = 0 ; i < 3 ; i++){
    printf ("%i ",*(vec+1));
    }
    }

    • @mauricioalejandro2938
      @mauricioalejandro2938 4 ปีที่แล้ว

      En tu función de imprimir, tienes *(vec+1), en lugar de *(vec+i)

  • @paolahinostroza6659
    @paolahinostroza6659 8 ปีที่แล้ว +4

    acá me perdí :(

  • @bubbango
    @bubbango 8 ปีที่แล้ว

    Hola a todos. ¿Podrían ayudarme en una duda que me surgió? Mi duda es que si puedes poner el "case" en un bucle, en un switch.
    Saludos, gracias.
    #include
    void operation (int *v, int *n);
    void imprimir (int *v, int *n);
    int main (){
    int n;
    printf ("Introduce de cuantos numeros estamos parlando y te daré la probabilidad: ");
    scanf ("%i", &n);
    int v [n];
    operation (v, n);
    imprimir (v, n);
    system ("pause");
    return 0;
    }
    void operation (int *v, int *n){
    srand (time(NULL));
    int i, aux, j;
    for (i = 0 ; i < 10000; i++){
    aux = rand ()%*n;
    switch (aux){ /*AQUIII+/
    for (j = 0 ; j < *n ; j++){ /*AQUIII+/
    case 0 + j: { /*AQUIII+/
    *(v+aux) += 1; /*AQUIII+/
    break; /*AQUIII+/
    }
    }
    }
    }
    }
    void imprimir (int *v, int *n){
    int i;
    float x;
    for (i = 0; i < *n ; i++){
    x = (*(v)*100) / 10000;
    printf ("La probabilidad de que el numero %i salga es de: %f.
    ",i+1, x);
    }
    printf ("
    ");
    }

  • @DanielGonzalez-uz7ki
    @DanielGonzalez-uz7ki 9 ปีที่แล้ว

    tienes algún tutorial de como hacer números aleatorios sin repetirse
    ?

    • @110SEBA15
      @110SEBA15 9 ปีที่แล้ว

      +Daniel Gonzalez La unica forma que se me ocurre a mi. Es ir guardando los aleatorios en un vector. y compara si todos los elementos guardados que tiene el vector son distintos al nuevo numero generado. si es asi, que guarde. Sino que de otra vuelta.

  • @2222agustin
    @2222agustin 8 ปีที่แล้ว

    me sale esto:
    warning: implicit declaration of function 'time' [-Wimplicit-function-declaration]
    error: expected ';' before numeric constant

    • @2222agustin
      @2222agustin 8 ปีที่แล้ว

      USO CODE BLOCKS

    • @2222agustin
      @2222agustin 8 ปีที่แล้ว +1

      YA ESTA me falto el #include

  • @angeltavarez3180
    @angeltavarez3180 9 ปีที่แล้ว

    se me habia olvidado el twich cuando me puse a hacerlo xD

  • @elarcademan
    @elarcademan 9 ปีที่แล้ว

    a se me olvidaba el codigo al final te pongo los mensages de error del compilador
    #include
    void sorteo(int *vect);
    void imprimir(int *vect);
    int main(void){
    int vect[] = {0,0,0,0,0,0};
    sorteo(vect);
    imprimir(vect);
    return 0;
    }
    void sorteo(int *vect){
    srand(time(NULL));
    int i, aux;
    for(i = 0; i < 10000; i++){
    aux = rand()%6;
    switch(aux){
    case 0:{*(vect+aux) += 1;break;}
    case 1:{*(vect+aux) += 1;break;}
    case 2:{*(vect+aux) += 1;break;}
    case 3:{*(vect+aux) += 1;break;}
    case 4:{*(vect+aux) += 1;break;}
    case 5:{*(vect+aux) += 1;break;}
    }
    }
    }
    void imprimir(int *vect){
    int j, x;
    for(j = 0; j < 6; j++){
    x = (*(vect+j)*100)/10000.;
    printf("La probabilidad de que el numero %d salga es de %f:
    ", j+1, x);
    }
    }
    ejercisio_27.c: En la función ‘sorteo’:
    ejercisio_27.c:19:2: aviso: declaración implícita de la función ‘srand’ [-Wimplicit-function-declaration]
    ejercisio_27.c:19:2: aviso: declaración implícita de la función ‘time’ [-Wimplicit-function-declaration]
    ejercisio_27.c:23:3: aviso: declaración implícita de la función ‘rand’ [-Wimplicit-function-declaration]
    ejercisio_27.c: En la función ‘imprimir’:
    ejercisio_27.c:38:3: aviso: formato ‘%f’ espera un argumento de tipo ‘double’, pero el argumento 3 es de tipo ‘int’ [-Wformat]
    La compilación ha terminado con éxito.
    y se compila con exito XD

    • @addfilm
      @addfilm 9 ปีที่แล้ว

      EL ARCADEMAN En la funcion imprimir declaraste x como entero (int), tenes que declararla como float. En el printf de imprimir pusiste %d y tenias que poner %i. La advertencia de srand no se por que es. Suerte.

    • @elarcademan
      @elarcademan 9 ปีที่แล้ว

      ok gracias %d tambien imprime enteros no se a que se deve pero asi me lo enseñaron en un curso que hice. no se enfocaba en c pero vimos un poquito, en ese momento usaba linux y siempre use %d. si que e declarado mal x muchas gracias

    • @addfilm
      @addfilm 9 ปีที่แล้ว

      Es cierto, error mio. Se puede usar %i y %d. Gracias por avisar.

    • @elarcademan
      @elarcademan 9 ปีที่แล้ว

      Ho! no gracias ati

  • @NicboChetaIiI
    @NicboChetaIiI 3 ปีที่แล้ว

    alguien me explica por que no funciona mi codigo?
    #include
    #include
    #include
    #include
    void sorteo (int *vec);
    void leer(int *vec);
    int main(){
    int vec[]={0,0,0,0,0,0};
    sorteo(vec);
    leer(vec);
    printf("Hola");
    system("pause");
    return 0;
    }
    void sorteo(int *vec){
    srand(time(NULL));
    int i, aux;
    for(i=0; i

  • @frankjobs7113
    @frankjobs7113 5 ปีที่แล้ว

    No entendí porque hacerlo con el switch.. yo lo hice sin el.
    #include
    void sorteo(int *vec,int tope, int iter);
    void muestravectorpointer(int *vec, int tope,int iter);
    int main(){
    int v[]={0,0,0,0,0,0},x=6,it=10000;
    sorteo(v,x,it);
    muestravectorpointer(v,x,it);

    system("pause");
    return 0;
    }
    void sorteo(int *vec,int tope, int iter){
    srand(time(NULL));
    int i,c,l;
    for (c=1;c

  • @jorgeb2789
    @jorgeb2789 7 ปีที่แล้ว

    Para que haces el swich si todos llevan la misma sentencia, no es inutil?

  • @isailopezmartinez8434
    @isailopezmartinez8434 4 ปีที่แล้ว

    En las partes importantes de explicación y dudas acentúas mucho la s y no entiendo :,c.

  • @javierfuentes1804
    @javierfuentes1804 9 ปีที่แล้ว

    me da un error aqui srand(time(NULL)); para ver cual es el error ke tengo
    #include
    void sorteo(int *vec);
    void leer(int *vec);
    int main()
    {
    int vec[]={0,0,0,0,0,0};
    sorteo(vec);
    leer(vec);
    return 0;
    }
    void sorteo(int *vec)
    {
    srand(time(NULL));
    int i,aux;
    for(i=0;i

  • @harlesepc5906
    @harlesepc5906 2 ปีที่แล้ว

    Lastima que no tuvo en cuenta el zoom...las letras salen muy pequeñas.

  • @agus0
    @agus0 9 ปีที่แล้ว

    No entiendo que sentido tiene el "switch(aux)" en el procedimiento "sorteo()"....

  • @redl1ner170
    @redl1ner170 9 ปีที่แล้ว +1

    A mi entender la estructura switch no hace falta....

    • @dooby777777777777
      @dooby777777777777 9 ปีที่แล้ว

      +ngoeslink Eso pensé yo, pero lo intente hacer y me daba problemas así que lo he hecho sin punteros. Lo acabo de poner en un comentario por si te interesa.

    • @Julianes_code
      @Julianes_code 8 ปีที่แล้ว

      +ngoeslink es verdad no hace falta, creeria yo que seria mas eficiente por que el programa no tendria que entrar en los condicionales.

    • @jesusrubio1633
      @jesusrubio1633 7 ปีที่แล้ว

      +LuisG Que bonito encontrarte en un comentario de youtube jajaja. Yo no usé el switch ni en notación puntero ni en vector y me iba de perlas

  • @flatolingo
    @flatolingo 5 ปีที่แล้ว

    Tengo una duda técnica, ¿porque hacemos todo el rato (vec+1) si el direccionamiento es a nivel de byte y un "integer" son 2 bytes (16 bits)? si haces +1 te vas al siguiente byte que no coincide con el principio del siguiente entero. (Esto si ocurre con los "char" ya que ocupan 1 byte cada carácter en memoria)

    • @kevinmaciel3409
      @kevinmaciel3409 2 ปีที่แล้ว

      Porque el puntero sabe a que tipo de dato esta apuntando, por lo cual al sumarle 1 se mueve a la siguiente direccion teniendo en cuenta el tipo de dato del puntero

  • @edkaem259
    @edkaem259 8 ปีที่แล้ว

    Estoy volando en esta webada de punteros, alguien podría decirme porque no funciona mi programa, se los agradecería.
    #include
    void puntero (int *vec);
    void ayuda (int *vec);
    int main (){
    int vec[3];
    puntero(vec);
    ayuda(vec);
    system ("pause");
    return 0;
    }
    void puntero (int *vec){
    int i;
    for (i=0; i

    • @joseluisgasconarias6034
      @joseluisgasconarias6034 8 ปีที่แล้ว

      +Edkaem te falta la librería stdlib

    • @edkaem259
      @edkaem259 8 ปีที่แล้ว

      +Luis Gascón Disculpa pero como llamo a esa librería que dices ?

    • @joseluisgasconarias6034
      @joseluisgasconarias6034 8 ปีที่แล้ว +1

      #include
      te recomiendo leer más sobre las librerías

    • @Zoroark1999
      @Zoroark1999 8 ปีที่แล้ว +2

      +Edkaem En el void puntero, en el scanf a vec no se le suma 1, sino i.

  • @edkaem259
    @edkaem259 8 ปีที่แล้ว

    No enseñaste para que servía el switch, y ahora lo usas, la verdad es que me perdí en casi todo el problema, haberlo de nuevo nomas.

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  8 ปีที่แล้ว +7

      +Edkaem Enseñe para que sirve el switch en el bloque 2. Por favor, tienes que verte todos los vídeos antes de comentar que no lo entiendes.
      Un saludo.

    • @edkaem259
      @edkaem259 8 ปีที่แล้ว

      +Empieza A Programar Lo veré inmediatamente :D, disculpa por la molestia.

    • @mekmekmek2019
      @mekmekmek2019 8 ปีที่แล้ว

      No te preocupes, en este vídeo el switch sirve para nada... : )

  • @xXdeathnoteXx961
    @xXdeathnoteXx961 8 ปีที่แล้ว

    los punteros no se declaran ? no entendi una mierda :C

    • @sasosan2428
      @sasosan2428 8 ปีที่แล้ว

      +jonathan quiñonez si se declaran

  • @javierfuentes1804
    @javierfuentes1804 9 ปีที่แล้ว

    les agregue esas librerias y ahora me da error en todos los casos alguien que me eche una manito..
    #include
    #include
    #include
    void sorteo(int *vec);
    void leer(int *vec);
    int main()
    {
    int vec[]={0,0,0,0,0,0};
    sorteo(vec);
    leer(vec);
    return 0;
    }
    void sorteo(int *vec)
    {
    srand(time(NULL));
    int i,aux;
    for(i=0;i

    • @soniaframis7425
      @soniaframis7425 9 ปีที่แล้ว

      cambia la libreria #include por #include suerte!

  • @condor1294
    @condor1294 8 ปีที่แล้ว +1

    yo puse de esta manera pero no me compila podrias ver el error y corregirlo ?
    #include
    void sorteo (int *vec){
    void leer (int *vec){
    int main (){
    int vec []={0,0,0,0,0,0};
    sorteo(vec);
    leer(vec);
    system ("pause");
    return 0;
    }
    void sorteo (int *vec){
    srand(time(NULL));
    int i,aux;
    for (i=0; i

    • @FaculocoDj
      @FaculocoDj 8 ปีที่แล้ว

      #include
      #include
      #include
      #include
      void sorteo (int *vec);
      void leer (int *vec);
      int main (){
      int vec[6];
      vec[0]=0;
      vec[1]=0;
      vec[2]=0;
      vec[3]=0;
      vec[4]=0;
      vec[5]=0;

      sorteo(vec);
      leer(vec);
      system ("pause");
      return 0;
      }
      void sorteo (int *vec){
      srand(time(NULL));
      int i,aux;
      for (i=0;i

    • @eliasmartinez530
      @eliasmartinez530 6 ปีที่แล้ว

      despues del numero de cada CASE, va dos puntos no punto y coma, ej: case 1:

  • @carlossantaella139
    @carlossantaella139 8 ปีที่แล้ว +1

    amigo tu explicacion no estuvo muy acertada por ejemplo nunca explicastes xq pones 0s en las 6 posiciones o por que cuando se le suma 1 a los valores de *(vec+aux) da como resultado un numero determinado cuando en la variable del vector cuando la declarastes pusistes puros 0 eres un exlente profesor la mayoria de tus videos los e entendido pero no des por hecho que los que ven los videos los entienden porfavor habemos personas q estamos comenzando y queremos aprender

    • @skary1023
      @skary1023 8 ปีที่แล้ว +2

      +Carlos Santaella "habemos" creo que te equivocas de palabra

    • @yeraipros5
      @yeraipros5 8 ปีที่แล้ว +2

      +Carlos Santaella yo estoy empezando a aprender y eso que dices que no explica, si lo hace y a mi parecer se entiende todo a la perfección.

    • @carlossantaella139
      @carlossantaella139 8 ปีที่แล้ว

      mmmm entiendo, ya yo no estoy en ese nivel pero sigue aprendiendo (y)

    • @Criticalgraphics
      @Criticalgraphics 8 ปีที่แล้ว +1

      +Carlos Santaella creo que es sentido comun 0 es el numero inicial y le sumas 1 cada vez

    • @CraftMyMe
      @CraftMyMe 7 ปีที่แล้ว

      Ni la ortografía.

  • @jahazielvictoriano8663
    @jahazielvictoriano8663 4 ปีที่แล้ว

    ¡Excelente!