Buscando urgentemente respuestas a la programación en lenguaje C
// test.cpp: Define el punto de entrada de la aplicación de consola.
//
// test1.cpp: define el punto de entrada para la aplicación de consola.
//
// test .cpp: Define el punto de entrada para la aplicación de consola.
# include "stdafx.h"
# include "stdio.h"
# include " stdlib.h"
# include lt; iostreamgt;
# include lt; fstreamgt;
# include lt; iomanipgt; /*Archivos de encabezado a citar */
usando el espacio de nombres std;
struct node /*Definir la estructura del nodo para guardar la información del nodo*/
{
struct Student /*Defina la variable de estructura estudiante para guardar la información del estudiante*/
{
char estudiantenúmero[10] /*Número de estudiante*/
char estudiantenombre[; 5]; /*Nombre del estudiante*/
struct course /*Defina la variable de estructura Curso para guardar la información del curso*/
{
float course1 ; /************************************
curso flotante2
float course3; //Puntuaciones y puntuaciones promedio de cada curso
float Averagemark //********************** ** *******
}; estructura del curso todo el curso;
}; estructura del estudiante
nodo de estructura *siguiente; >
};
nodo *top;
estructura nodo *createlist(char info[2][9], float marksinfo[]) //***** ** *******************
{
nodo de estructura estática *new_node, *current_node;
new_node=(struct node *)new(node); /*Crear un nuevo nodo*/
strcpy(new_node-gt; stu.studentnumber, info[0]); p > strcpy(new_node-gt;stu.studentname,info[1]);
new_node-gt;stu.allcourse.course1=marksinfo[0];
new_node-gt;stu.allcourse.course2=marksinfo[1];
new_node-gt;stu. allcourse.course3=marksinfo[2]; //Paga valor a los elementos del nodo
new_node-gt; stu.allcourse.averagemark=(marksinfo[0]
marksinfo[ 1 ] marksinfo[2])/3;
new_node-gt; next=NULL;
if (top==NULL)
{
top=new_node;
current_node=top;
}
current_node-gt; next=new_node /*apunta al nuevo nodo* /
current_node=new_node; /*Siempre apunta al nuevo nodo*/
return top; ****** ************
}
void Studentaverage(nodo *top) /*Mostrar función de puntuación promedio*/
{
int i=0, maxcount=0 /*Número de nodos maxcount*/
char respuesta='y';
struct node *t =top;
fstream readcount("countsave.txt",ios::in /*Definir flujo de archivos*/
readcountgt;gt; maxcount; /*Convertir información del archivo Leer en la variable Maxcount*/
system("cls"); /*Borrar pantalla*/
cout.flags(ios::left) ; /*El formato de salida está alineado a la izquierda */
coutlt;lt;setw(14)lt;lt;"número de estudiante"lt;lt;setw(14)lt;lt;"nombre"; lt;lt;setw(14)lt; lt;"Curso 1"lt;lt;setw(14)
lt;lt;"Curso 2"lt;lt;setw(14)lt;lt ;"Curso 3"lt;lt;" Puntuación media"lt;lt;endl;
para (i=0;ilt;maxcount;i)
{
t=top;
top=top-gt;siguiente;
cout.flags(ios::left);
coutlt;lt; setw(14)lt;lt;t- gt;stu.studentnumberlt;lt;setw(14)lt;lt;
t-gt;st
u.studentnamelt;lt;setw(14)lt;lt;t-gt;stu.allcourse.course1lt;lt;setw(14)lt;lt;t-gt;stu.allcourse.course2
lt;lt;setw(14)lt;lt;t-gt;stu.allcourse.course3lt;lt;setw(14)lt;lt;t-gt;stu.allcourse.averagemarklt;lt;endl;
}
system("pause");
}
void courseaverage(node *top)/*Mostrar la puntuación promedio de cada uno curso* /
{
int maxcount;
nodo *t=top;
float courseaverage_1=0.00; ** ******************************
float courseaverage_2=0.00 // Variable para guardar el puntuación promedio de cada curso
float courseaverage_3=0.00 //*********************************; *
fstream readcount("countsave.txt",ios::in);
readcountgt;gt;maxcount;
system("cls");
for (int i=0;ilt;maxcount;i) //****************************** ****** *************************************
{
t =top;
top=top-gt;next; //Recorre los nodos y acumula las puntuaciones de cada curso para encontrar el valor promedio
float(courseaverage_1) =float(t-gt;stu .allcourse.course1);
courseaverage_2 =t-gt;stu.allcourse.course2;
courseaverage_3 =t-gt; stu.allcourse.course3;
} //************************************ ************ *************************
cout.flags(ios:: left);
coutlt;lt; setw(25)lt;lt;"Curso 1"lt;lt;setw(25)lt;lt;"Curso 2"lt;lt;setw(25) lt;lt;"Curso 3"lt;lt;endl;
coutlt;lt;setw(25)lt;lt;float(courseaverage_1/(maxcount 1))lt;lt;setw(25) lt;l
t;
courseaverage_2/float(maxcount 1)lt;lt;setw(25)lt;lt;courseaverage_3/float(maxcount 1)lt;lt;endl;
system( "pausa");
}
void orderWithAverageMark(node *top)/*Ordenar por promedio*/
{
struct node *t=top;
struct node estático *t0=top; /*Guardar la cabeza del nodo*/
float Averagemark_1=0.00; p> float Averagemark_2=0.00;
static char temp[10]; /*Variable intermedia para guardar cadena*/
float temp0 /*Variable intermedia para variable entera*/
int maxcount;
int i;
bool flag; /*Determinar si el algoritmo de burbuja ha finalizado*/
fstream readcount( " countsave.txt",ios::in||ios::out);
readcountgt;gt;maxcount;
//*********** ** ************************************************* *** ****************
//Clasificación de burbujas
//si (cuenta
para (int j=0; jlt; maxcount; j )
{
top=t0; //El puntero del nodo apunta al encabezado de la tabla, realiza la siguiente clasificación p>
for (i=0; ilt; (maxcount-1); i )
{
flag=false
t=top;
promediomark_1=t-gt;stu.allcourse.averagemark;
promediomark_2=top-gt;next-gt;stu.allcourse.averagemark;
if (averagemark_1lt;=averagemark_2 )
{ //********************************* ******* *************************
strcpy(temp, t-gt; stu.studentnumber
strcpy(t-gt; stu.studentnumber, top-gt; next-gt; stu.studentnumber;
strcpy(top-gt; next-gt; stu); .número de estudiante, tem
p);
strcpy(temp, t-gt; stu.nombredelestudiante);
strcpy(t-gt; stu.nombre del estudiante, top-gt; next-gt; stu. nombre del estudiante);
strcpy(top-gt; next-gt; stu.nombre del estudiante, temp0=t-gt; stu.allcourse.course1;
t-gt; stu.allcourse.course1=top-gt; next-gt; stu.allcourse.course1; // Intercambia los valores de los dos nodos
top-gt; -gt ;stu.allcourse.course1=temp0;temp0=t-gt;stu.allcourse.course2;
t-gt;stu.allcourse.course2=top-gt ;next -gt;stu.allcourse.course2;
top-gt;next-gt;stu.allcourse.course2=temp0;
temp0=t-gt;stu.allcourse .course3 ;
t-gt;stu.allcourse.course3=top-gt;next-gt;stu.allcourse.course3;
top-gt;next-gt;stu .allcourse .course3=temp0;
temp0=t-gt;stu.allcourse.averagemark;
t-gt;stu.allcourse.averagemark=top-gt;next-gt ;stu .allcourse.averagemark;
top-gt; siguiente-gt; stu.allcourse.averagemark=temp0; ** *******************************************
bandera= verdadero;
}
top=top-gt;siguiente;
}
}
// *********************************************** *** *******************************************
}
int menu()//menú principal
{
int elección;
coutlt;lt;"** ** ************************************************* *** *************************"lt;lt;endl;
coutlt;lt;"*
*"lt;lt;endl;
coutlt;lt;"* 1. Ingrese la información del estudiante *"lt;lt;endl;
coutlt;lt;"* *"lt ;lt; endl;
coutlt;lt;"* 2. Mostrar el puntaje promedio del estudiante*"lt;lt;endl;
coutlt;lt;"* *"lt; lt ;endl;
coutlt;lt;"* 3. Mostrar la puntuación promedio de cada curso*"lt;lt;endl;
coutlt;lt;"* *"lt ; lt;endl;
coutlt;lt;"* 4. Mostrar los estudiantes cuyo puntaje total está por encima de un puntaje promedio determinado*"lt;lt;endl;
coutlt;lt; "* *"lt;lt;endl;
coutlt;lt;"* 5. Guardar datos *"lt;lt;endl;
coutlt;lt;"* *" lt; lt;endl;
coutlt;lt;"* 0. Salir*"lt;lt;endl;
coutlt;lt;"* *"lt;lt;endl ;
coutlt;lt;"*************************************** ***** *************************************
****"lt;lt;endl;
coutlt;lt;" "lt;lt;endl;
coutlt;lt;" Seleccione: ";
bucle: cingt; gt; elección;
if (choicegt; =0amp; amp; elecciónlt; =5)
devuelve elección;
else
ir al bucle
}
int findstdentnumber(nodo *top, char nombrestr[5])
{
nodo *t=top;
int recuento;
fstream readcount("countsave.txt", ios::in
readcountgt ;gt;count;
for (int i=0;ilt;count;i)
{
t=top;
top=top-gt; siguiente;
if (strcmp(namestr, t-gt; stu.studentnumber)==0)
{
devolver 1;
}
}
devolver 0
}
nodo *getinfo(); p>
{
char Response='y';
char Studentinfo[2][9] //La matriz bidimensional guarda el número y el nombre del estudiante
float Studentcoursemark[3]; //Guarda las puntuaciones de cada materia
int count=0
static int count0; void savestudentinfo(nodo *);
nodo *readstudentinfo();
void freelist(nodo
fstream readcount("countsave) .txt", ios::in) ;/*Leer valor del nodo*/
readcountgt;gt;count0;
readcount.close();
hacer
{
loop0: system("cls");
coutlt;lt;endl;
coutlt;lt;" Por favor ingrese su ID de estudiante:";
cingt; gt; Studentinfo[0];
coutlt; lt; endl;
if(findstdentnumber(top, Studentinfo[0]))
p>
{
coutlt;lt;"El número de estudiante ya existe:"lt;lt;endl;
sistema("pausa");
strcpy(studentinfo[0], " ");
goto loop0;
}
coutlt; "Nombre: "; p> cingt;gt;studentinfo[1];
coutlt;lt;endl;
coutlt;lt;"Curso 1:";
cingt; gt;studentcoursemark[0];
coutlt;lt;endl;
coutlt;lt;"Curso 2:";
cingt;gt;studentcoursemark[ 1];
coutlt;lt;endl;
coutlt;lt;"Curso 3:";
cingt;gt;studentcoursemark[2];
top=createlist(studentinfo,studentcoursemark);
count;
coutlt;lt;endl;
coutlt;lt;"Para ¿Continuar? (s o n)";
cingt;gt;response;
} while(countgt;=0amp;amp;countlt;30amp;amp;(response== ' y'||response=='Y'));
orderWithAverageMark(top); /*Ordenar la lista vinculada según las puntuaciones promedio de los estudiantes*/
fstream savecount("countsave .txt", ios::out);
savecountlt;lt;(count count0);/*Guardar valores de nodo y acumular*/
savecount.close();
savestudentinfo(top); /*Guardar información del estudiante en un archivo*/
volver arriba;
}
void savestudentinfo(node) * top) /*Guardar información del estudiante*/
{
int i, númerodeestudiante
nodo *head=top; p> fstream count("countsave.txt",ios::in);
countgt;gt;numberofstudent /*Obtener el número de estudiantes*/
count.close( );
p>orderWithAverageMark(head);
fstream estudiante("studentinfosave.txt", ios::out
system("cls");
//Recorre la lista enlazada y guarda información
para (i=0; ilt; numberofstudent; i)
{
head=top;
p>top=top-gt;siguiente;
Studentlt;lt;head-gt;stu.studentnumberlt;lt;" "lt;
lt;head-gt;stu.studentnamelt;lt;" "lt;lt;
head-gt;stu.allcourse.course1lt;lt;" "lt;lt;head-gt;stu.allcourse .course2lt;lt;" "lt;lt;
head-gt;stu.allcourse.course3lt;lt;endl;
}
estudiante.close ();
//************************
coutlt;lt;"Guardar correctamente !"lt ;lt; endl;
system("pause");
}
nodo *readstudentinfo() /*Leer información del estudiante del archivo* /
{
int númerodeestudiante;
char estudianteinfo[2][9];
float estudiantecursomarca[3]; p>
fstream readcount("countsave.txt", ios::in);
fstream readstuinfo("studentinfosave.txt", ios::in
readcountgt); ; gt ;númerodeestudiante;
for (int i=0; ilt; númerodeestudiante; i )
{
readstuinfogt;gt;studentinfo[0]gt; gt; información de estudiante[1]gt;gt;marca de curso de estudiante[0]gt;gt;
marca de curso de estudiante[1]gt;gt;marca de curso de estudiante[2];
top=createlist(info de estudiante , marca del curso de estudiante );
}
readcount.close();
readstuinfo.close()
volver arriba
p>}
void find(nodo *top)/*find function*/
{
int lowmark=0, i= 0, count= 0;
struct node *t=top;
system("cls");
coutlt;lt;"Ingrese un valor inferior límite para la puntuación media: ";
cingt;gt;lowmark;
system("cls");
fstream readcount("countsave.txt" ,ios::in) ;
readcountgt;gt;count;
cout.flags(ios::left);
coutlt;lt;setw( 14)lt;lt; "Número de estudiante"lt;lt;setw(14)lt;lt;"Nombre"lt;lt;setw(14)lt;lt;"Curso 1
"lt;lt;setw(14)
lt;lt;"Curso 2"lt;lt;setw(14)lt;lt;"Curso 3"lt;lt;setw(14)lt; lt; "Puntuación promedio"lt; endl;
if(lowmarkgt;=0amp;amp;lowmarklt;=100)
{
for( int j=0; jlt; contar; j )
{
t=top; p> if(lowmarklt;=(t-gt;stu.allcourse.averagemark))//***************************** *mostrar información que cumple las condiciones
{
coutlt;lt;setw(14)lt;lt;t-gt;stu.studentnumberlt;lt;setw(14)lt; lt;t -gt;stu.studentnamelt;lt;setw(14)lt;lt;t-gt;stu.allcourse.course1lt;lt;setw(14)
lt;lt;t-gt ;stu.allcourse.course2lt;lt;setw(14)lt;lt;t-gt;stu.allcourse.course3lt;lt;setw(14)lt;lt;t-gt;stu.allcourse.averagemarklt;lt;endl ; p>
i ;
}
} //********************** ******** ***
if (i==0)
{
coutlt;lt;endl;
system("cls" );
coutlt;lt;"¡No se puede encontrar la información del estudiante!"lt;lt;endl;
}
coutlt ;lt;"*** Encontrado "lt;lt;ilt;lt;"¡Mensaje!"lt;lt;endl;
system("pausa");
}
}
void main()
{
top=readstudentinfo() /*Leer información del estudiante*/
for(; ;)
{
sistema("cls");
cambiar(menú())
{
caso 1:
top=getinfo();
descanso
caso 2:
Studentaverage(arriba);
descanso
caso 3:
cursoaverage(arriba);
descanso
caso 4:
buscar(arriba);
romper;
caso 5:
p>
savestudentinfo(arriba);
descanso;
caso 0:
salida(0);
}
}
}