Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - MAFUS

#571
No hace falta que sean contadores diferentes, puedes seguir incrementando el mismo. También tienes isalpha que discrimina letras, pero ahora no sé si con el correspondiente locales en español también le entran acentos y eñes.
#572
Mira si tienes sprintf, que es igual a printf pero en vez de a la salida estándar el resultado va a un buffer tipo char* o lo haces a mano con módulos, divisiones y sumas en un for.
#573
Debe poner algo más que ese error. El problema no es el compilador, es el enlazador que no encuentra una referencia. Tal vez la biblioteca estándar no esté bien instalada y no la encuentra, o no esté configurado su path.
#574
Te recomiendo la librería ctype.h. Tiene funciones para discriminar letras, números, caracteres imprimibles, etc.
Tú programa solo busca espacios; una tabulación, signos o números serán cobrados como letras.
#575
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.
#576
Ya que estás tras C++ puedes usar la librería bigint,en sourceforge hay unas cuantas, o buscas int64 para tu S.O., hay muchas páginas que indican cómo usar eso.
#577
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.
#578
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.
#579
Recuerda liberar el array en el destructor.
#580
Programación C/C++ / Re: problema al ejecutar
31 Diciembre 2017, 18:39 PM
Este es el famoso problema de que debes vaciar el buffer después del scanf para sacar el \n antes de adquirir el siguiente dato.
Después del scanf escribe
while(getchar()!='\n');