[ Foro de C ]

Error de código en c

09-Jun-2023 18:00
Invitado (Cat)
0 Respuestas

Alguien podría ayudarme con el código de mi proyecto? Está hecho en C y es el siguiente:
//Simular el PROCESO DE MATRICULA de la universidad de Talca
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//----------------------------------------------------------------------------------

//definir cantidad de estudiantes y programas
#define MAX_ESTUDIANTES 10
#define MAX_PROGRAMAS 3

//----------------- ESTRUCTURAS -------------------------------------------------------

typedef struct solicitudIngreso{
//datos del solicitante
char nombreCompleto[100];
int rut;
//antecedentes academicos
//ListadoNotas (NEM)...
int promedioMedia;
int promedioLenguaje;
int promedioMatematicas;
int promedioCiencias;
int promedioHistoria;
//agregar notas de psu y programa academico
int psuLenguaje;
int psuMatematicas;
int psuCiencias;
int psuHistoria;
char programaElegido[50];
} solicitantes;

typedef struct ProgramaAcademico{
char nombre[50];
int arancel;
//Numero de estudiantes maximo definido por programa
int cuposDisponibles;
//INLCUIR LISTA DE INGRESANTES EN ALGUN LUGAR
//int listaIngresantes[10];
} programaAcademico;

typedef struct EstudiantesMatriculados{
char carrera[20];
int deudaArancel;
} matriculados;


//-------------FUNCIONES------------------------------------------------

void registrarPrograma(programaAcademico *programa, int *j, char nombre[20], int arancel, int cuposDisponibles){
strcpy((programa + *j) -> nombre, nombre);
programa[*j].arancel = arancel;
programa[*j].cuposDisponibles = cuposDisponibles;
//programa[*j].listaIngresantes = listaIngresantes;
*j++;
}

void registrarSolicitante(solicitantes *solicitante, int *i, char nombreCompleto[50], int rut, int promedioMedia, int promedioLenguaje, int promedioMatematicas, int promedioCiencias, int promedioHistoria, int psuLenguaje, int psuMatematicas, int psuCiencias, int psuHistoria, char programaElegido[20]){
strcpy((solicitante + *i) -> nombreCompleto, nombreCompleto);
solicitante[*i].rut = rut;
//solicitante[*i].ListadoNotas = ListadoNotas;
solicitante[*i].promedioMedia = promedioMedia;
solicitante[*i].promedioLenguaje = promedioLenguaje;
solicitante[*i].promedioMatematicas = promedioMatematicas;
solicitante[*i].promedioCiencias = promedioCiencias;
solicitante[*i].promedioHistoria = promedioHistoria;
solicitante[*i].psuLenguaje = psuLenguaje;
solicitante[*i].psuMatematicas = psuMatematicas;
solicitante[*i].psuCiencias = psuCiencias;
solicitante[*i].psuHistoria = psuHistoria;
strcpy((solicitante + *i) -> programaElegido, programaElegido);
*i++;
}

void imprimirSolicitantes (solicitantes *solicitante){
//int i
//int d=i;
printf ("Nombre: %s\n", solicitante->nombreCompleto);
printf ("Rut: %i\n", solicitante->rut);
//printf ("Listado de notas: %i\n", solicitante[d].ListadoNotas);
printf ("Promedio de media: %d\n", solicitante->promedioMedia);
printf ("Promedio de lenguaje: %d\n", solicitante->promedioLenguaje);
printf ("Promedio de matematicas: %d\n", solicitante->promedioMatematicas);
printf ("Promedio de ciencias: %d\n", solicitante->promedioCiencias);
printf ("Promedio de historia: %d\n", solicitante->promedioHistoria);
printf ("PSU Lenguaje: %d\n", solicitante->psuLenguaje);
printf ("PSU Matematicas: %d\n", solicitante->psuMatematicas);
printf ("PSU Ciencias: %d\n", solicitante->psuCiencias);
printf ("PSU Historia: %d\n", solicitante->psuHistoria);
printf ("Programa elegido: %s\n", solicitante->programaElegido);
printf ("\n");
}

void evaluarSolicitudes(solicitantes *solicitante, int *i, FILE *punteroArchivo3, FILE *punteroArchivo4, FILE *punteroArchivo5, FILE *punteroArchivo6) {

if (strcmp(solicitante[*i].programaElegido, "carrera 1") == 0){
fprintf(punteroArchivo4, " %s; %i; %i; %i; %i; %i; %i; %i; %i; %i; %i; %s\n", solicitante[*i].nombreCompleto, solicitante[*i].rut, solicitante[*i].promedioMedia, solicitante[*i].promedioLenguaje, solicitante[*i].promedioMatematicas, solicitante[*i].promedioCiencias, solicitante[*i].promedioHistoria, solicitante[*i].psuLenguaje, solicitante[*i].psuMatematicas, solicitante[*i].psuCiencias, solicitante[*i].psuHistoria, solicitante[*i].programaElegido);
}

if (strcmp(solicitante[*i].programaElegido, "carrera 2") == 0){
fprintf(punteroArchivo5, " %s; %i; %i; %i; %i; %i; %i; %i; %i; %i; %i; %s\n", solicitante[*i].nombreCompleto, solicitante[*i].rut, solicitante[*i].promedioMedia, solicitante[*i].promedioLenguaje, solicitante[*i].promedioMatematicas, solicitante[*i].promedioCiencias, solicitante[*i].promedioHistoria, solicitante[*i].psuLenguaje, solicitante[*i].psuMatematicas, solicitante[*i].psuCiencias, solicitante[*i].psuHistoria, solicitante[*i].programaElegido);
}

if (strcmp(solicitante[*i].programaElegido, "carrera 3") == 0){
fprintf(punteroArchivo6, " %s; %i; %i; %i; %i; %i; %i; %i; %i; %i; %i; %s\n", solicitante[*i].nombreCompleto, solicitante[*i].rut, solicitante[*i].promedioMedia, solicitante[*i].promedioLenguaje, solicitante[*i].promedioMatematicas, solicitante[*i].promedioCiencias, solicitante[*i].promedioHistoria, solicitante[*i].psuLenguaje, solicitante[*i].psuMatematicas, solicitante[*i].psuCiencias, solicitante[*i].psuHistoria, solicitante[*i].programaElegido);
}
*i++;
}


//-----------------------------------------------------------------------

int main() {
//Estudiante estudiantes[MAX_ESTUDIANTES];
programaAcademico programas[MAX_PROGRAMAS];
//int numEstudiantes = MAX_ESTUDIANTES;
//int numProgramas = MAX_PROGRAMAS;

//DEFINIR CARRERAS...
programaAcademico programa[MAX_PROGRAMAS];
int j = 0;

FILE *punteroArchivo1 = fopen("programasAcademicos.txt", "r+");

registrarPrograma(programa, &j, "carrera1", 100000, 10);
fprintf(punteroArchivo1, " %s; %d; %d\n", programa[j].nombre,programa[j].arancel,programa[j].cuposDisponibles);
registrarPrograma(programa, &j, "carrera2", 100000, 10);
fprintf(punteroArchivo1, " %s; %d; %d\n", programa[j].nombre,programa[j].arancel,programa[j].cuposDisponibles);
registrarPrograma(programa, &j, "carrera3", 100000, 10);
fprintf(punteroArchivo1, " %s; %d; %d\n", programa[j].nombre,programa[j].arancel,programa[j].cuposDisponibles);

int fclose(FILE *punteroArchivo1);

//INGRESAR ESTUDIANTES y AGREGARLOS A LA LISTA DE POSTULANTES.............

solicitantes solicitante[MAX_ESTUDIANTES];
int i = 0;

FILE *punteroArchivo2 = fopen("solicitantes.txt", "r+");
FILE *punteroArchivo3 = fopen("listaPostulantes.txt", "r+");

while (i<MAX_ESTUDIANTES){
fscanf(punteroArchivo2, " %s; %i; %i; %i; %i; %i; %i; %i; %i; %i; %i; %s\n", solicitante[i].nombreCompleto, &solicitante[i].rut, &solicitante[i].promedioMedia, &solicitante[i].promedioLenguaje, &solicitante[i].promedioMatematicas, &solicitante[i].promedioCiencias, &solicitante[i].promedioHistoria, &solicitante[i].psuLenguaje, &solicitante[i].psuMatematicas, &solicitante[i].psuCiencias, &solicitante[i].psuHistoria, solicitante[i].programaElegido);

fprintf(punteroArchivo3, " %s; %i; %i; %i; %i; %i; %i; %i; %i; %i; %i; %s\n", solicitante[i].nombreCompleto, solicitante[i].rut, solicitante[i].promedioMedia, solicitante[i].promedioLenguaje, solicitante[i].promedioMatematicas, solicitante[i].promedioCiencias, solicitante[i].promedioHistoria, solicitante[i].psuLenguaje, solicitante[i].psuMatematicas, solicitante[i].psuCiencias, solicitante[i].psuHistoria, solicitante[i].programaElegido);

i++;
}

int fclose(FILE *punteroArchivo2);
int fclose(FILE *punteroArchivo3);


//MOVER POSTULANTES A RESPECTIVOS ARCHIVOS DE CARRERA.........
FILE *punteroArchivo4;
if ((punteroArchivo4 = fopen("carrera1.txt", "r+"))== NULL){
printf("No es posible abrir el archivo\n");
}
FILE *punteroArchivo5;
if ((punteroArchivo5 = fopen("carrera2.txt", "r+"))== NULL){
printf("No es posible abrir el archivo\n");
}
FILE *punteroArchivo6;
if ((punteroArchivo6 = fopen("carrera3.txt", "r+"))== NULL){
printf("No es posible abrir el archivo\n");
}

while(i<MAX_ESTUDIANTES) {
evaluarSolicitudes(solicitante, &i, punteroArchivo3, punteroArchivo4, punteroArchivo5, punteroArchivo6);
i++;
}

return 0;
}

Funciona mal y no sé por qué. Creo que el programa cae al leer los datos existentes del archivo "solicitantes.txt" para escribirlos en el archivo "listaPostulantes.txt", pero no estoy segura de porqué ni sé cómo arreglarlo.




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)