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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  DUDA-Programación en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: DUDA-Programación en C  (Leído 2,192 veces)
mariota1

Desconectado Desconectado

Mensajes: 4


Ver Perfil
DUDA-Programación en C
« en: 20 Octubre 2012, 10:52 am »

ENUNCIADO: Escribir un programa en C que calcule la nota media de tres alumnos. Las notas se encuentran en el fichero notas.txt. El resultado se debe añadir al final del mismo fichero con la siguiente frase:"La nota media de los tres alumnos es..."

El codigo que yo escribo es el siguiente:

#include <stdio.h>

main()
{

      FILE *F;
      int x,y,z,r;
     
     
   
     
      F=fopen("notas.txt","a");
     
      fscanf(F,"%d",&x);
      fscanf(F,"%d",&y); 
      fscanf(F,"%d",&z);
     
      r=x+y+z/3;
     
      fprintf(F,"\nLa nota media de los tres alumnos es: %d",r);
     
      fclose(F);
     
      getch();
     
}


Y el resultado en el fichero de notas.txt es:

4 9 8
La nota media de los tres alumnos es: 2865719



No entiendo porque me da ese resultado, supuestamente la media de los 3 es: 7.

Si alguien sabe cual es mi error porfavor que me lo haga saber cuanto antes. ¡Mil gracias!


En línea

Slava_TZD
Wiki

Desconectado Desconectado

Mensajes: 1.466

♪ [8675309] ♪


Ver Perfil WWW
Re: DUDA-Programación en C
« Respuesta #1 en: 20 Octubre 2012, 11:55 am »

Código
  1. r=x+y+z/3;

Orden de las operaciones

Código
  1. F=fopen("notas.txt","a");

Función fopen

Saludos


En línea


The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.
mariota1

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: DUDA-Programación en C
« Respuesta #2 en: 20 Octubre 2012, 12:04 pm »

Código
  1. r=x+y+z/3;

Orden de las operaciones

Código
  1. F=fopen("notas.txt","a");

Función fopen

Saludos


Lo siento, pero me has dejado nada claro... soy principiante en esto y si no me ofreces una respuesta mas directa, no soy capaz de entender lo que me quieres decir. Aun así gracias por las molestias.
En línea

maxim_o

Desconectado Desconectado

Mensajes: 186


Ver Perfil
Re: DUDA-Programación en C
« Respuesta #3 en: 20 Octubre 2012, 13:19 pm »

r=(x+y+z)/3;

y lo de la abertura del fichero te ha remitido a una pagina donde te explica un poco los ficheros... Una vez lo abres antes de hacer nada y de leer del fichero tendras que ver si se ha abierto bien , etc...
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: DUDA-Programación en C
« Respuesta #4 en: 21 Octubre 2012, 03:03 am »

Como solucionar el calculo del promedio ya lo respondió maxim_o (faltaban los paréntesis).

En cuanto a la apertura del archivo te piden que realices dos operaciones: lectura de los tres números y escritura del promedio. Eso no lo puedes hacer con el modo "a" ya que este es un modo de escritura.

Debes utilizar el modo "a+" ya que este permite realizar operaciones de escritura (siempre al final del archivo) y de lectura (siempre indicando primero la posición desde donde se lee). Eso en detalle en el vinculo que te indicaron.

Parte de las modificaciones a tu programa:
Código
  1. /* Se abre el archivo en modo "agregar" (mas lectura) */
  2. F = fopen("notas.txt", "a+");
  3.  
  4. /* Para colocarnos al principio del archivo (Lectura) */
  5. rewind(F);
  6.  
  7. /* Lectura de los tres valores */
  8. fscanf(F, "%d", &x);
  9. fscanf(F, "%d", &y);
  10. fscanf(F, "%d", &z);
  11.  
  12. r = (x + y + z) / 3; /* Division entera (no hay decimales) */
  13. fprintf(F, "La nota media de los tres alumnos es: %d\n", r);
  14.  
  15. fclose(F);

También debes evitar el uso de funciones de la biblioteca conio de Borland como "getch", mas información sobre ello en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda programación
Programación General
Franki 5 3,916 Último mensaje 15 Mayo 2010, 11:34 am
por Kase
Duda de programacion
Dudas Generales
Dimitrixs 2 2,712 Último mensaje 8 Agosto 2011, 23:52 pm
por sepan
[Duda] programacion en c
Programación C/C++
gonpiar 4 2,711 Último mensaje 4 Marzo 2012, 23:37 pm
por rir3760
duda de programacion web
Desarrollo Web
nprio 3 2,292 Último mensaje 29 Abril 2012, 03:09 am
por engel lex
Duda en programacion en c
Programación C/C++
Razoritoback 1 1,458 Último mensaje 13 Enero 2013, 14:33 pm
por 0xDani
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines