|
642
|
Programación / Programación C/C++ / Re: PROBLEMA!!! algoritmo conversor de struct a int, me devuelve 0
|
en: 2 Enero 2018, 20:11 pm
|
Cómo bien dice engel lex tienes un problema en la construcción del for: Tú quieres que busque el final de la cadena, pero no debes dar el literal '\0', el programa no sabe que tú pretendes que busque eso. En verdad necesitas la función strlen, esa sí que da el tamaño de una cadena y es lo que pretendes. La siguiente instrucción del for es la condición de continuación y allí casi nunca debes usar una asignación, que es lo que haces con un solo símbolo de igual. En su lugar la condición debe ser 'mientras i sea Mayor o igual a 0', es decir i >= 0. Por último, como te ha dicho engel lex, dentro del for ocultas la g del main con otra variable con el mismo nombre (g) así que cada vez que el programa pase por ahí en realidad creará esa variable nueva, le asignará un valor y la destruirá antes de empezar el siguiente bucle. Para evitar eso quita el tipo a la asignación, es decir: en vez de int g=f... Quita int y que quede g=f...
Por último recuerda que no podrás crear nunca un número más grande que lo que quepa dentro de un int. Si le pasas una valor muy grande a tu función te encontrarás con un valor extraño a la vuelta de la función.
|
|
|
644
|
Programación / Programación C/C++ / Re: Problemas valor Variable
|
en: 2 Enero 2018, 13:05 pm
|
La implementación de los números depende del compilador, es decir, un montón lo puede tratar como un int, igual que long long. Lo único que te asegura el estándar, si no recuerdo mal es que un long nunca será más pequeño que un int, igual que un short nunca será más grande que un int. Y un int, de normal, tendrá el mismo tamaño que la palabra del procesador, aunque ahora un compilador C sobre 64 bits trabaja con int de 32.
Hay librerías, tanto de terceros como del sistema operativo, o según qué compiladores también las llevan, que definen tipos de datos que aseguran que son del tamaño buscado, para saltarse esas licencias que se dan los diseñadores de compiladores.
|
|
|
645
|
Programación / Programación C/C++ / Re: C: liberar memoria: pointer being freed was not allocated
|
en: 2 Enero 2018, 01:21 am
|
Cuando asignes memoria comprueba siempre que se ha logrado porque podría ser que mallo falle y free no encuentre tal asignación. También puede ser que durante el transcurso del programa hayas reasignado matriz a otra cosa. De todas formas, no lo sé pues no he visto el código completo, antes de liberar matriz debes liberar el resto de elementos que lo componen.
Sigo: En el segundo mallo, en que asignas memoria para los elementos de matriz, cuando das el tamaño del sizeof debe ser un int, no un int * Además en C, a diferencia de C++, no necesitas hacer el casting al dato devuelto por malloc, C ya lo infiere del contexto.
|
|
|
648
|
Programación / Programación C/C++ / Re: ejercicio " calcular la diferencia "
|
en: 31 Diciembre 2017, 00:57 am
|
Pues, a parte de que hay unas cuantas cosas mal: main debe ser siempre int y no hay apertura de llaves en main, el programa no hace lo que dice el enunciado, a saber: · array de 10 enteros introducido a mano en el código · encontrar la diferencia entre el mínimo y el máximo (¿no será entre el máximo y el mínimo?)
|
|
|
|
|
|
|