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

#671
Usa algo así para depurar. Convierte las variables a double a ver que te da el programa cuando falla.
#include <stdio.h>
#include <math.h>

#define obj2bin(obj) execobj2bin(&#obj, sizeof(#obj))

static void execobj2bin(void *obj, size_t size) {
   for(int i = size - 1; i >= 0; --i)
       for(int j = 7; j >= 0; --j)
           printf("%d", ((char*)obj)[i]>>j & 1);
}

int main( void ) {
   int x = 10;
   int y = 2;
   int z = pow(x,y);
   
   printf("10 al cuadrado es igual a %i \n", z );
   printf("x = "); obj2bin(x); puts("");
   printf("y = "); obj2bin(y); puts("");
   printf("z = "); obj2bin(z); puts("");
   
   getchar();
}
#672
Usa la notación de punteros.

Para pasar arrays y tablas usa la notación de arrays y tablas. Para pasar punteros usa la notación de punteros.
#673
Programación C/C++ / Re: ayuda
26 Junio 2017, 23:17 PM
%s no es para adquirir un carácter.
#674
Si has creado los arrays en el main no debes hacerlos de nuevo dentro de una función.
Pero si lo que quieres es pasar un puntero a la función y que ésta lo defina debes pasar un puntero a ese puntero.
Tu duda y el código que has pasado dicen cosas diferentes.
#675
Pues en el segundo malloc, el que corresponde al número de evaluaciones, en vez de multiplicar por alumno lo debes hacer por n.
#676
Fíjate que lo que estás haciendo en este código es una escalera. La nota alumno tendrá alumno entradas. Lo que lleva al siguiente problema:
nota[0] tendrá 0 bytes (indefinido, lo debe resolver el compilador pero ¿y si no lo hace?).
nota[1] tendrá 4 bytes
nota[2] tendrá 8 bytes
etc.

Supongo que te habrán dicho cuántas asignaturas tendrá cada alumno.
#677
Programación C/C++ / Re: Implementar DLL
25 Junio 2017, 14:30 PM
Crea un lanzador que compruebe si el archivo de tu programa y la DLL existen, y todas cuántas comprobaciones que necesites. Si no las encuentra que intente instalarlas en su sitio a partir de tu repositorio. Una vez que está todo correcto que ejecute el programa principal.
#678
Haces preguntas muy complicadas para el nivel que aún te encuentras pues todas ellas son de manejo de memoria.

Los arrays básicos son datos en posiciones consecutivas en la memoria y además son gestionados por el propio lenguaje.

En cambio los basados en objetos no forman parte intrínseca del lenguaje por lo que alguien debe haber programado como obtiene la memoria, como la libera, si va a usar posiciones consecutivas o si estará diseminado por ella.

size_t es un typedef (si aún no sabes lo que es no desesperes, pronto llegarás a ello) sobre un tipo de dato intrínseco en el lenguaje sin signo capaz de ocupar toda una palabra del procesador. Normalmente es un unsigned long int.

register es una palabra clave, ahora en desuso, para indicar al compilador que preferimos que esa variable no vaya a la memoria sino que se quede en un registro del procesador, por ser estos de acceso más rápido y porqué las operaciones con datos se suelen hacen en los registros.

auto es una palabra clave, ahora en desuso, que únicamente existe para mantener la compatibilidad hacia atrás con un antiguo lenguaje de programación, el B. Este lenguaje no tenía tipos de datos y para declarar variables se utilizaba auto. En C auto declara una variable local pero se puede omitir ya que todas las variables que se declaran dentro de un bloque son locales a éste por defecto.
#679
Un ejemplo de lo que te había dicho: controlar la entrada y actuar según lo que te hayan escrito.
#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main() {
   char entrada[255];
   double numero;
   while(1) {
       printf("> ");
       fgets(entrada, 255, stdin);
       char *c = strchr(entrada, '\n');
       if(c)
           *c = '\0';
       entrada[0] = toupper(entrada[0]);
       if(strcmp(entrada, "S") == 0)
           break;
       if(sscanf(entrada, "%lf", &numero) == 1) {
           // Exito con adquirir el número, lo proceso
           printf("%f\n", numero);
       }
       else
           puts("Error en la entrada: Debe ser un numero real o 's' salir.");
   }
   puts("FIN DEL PROGRAMA");
}
#680
Es imposible que la función te funcione. Cómo se suele decir intenta explicar el código a tu abuela. Tú mismo te indicarás los fallos.