soulsitg Posted July 13, 2012 Report Share Posted July 13, 2012 (edited) hola necesito ayuda urgente.necesito leer un archivo con notas y ingresar notas faltantes y no sobreescribir notas que ya estan puestas como realizo esto en lenguaje C les dejo mi compilado y la tarea.[hide]La tarea consiste en escribir un programa en C que permita llevar el control de las calificaciones de los ramos de un alumno durante un semestre.Lo anterior significa que el programa debe ser capaz de registrar y modificar calificaciones de las asignaturas que tiene el alumno y entregar opciones para que se calculen las notas finales cuando todas las calificaciones estén registradas.Considere que el máximo de asignaturas a manejar es 6 y que el máximo de calificaciones por asignatura es 10. Cada asignatura requiere un número de calificaciones (cada una con su respectiva ponderación) para determinar la nota final.El programa debe ser capaz de realizar las siguientes tareas:· Cargar las asignaturas, ponderaciones y calificaciones desde un archivo de texto.· Realizar modificaciones, eliminaciones y cambios de cualquier especie.· Grabar asignaturas, ponderaciones y calificaciones hacia un archivo de texto.· Leer el archivo y ingresar notas que no fueron ingresada y no sobreescribir notas que estan guaradada[/hide][spolder] #include <stdlib.h> #include <stdio.h> typedef struct{ char asignatura[10]; int nota[6]; int pond[4]; int promedio; }Notas; typedef struct{ char nombre[10]; char rut[12]; Notas notas[2]; } Alumno; int main(void) { float notas[100],pond[100], moda, mayor, menor, promedio = 0; int N, i, j, encontro, mayorRepeticion = 0; { int opcion,cont,i,c,w,posicion,Contacto; Alumno arreglo_alumnos[100]; cont = 0; FILE *fuente; fuente=fopen("fuente.txt","r+"); //leer el archivo txt fuente.txt if (fuente==NULL)//verifico si el archivo txt se abrio o se creo exitosamente printf("Error al Abrir el Archivo n"); //imprimo el mensaje de error else{ fread(&c, sizeof(Contacto), 1, fuente); do{ printf("nMenu de Opcionesn"); printf("1.Ingresar Datos del Alumno n"); printf("2.Mostrar Datos del Alumno n"); printf("3.Salir n"); printf("nn"); printf("ingrese opcion : "); scanf("%d",&opcion); switch (opcion) { case 1: { printf("Ingreso Alumnon"); if(cont < 99) { printf("Nombre Alumno : "); gets(arreglo_alumnos[cont].nombre); gets(arreglo_alumnos[cont].nombre); printf("Rut Alumno : "); gets(arreglo_alumnos[cont].rut); printf("Asignatura 1 : n"); printf("Nombre Asignatura : "); gets(arreglo_alumnos[cont].notas[0].asignatura); printf("Cantidad de notas?:_"); scanf("%d",&N); for(i = 0; i < N ;i++){ printf("Ingrese la nota %d: ",i + 1); scanf("%f",¬as[i]); printf("Ingrese la %d ponderacion: ",i + 1); scanf("%f",&pond[i]); cont = cont + 1; } mayor = menor = notas[0]; for(i = 1; i < N ;i++){ if(notas[i] > mayor){ mayor = notas[i]; } if(notas[i] < menor){ menor = notas[i]; } } for(i = 0; i < N ;i++){ encontro = 0; for(j = i-1; j >= 0 && encontro != 1; j--){ if(notas[i] == notas[j]){ encontro = 1; } } if(encontro == 0){ encontro = 1; for(j = i + 1; j < N; j++){ if(notas[i] == notas[j]){ encontro++; } } if(encontro > mayorRepeticion){ mayorRepeticion = encontro; moda = notas[i]; } } promedio = promedio + notas[i]; } printf("nPromedio de notas: %.2fn",promedio/N); printf("Moda: %.2fn",moda); printf("Maxima nota: %.2fn",mayor); printf("Minima nota: %.2fn",menor); if (promedio >= 40) { printf("La asignatura fue APROBADA!");} else { printf("La asignatura fue REPROBADA!"); } printf("nnn"); printf("Asignatura 2 : n"); printf("Nombre Asignatura : "); gets(arreglo_alumnos[cont].notas[0].asignatura); printf("Cantidad de notas?:_"); scanf("%d",&N); for(i = 0; i < N ;i++){ printf("Ingrese la nota %d: ",i + 1); scanf("%f",¬as[i]); printf("Ingrese la %d ponderacion: ",i + 1); scanf("%f",&pond[i]); cont = cont + 1; } mayor = menor = notas[0]; for(i = 1; i < N ;i++){ if(notas[i] > mayor){ mayor = notas[i]; } if(notas[i] < menor){ menor = notas[i]; } } for(i = 0; i < N ;i++){ encontro = 0; for(j = i-1; j >= 0 && encontro != 1; j--){ if(notas[i] == notas[j]){ encontro = 1; } } if(encontro == 0){ encontro = 1; for(j = i + 1; j < N; j++){ if(notas[i] == notas[j]){ encontro++; } } if(encontro > mayorRepeticion){ mayorRepeticion = encontro; moda = notas[i]; } } promedio = promedio + notas[i]; } printf("nPromedio de notas: %.2fn",promedio/N); printf("Moda: %.2fn",moda); printf("Maxima nota: %.2fn",mayor); printf("Minima nota: %.2fn",menor); if (promedio >= 40) { printf("La asignatura fue APROBADA!n"); } else { printf("La asignatura fue REPROBADA!n"); arreglo_alumnos[cont].notas[1].promedio = (arreglo_alumnos[cont].notas[1].nota[0] + arreglo_alumnos[cont].notas[1].nota[1] + arreglo_alumnos[cont].notas[2].nota[2]) / 3; } } else { printf("Imposible completar operaciÛnn"); } } case 2: { if(opcion == 2){ printf("Ingrese el numero de lista del alumno : "); scanf("%d",&posicion); if(posicion-1 < cont) { printf("Datos del alumno : n"); printf("Nombre Completo : %s n", arreglo_alumnos[posicion-1].nombre); printf("Nombre Completo : %s n", arreglo_alumnos[posicion-1].nombre); printf("asignatura : %s n", arreglo_alumnos[cont].notas[0].asignatura); printf("nPromedio de notas: %.2fn",promedio/N); } else { printf("Alumno no existe...."); } } } } }while(opcion < 3); return 0; } } [/spolder] Edited July 13, 2012 by soulsitg Link to comment Share on other sites More sharing options...
AshWilliams Posted July 13, 2012 Report Share Posted July 13, 2012 Para leer el txt y guardar la info del txt en variables puedes usar fscanf :http://c.conclase.net/librerias/?ansifun=fscanf Saludos :krider: Link to comment Share on other sites More sharing options...
soulsitg Posted July 13, 2012 Author Report Share Posted July 13, 2012 (edited) consulta cual es la manera correcta de usar #define EOF con el fscanf?? Edited July 13, 2012 by soulsitg Link to comment Share on other sites More sharing options...
AshWilliams Posted July 13, 2012 Report Share Posted July 13, 2012 #define EOF (-1) Saludos :krider: Link to comment Share on other sites More sharing options...
soulsitg Posted July 18, 2012 Author Report Share Posted July 18, 2012 (edited) vale por los datos cerrar tema y tambien este link ramo pasado muchas gracias :)http://www.chilecomp...r-datos-vacios/http://www.chilecomp...programar-en-c/ Edited July 18, 2012 by soulsitg Link to comment Share on other sites More sharing options...
AshWilliams Posted July 18, 2012 Report Share Posted July 18, 2012 De nada cumpa...para eso estamos....procedo al cierre Link to comment Share on other sites More sharing options...
Recommended Posts