|
351
|
Programación / Programación C/C++ / Re: Invertir un arreglo de enteros en lenguaje C.-
|
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
|
|
|
353
|
Programación / Programación C/C++ / Re: Invertir un arreglo de enteros en lenguaje C.-
|
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.-
|
|
|
355
|
Programación / Programación C/C++ / Invertir un arreglo de enteros en lenguaje C.-
|
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.- //for(i=longitud; i>=0; i--,j++)
Me da el siguiente error, no al compilar sino al ejecutar.- #include <stdio.h> #include <string.h> int main(void){ unsigned int enteros[]={15,12,28,18,05,33,21},i=0, longitud=0, copia[7], j=0; longitud = sizeof enteros / sizeof *enteros; for(i=0; i<longitud; i++){ } //for(i=longitud; i>=0; i--,j++){ for(i=longitud; i>0; i--,j++){ copia[j] = enteros[i]; } for(i=0; i<longitud; i++){ } return 0; }
Bueno espero de vuestra ayuda.- Saludos.
|
|
|
357
|
Programación / Programación C/C++ / Re: Limpieza de buffer de teclado en lenguaje C.
|
en: 13 Enero 2014, 00:54 am
|
Hola. Por favor me podrían probar el programa para que me digan si encuentran algún error, estoy totalmente obnubilado y necesito de mentes frescas para que constaten si definitivamente no los tiene (más allá de que se ingresen 100 dígitos).- #include <stdio.h> #include <stdlib.h> void limpiar(char[], int); int main(void){ unsigned int ok=0, longitud=0, i=0, ch=0; char numeroChar[100] = ""; do{ printf("\n\n Ingrese un entero (maximo 9999)....:"); fgets(numeroChar , 100, stdin ); longitud = strlen(numeroChar ); i=0; if(longitud >=4){ limpiar(numeroChar, longitud); } longitud = strlen(numeroChar ); printf("\n\n Ingresaste..: %s", numeroChar ); printf("\n\n 0 para continuar otro para salir....:"); }while(ok==0); return 0; } void limpiar(char numeroChar[], int longitud){ int i=3; while(++i < longitud){ if(i==4){ numeroChar[4] = '\0'; } if(i>4){ numeroChar[i] = ' '; } } }
Desde ya muchas gracias.- Saludos.
|
|
|
358
|
Programación / Programación C/C++ / Re: Limpieza de buffer de teclado en lenguaje C.
|
en: 11 Enero 2014, 23:06 pm
|
Hola vangodp. Por el momento solo me limito a leer y no tengo argumentos para disentir en ciertas cosas por el poco tiempo que tengo estudiando C.- Sólo voy a hacer unas pequeñas observaciones: En primer lugar tengo leído que la única función que debo utilizar para leer cadenas es fgets y más en este caso que necesito un máximo restringido de caracteres ingresados.- En segundo lugar si ingreso 12345678 el resultado es incorrecto.- Luego de lo observado el programa funciona muy bien.- De cualquier manera en este instante encontré la solución.- #include <stdio.h> #include <stdlib.h> int main(void){ unsigned int ok=0, ch=0, c=0, longitud=0; char numeroChar[7] = ""; do{ printf("\n\n Ingrese un entero....:"); fgets(numeroChar , 5, stdin ); longitud = strlen(numeroChar ); do{ if(ch == 0) break; numeroChar[longitud-1] = '\0'; printf("\n\n Ingresaste..: %s -----> longitud = %d", numeroChar , longitud ); printf("\n\n 0 para continuar otro para salir....:"); }while(ok==0); return 0; }
Saludos.
|
|
|
359
|
Programación / Programación C/C++ / Limpieza de buffer de teclado en lenguaje C.
|
en: 11 Enero 2014, 18:16 pm
|
Hola. Cuando ingreso más de 3 cifras todo funciona a la perfección, pero si ingreso menos de 4 el programa se queda detenido en el bucle while de limpieza de buffer de teclado, es como cuando tiene algo para leer (más de 3 cifras) todo funciona Ok .- #include <stdio.h> #include <stdlib.h> int main(void){ unsigned int ok=0, ch=0, longitud=0; char numeroChar[7] = ""; do{ printf("\n\n Ingrese un entero....:"); fgets(numeroChar , 5, stdin ); longitud = strlen(numeroChar ); numeroChar[longitud-1] = '\0'; printf("\n\n Ingresaste..: %s -----> longitud = %d", numeroChar , longitud ); printf("\n\n 0 para continuar otro para salir....:"); }while(ok==0); return 0; }
Bueno espero que me ayuden porque hace 2 días que estoy googleando y practicando y no logro la solución y por favor un poco de teoría del porqué.- Saludos.
|
|
|
360
|
Programación / Programación C/C++ / Re: Pasar de cadena(char) a entero(int) sin sobrepasar el máximo permitido.
|
en: 9 Enero 2014, 13:34 pm
|
Hola leo. …..nos hubiéramos ahorrado trabajo.
Mil disculpas.- if(longitud-1 == 11 && numeroChar[0] >= 2){ i=1; } Muy bien, muchas gracias grave error el mio y lo estoy revisando porque me parece que hay otro.- ….no inicializas la variable numero a cero Esta parte no la entiendo, lo voy a analizar, en crudo te diré que el paso de la variable a la función es para pasarla como valor y no como referencia (*ptrNumero ) para no destruir los datos que contiene, decime por favor tu conclusión.- Saludos.
|
|
|
|
|
|
|