Jump to content

Lenguaje C* abrir archivo y ingresar datos vacios*


Recommended Posts

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",&notas[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",&notas[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 by soulsitg
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...