Título: Invertir un arreglo de enteros en lenguaje C.- Publicado por: NOB2014 en 14 Enero 2014, 22:00 pm Hola.
Esto debe ser sencillo pero no logro resolverlo, el caso es que no me acepta esta línea de código.- Código
Me da el siguiente error, no al compilar sino al ejecutar.- (http://i43.tinypic.com/3444gle.jpg) Código
Bueno espero de vuestra ayuda.- Saludos. Título: Re: Invertir un arreglo de enteros en lenguaje C.- Publicado por: do-while en 14 Enero 2014, 22:07 pm ¡Buenas!
En el segundo bucle, el primer índice es longitud, que está fuera de rango. Debería ser longitud - 1, y la condición de continuidad del for debería ser i >= 0 Cámbialo y nos cuentas como va. ¡Saludos! Título: Re: Invertir un arreglo de enteros en lenguaje C.- Publicado por: ivancea96 en 14 Enero 2014, 22:13 pm El problema es que pusiste unsigned int.
¿Qué número POSITIVO no es mayor o igual a 0? O pones i<longitud+1 o pones int en vez de unsigned int. Título: Re: Invertir un arreglo de enteros en lenguaje C.- Publicado por: amchacon en 14 Enero 2014, 22:24 pm El problema es que pusiste unsigned int. Un consejo NOB2014, no uses variables unsigned si tienes que hacer condiciones. Puede provocar errores extraños si te despistas.¿Qué número POSITIVO no es mayor o igual a 0? O pones i<longitud+1 o pones int en vez de unsigned int. Título: Re: Invertir un arreglo de enteros en lenguaje C.- Publicado por: NOB2014 en 14 Enero 2014, 22:55 pm Hola.
Citar ¿Qué número POSITIVO no es mayor o igual a 0? O pones i<longitud+1 o pones int en vez de unsigned int. De acuerdo, inocente error el mío, i<longitud+1 no me funciona. Quitando unsigned si.- Gracias a los tres.- Saludos. Título: Re: Invertir un arreglo de enteros en lenguaje C.- Publicado por: NOB2014 en 14 Enero 2014, 23:12 pm Hola.
Una consulta más, ¿tiene sentido hacer este mismo código con punteros teniendo en cuenta que el nombre de un arreglo es un apuntador, o el nombre de un arreglo es la dirección del primer elemento que contiene el arreglo?.- Si esto es conveniente necesitaría toda la teoría posible porque estoy estudiando apuntadores y nunca pude resolver esta incógnita, y además ¿sería más conveniente con arreglos de punteros?.- Saludos y gracias.- Título: Re: Publicado por: ivancea96 en 14 Enero 2014, 23:14 pm I<longitud*
Es la forma q veo para usar unsigned. Enviado desde mi ST21i mediante Tapatalk Título: Re: Invertir un arreglo de enteros en lenguaje C.- Publicado por: rir3760 en 15 Enero 2014, 02:09 am ¿tiene sentido hacer este mismo código con punteros Ya los estas utilizando. El operador "[]" es uno binario y requiere que uno de sus operandos (no importa cual) sea un puntero.teniendo en cuenta que el nombre de un arreglo es un apuntador, o el nombre de un arreglo es la dirección del primer elemento que contiene el arreglo? No exactamente.El identificador de un array usualmente resulta en la dirección en memoria de (un puntero a) su primer elemento, por ejemplo al utilizar los operadores "[]" y "*". En tu caso: Código
Una de las excepciones es el operador sizeof, en tu caso: Código Da el resultado correcto porque la primera instancia de "enteros" denota (referencia) al array y resulta en el numero de bytes utilizados para almacenarlo. Un saludo Título: Re: Invertir un arreglo de enteros en lenguaje C.- Publicado por: leosansan en 15 Enero 2014, 20:30 pm Hola. ............................. ¿tiene sentido hacer este mismo código con punteros? ............................................................. Como apunto rir3760 ya lo estas haciendo. Pero para que quede todo como punteros en lugar de declarar la variable copia como un array, tal vez sería más propio, que no obligatorio, declarala como como puntero directamente. Vamos que en lugar de : Código
hacerlo como: Código
Lo del enteros[0] es por complementar. ¡¡¡¡ Saluditos! ..... !!!! (http://st.forocoches.com/foro/images/smilies/aaaaa.gif) Título: Re: Invertir un arreglo de enteros en lenguaje C.- Publicado por: NOB2014 en 16 Enero 2014, 00:33 am Hola.
Muchas gracias a ambos, que lastima que todavía no llegué a estudiar memoria dinámica, creo que viene más allá de los apuntadores.- Saludos. Título: Re: Invertir un arreglo de enteros en lenguaje C.- Publicado por: NOB2014 en 16 Enero 2014, 14:17 pm Ya los estas utilizando. El operador "[]" es uno binario y requiere que uno de sus operandos (no importa cual) sea un puntero. Tengo una duda: ¿Cuando el identificador de un array puede no ser un puntero?(el apuntador constante a el primer elemento del array).- Si me la pudieras aclarar me seria de mucha utilidad.- Saludos Título: Re: Invertir un arreglo de enteros en lenguaje C.- Publicado por: rir3760 en 19 Enero 2014, 17:53 pm Tengo una duda: Los dos casos usuales son cuando este es el operando de los operadores "sizeof" y "&", el otro es cuando una cadena literal es utilizada para inicializar un array. ¿Cuando el identificador de un array puede no ser un puntero?(el apuntador constante a el primer elemento del array).- Si me la pudieras aclarar me seria de mucha utilidad. Un ejemplo con "sizeof" lo tienes en mi mensaje anterior y la explicación en detalle pero en ingles en la pagina 6.3 So what is meant by the ``equivalence of pointers and arrays'' in C? (http://c-faq.com/aryptr/aryptrequiv.html) parte de la comp.lang.c FAQ (http://c-faq.com/index.html). Un saludo |