elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Mensajes
Páginas: 1 ... 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [38] 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 ... 161
371  Programación / Programación C/C++ / Re: Proyecto final C++ en: 23 Agosto 2018, 20:43 pm
No se hacen tareas.
Expón lo que tienes y te aclaramos dudas puntuales.
372  Programación / Programación C/C++ / Re: Motivos violacion de fichero 'core' generado en: 21 Agosto 2018, 14:15 pm
Intento de leer/escribir en una zona de memoria que el S.O. no ha asignado a tu programa.
373  Programación / Programación C/C++ / Re: Pasar código de c++ a C en: 20 Agosto 2018, 12:35 pm
En C no existeix públic: ni private: todo es público.
Las estructuras no tienen métodos, éstos son funciones de ámbito global que deberán tener como uno de sus argumentos un puntero a la estructura con la que van a interactuar.
Es normal que las funciones hagan referencia en su nombre al tipo de dato con que van a interactuar.

He hecho unos arreglillos para que se trabajen con los datos de la estructura. En tu código original no usabas los datos de la clase, sino unos floats globales y sólo usabas los métodos. De igual forma si se definen en orden oportuno las funciones en un único archivo no hace falta escribir los prototipos.

Código
  1. #include <stdio.h>
  2.  
  3. typedef struct {
  4.    float numeroA;
  5.    float numeroB;
  6.    float numeroC;
  7. } calificacion;
  8.  
  9. void calificacion_pedirnumeros(calificacion *cal) {
  10.    printf("Escribe el primero numero : ");
  11.    scanf("%f", &cal->numeroA);
  12.  
  13.    printf("Escribe el segundo numero: ");
  14.    scanf("%f", &cal->numeroB);
  15.  
  16.    printf("Escribe el tercer numero: ");
  17.    scanf("%f", &cal->numeroC);
  18. }
  19.  
  20. float calificacion_operacion(calificacion *cal) {
  21. return (cal->numeroA + cal->numeroB + cal->numeroC)/3;
  22. }
  23.  
  24. void calificacion_mostrar(calificacion *cal) {
  25.    printf("El promedio es: %f\n", calificacion_operacion(cal));
  26. }
  27.  
  28. int main() {
  29.    calificacion c1;
  30.    calificacion_pedirnumeros(&c1);
  31.    calificacion_mostrar(&c1);
  32. }
374  Programación / Programación C/C++ / Re: no lo entiendo en: 19 Agosto 2018, 14:23 pm
Cada vez que haces getchar debes introducir un carácter y por cada bucle tienes dos: uno en el argumento while y otro en su cuerpo.

En el argumento de while escribe: (caracter=getchar())!='\n'
quita toda la linea de getchar del cuerpo.
375  Programación / Programación C/C++ / Re: ¿Parar un bucle for pulsando una tecla? en: 19 Agosto 2018, 00:16 am
Intentando resolver tu problema me he encontrado con que la solución es más sencilla, en Windows:
https://msdn.microsoft.com/es-es/library/windows/desktop/ms646301(v=vs.85).aspx

resultando el siguiente código  (no lo mires si quieres hacerlo tu mismo):



Código
  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4. int main() {
  5.    for(unsigned i=0; !(GetKeyState(0x44)&0x80); ++i)
  6.        printf("%i\n", i);
  7. }
  8.  
376  Programación / Programación C/C++ / Re: ¿Parar un bucle for pulsando una tecla? en: 18 Agosto 2018, 02:23 am
En C no hay una entrada directa desde el teclado. Hay un buffer, algo así como un contenedor, que se va llenando a medida que se van pulsando teclas y el lenguaje cuándo captura las entradas del teclado lo que hace es sacar del buffer lo que se ha ido introduciendo en el mismo orden.

Por otra parte C es un lenguaje próximo a la máquina así que depende mucho de cómo funcione el hardware, en su defecto, de cómo lo gestione el sistema operativo.

De normal lo que hace el sistema operativo es si le han pedido algo desde el teclado y el buffer está vacío detendrá el programa hasta que alguien pulse una tecla, entonces entregará esa tecla pulsada, la mostrará por pantalla y continuará con la ejecución el programa. Pero este comportamiento se puede cambiar y eso es lo que muestran los dos enlaces que te he pasado: allí el programa seguirá corriendo aún haya petición y el buffer esté vacío. También, si se va llenando no existirá aviso sino que en el momento que se pida una tecla pulsada ésta se entregará si hay petición. Y de hecho esto es lo que buscas en tu programa.

Pero me quedo con lo que te ha dicho NEBIRE: sigue aprendiendo el lenguaje, quizás con programas más básicos que no requieran estos efectos. Una vez lo domines podrás escalar de nivel. Ya ves que C depende de en qué máquina te encuentres. Otros lenguajes son más portables porque todo el framework que los soporta los ha alejado mucho de la máquina, en cambio C es un lenguaje muy básico y su framework es básicamente el sistema entero.
377  Programación / Programación C/C++ / Re: ¿Parar un bucle for pulsando una tecla? en: 18 Agosto 2018, 00:13 am
getch es  una forma de conseguir una tecla sin que se detenga el programa para que el usuario haga la entrada, es decir, si no se produce una pulsación el programa continua, y si se produce el programa continuará y getch te retornará que se ha pulsado. Además no producirá eco en la pantalla.

Implementación para windows:
https://helloacm.com/modern-getch-implementation-on-windows-cc/

Implementación para linux:
https://stackoverflow.com/questions/7469139/what-is-equivalent-to-getch-getche-in-linux
378  Programación / Programación C/C++ / Re: ¿Parar un bucle for pulsando una tecla? en: 17 Agosto 2018, 22:26 pm
Para eso debes cambiar el modo de trabajo del terminal. En el compilador de Borland eso lo hacía getch pero puedes emularlo. Busca en Google, o por el foro ya que también se ha tocado este tema, cómo emular getch en windows o linux, según sea tu sistema operativo.
379  Programación / Programación C/C++ / Re: Buffer i saltos de linea en C en: 16 Agosto 2018, 14:44 pm
No te acostumbres a usar fflush(stdin), n ofunciona en todos los compiladores.

En tu primer ejemplo scanf captura solo los números pero se detiene antes del \n.
En el buffer que da \n.
Cuando capturas con scanf el carácter se encuentra con \n y lo saca del buffer, pero como no lo muestras no se ve el salto de línea. scanf ha hecho su trabajo, ha sacado un carácter el buffer así que retorna con éxito, y el programa continua mostrando con el printf.

En tu segundo ejemplo scanf captura solo los números pero se detiene antes del \n.
En el buffer que da \n.
Con fflush(stdin) vacías el buffer de entrada, así que al ejecutar de nuevo scanf para capturar un carácter, éste detendrá el programa para que el usuario llene el buffer.
380  Programación / Programación C/C++ / Re: Imperativo, POO y funcional en lenguaje C? en: 15 Agosto 2018, 21:35 pm
C es imperativo, así que sin problemas.
Para trabajar de forma funcional debes tener cuidado de que tus finciones no modifiquen otros datos del programa: nada de pasos por referencia. De igual forma debes pensar en los bucles como funciones recursivas.
En C no se puede trabajar con POO, no tiene capacidad para ello.
Páginas: 1 ... 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [38] 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 ... 161
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines