ejercicios resueltos practica 2 (nueva 2014) informática ii
DESCRIPTION
Ejercicios resueltos practica 2 (nueva 2014) informática iiTRANSCRIPT
Ejercicios Resueltos Practica 2 (NUEVA 2014) | Informática II
Ejercicio 1 #include <stdio.h> #include <stdlib.h>
#include <math.h>
typedef struct { int x;
int y; } punto;
double distancia (int, int);
int main() {
double d1,d2; punto punto1, punto2; printf("Ingrese las coordnadas (x,y) del punto 1\n");
scanf("%d %d", &punto1.x,&punto1.y); d1=distancia(punto1.x,punto1.y);
printf("Ingrese las coordnadas (x,y) del punto 2\n"); scanf("%d %d", &punto2.x,&punto2.y);
d2=distancia(punto2.x,punto2.y); if(d1>d2)
printf("El punto 1 esta mas lejos del origen que el punto 2"); else
printf("El punto 2 esta mas lejos del origen que el punto 1"); return 0; }
double distancia (int x, int y) {
return (sqrt((double)x*x+(double)y*y)); }
Ejercicio 2 #include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 10
typedef struct
{
int x;
int y;
}t_punto;
int main()
{
t_punto puntos[10];
cargar_puntos(puntos);
distancia_consecutivos(puntos);
distancia_total(puntos);
return 0;
}
void cargar_puntos (t_punto puntos[N])
{
int i=0, aux;
FILE * arch=fopen("puntos.csv","r");
if(arch!=NULL)
{
fscanf(arch,"%d;%d", &(puntos[i].x), &(puntos[i].y));
i++;
while (!feof(arch))
{
aux=fgetc(arch);
fscanf(arch,"%d;%d", &(puntos[i].x), &(puntos[i].y));
i++;
}
}
fclose(arch);
}
void distancia_consecutivos (t_punto puntos[N])
{
int i;
double d, dmin=pow(2,sizeof(double)*8);
for(i=0;i<N-1;i++)
{
d=sqrt((puntos[i].x-puntos[i+1].x)*(puntos[i].x-puntos[i+1].x)+(puntos[i].y-
puntos[i+1].y)*(puntos[i].y-puntos[i+1].y));
if(d<dmin)
dmin=d;
}
printf("\nLa distancia minima entre puntos consecutivos es: %.2lf", dmin);
}
void distancia_total (t_punto puntos[N])
{
int i,j;
double d, dmin=pow(2,sizeof(double)*8);
for(i=0;i<N;i++)
{
for(j=i+1;j<N;j++)
{
d=sqrt((puntos[i].x-puntos[j].x)*(puntos[i].x-puntos[j].x)+(puntos[i].y-
puntos[j].y)*(puntos[i].y-puntos[j].y));
if(d<dmin)
dmin=d;
}
}
printf("\nLa distancia minima entre puntos cuales quiera es: %.2lf", dmin);
}
Ejercicio 3 #include <stdio.h>
#include <stdlib.h>
#define N 5
#define M 30
typedef struct
{
char nombre[M];
int PG;
int PE;
int PP;
int GF;
int GC;
} t_equipo;
int main()
{
t_equipo equipos[N];
cargar_equipos(equipos);
mostrar_equipos(equipos);
return 0;
}
void cargar_equipos (t_equipo equipos[N])
{
FILE * arche=fopen("Equipos.txt","r"), *archp=fopen("puntos.csv","r");
int i=0;
if((arche!=NULL) && (archp!=NULL))
{
fgets(equipos[i].nombre,M,arche);
fscanf(archp,"%d;%d;%d;%d;%d\n",&(equipos[i].PG),&(equipos[i].PE),&(equipos[i].PP),&(equi
pos[i].GF),&(equipos[i].GC));
i++;
while((!feof(arche))&&(!feof(archp)))
{
fgets(equipos[i].nombre,M,arche);
fscanf(archp,"%d;%d;%d;%d;%d\n",&(equipos[i].PG),&(equipos[i].PE),&(equipos[i].PP),&(eq
uipos[i].GF),&(equipos[i].GC));
i++;
}
}
fclose(arche);
fclose(archp);
}
void mostrar_equipos (t_equipo equipos[N])
{
int i;
printf("Equipos\tPTS\tPJ\tPG\tPE\tPP\tGF\tGC\tDIF");
printf("\n---------------------------------------------------------------------\n");
for(i=0;i<N;i++)
{
printf("%s\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",
equipos[i].nombre,3*equipos[i].PG+equipos[i].PE,equipos[i].PG+equipos[i].PE+equipos[i].PP,equip
os[i].PG,equipos[i].PE,equipos[i].PP,equipos[i].GF,equipos[i].GC,equipos[i].GF-equipos[i].GC);
}
}
Ejercicio 4 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define N 52
#define C 10
#define A 1
#define M 5
#define J 4
//N es el numero de cartas del mazo
//C son los creditos iniciales
//A es la apuesta fija.
//M es la cantidad de cartas que se reparten por jugados (m por mano)
typedef struct
{
short int valor, palo;
char apodo[25];
} card;
//palo=1:trebol
//palo=2:diamantes
//palo=3:picas
//palo=4:corazon
int main()
{
card mazo[N]=
{
{1,1,"As de Trevol"},
{1,2,"As de Diamantes"},
{1,3,"As de Picas"},
{1,4,"As de Corazones"},
{2,1,"2 de Trevol"},
{2,2,"2 de Diamantes"},
{2,3,"2 de Picas"},
{2,4,"2 de Corazones"},
{3,1,"3 de Trevol"},
{3,2,"3 de Diamantes"},
{3,3,"3 de Picas"},
{3,4,"3 de Corazones"},
{4,1,"4 de Trevol"},
{4,2,"4 de Diamantes"},
{4,3,"4 de Picas"},
{4,4,"4 de Corazones"},
{5,1,"5 de Trevol"},
{5,2,"5 de Diamantes"},
{5,3,"5 de Picas"},
{5,4,"5 de Corazones"},
{6,1,"6 de Trevol"},
{6,2,"6 de Diamantes"},
{6,3,"6 de Picas"},
{6,4,"6 de Corazones"},
{7,1,"7 de Trevol"},
{7,2,"7 de Diamantes"},
{7,3,"7 de Picas"},
{7,4,"7 de Corazones"},
{8,1,"8 de Trevol"},
{8,2,"8 de Diamantes"},
{8,3,"8 de Picas"},
{8,4,"8 de Corazones"},
{9,1,"9 de Trevol"},
{9,2,"9 de Diamantes"},
{9,3,"9 de Picas"},
{9,4,"9 de Corazones"},
{10,1,"10 de Trevol"},
{10,2,"10 de Diamantes"},
{10,3,"10 de Picas"},
{10,4,"10 de Corazones"},
{11,1,"J de Trevol"},
{11,2,"J de Diamantes"},
{11,3,"J de Picas"},
{11,4,"J de Corazones"},
{12,1,"Q de Trevol"},
{12,2,"Q de Diamantes"},
{12,3,"Q de Picas"},
{12,4,"Q de Corazones"},
{13,1,"K de Trevol"},
{13,2,"K de Diamantes"},
{13,3,"K de Picas"},
{13,4,"K de Corazones"}
};
card mano[M];
int i,j=0;
int sen=0;
int creditos=C;
srand(time(NULL));
while(creditos>0 && creditos<C+C*0.9 )
{
printf("Su apuesta ha sido de %d creditos. Ud. posee %d creditos restantes.\n",A,creditos-A);
printf("\n....................\n");
for(i=0; i<M; i++)
{
mano[i]=mazo[rand()%N];
for(j=0;j<i;j++)
{
if(strcmp(mano[i].apodo,mano[j].apodo)==0)
{
mano[i]=mazo[rand()%N];
j=0;
}
}
}
printf("Sus cartas para esta mano son: \n");
for(i=0; i<M; i++)
{
printf("%s\n", mano[i].apodo);
}
printf("\n....................\n");
if(escalerarealalas(mano))
{
printf("\nUd. tiene Escalera real! Paga x250\n");
creditos+=A*250;
}
else
{
if(escalerareal(mano))
{
printf("\nUd. tiene Escalera real al As! Paga x50\n");
creditos+=A*50;
}
else
{
if(poker(mano))
{
printf("\nUd. tiene Poker! Paga x25\n");
creditos+=A*25;
}
else
{
if(full(mano))
{
printf("\nUd. tiene Full! Paga x9\n");
creditos+=A*9;
}
else
{
if(color(mano))
{
printf("\nUd. tiene Color! Paga x6\n");
creditos+=A*6;
}
else
{
if(escalera(mano))
{
printf("\nUd. tiene Escalera! Paga x4\n");
creditos+=A*4;
}
else
{
if(pierna(mano))
{
printf("\nUd. tiene Pierna! Paga x3\n");
creditos+=A*3;
}
else
{
if(doblepar(mano))
{
printf("\nUd. tiene Doble Par! Paga x2\n");
creditos+=A*2;
}
else
{
if(pardejosup(mano))
{
printf("\nUd. tiene Par de J o superior! Paga x1\n");
creditos+=A;
}
else
{
printf("\nLo siento, Ud. no tiene nada en esta mano.\n");
creditos-=A;
}
}
}
}
}
}
}
}
}
}
return 0;
}
int escalerarealalas (card mano[])
{
int sen10=0,senj=0,senq=0,senk=0,senas=0;
int i;
for(i=0; i<M; i++)
{
if(mano[i].valor==10)
sen10=1;
if(mano[i].valor==11)
senj=1;
if(mano[i].valor==12)
senq=1;
if(mano[i].valor==13)
senk=1;
if(mano[i].valor==1)
senas=1;
}
if((sen10==1)&&(senj==1)&&(senq==1)&&(senk==1)&&(senas==1))
return 1;
else
return 0;
}
int escalerareal (card mano[])
{
int i, cont=0,min=20,aux,senpalo=0;
for(i=0; i<M; i++)
{
aux=mano[i].valor;
if(min>aux)
min=aux;
}
for(i=0; i<M; i++)
{
if(mano[i].valor==(min+cont))
{
cont++;
i=0;
}
}
if((mano[0].palo==mano[1].palo)&&(mano[0].palo==mano[2].palo)&&(mano[0].palo==mano[3].
palo)&&(mano[0].palo==mano[4].palo)&&(mano[0].palo==mano[5].palo))
senpalo=1;
if(cont==5&&senpalo==1)
return 1;
else
return 0;
}
int poker (card mano[])
{
int i,j;
int sen=0;
int cont[13]= {0};
for(i=0; i<M; i++)
{
for(j=0; j<13; j++)
{
if(mano[i].valor==(j+1))
cont[j]++;
}
}
for(j=0; j<13; j++)
{
if(cont[j]==4)
sen=1;
}
return sen;
}
int full (card mano[])
{
int i,j;
int sen1=0, sen2=0;
int cont[13]= {0};
for(i=0; i<M; i++)
{
for(j=0; j<13; j++)
{
if(mano[i].valor==(j+1))
cont[j]++;
}
}
for(j=0; j<13; j++)
{
if(cont[j]==3)
sen1=1;
if(cont[j]==2)
sen2=1;
}
return sen1&&sen2;
}
int color (card mano[])
{
if((mano[0].palo==mano[1].palo)&&(mano[0].palo==mano[2].palo)&&(mano[0].palo==mano[3].
palo)&&(mano[0].palo==mano[4].palo)&&(mano[0].palo==mano[5].palo))
return 1;
else
return 0;
}
int escalera (card mano[])
{
int i, cont=0,min=20,aux;
for(i=0; i<M; i++)
{
aux=mano[i].valor;
if(min>aux)
min=aux;
}
for(i=0; i<M; i++)
{
if(mano[i].valor==(min+cont))
{
cont++;
i=0;
}
}
if(cont==5)
return 1;
else
return 0;
}
int pierna (card mano[])
{
int i,j;
int sen=0;
int cont[13]= {0};
for(i=0; i<M; i++)
{
for(j=0; j<13; j++)
{
if(mano[i].valor==(j+1))
cont[j]++;
}
}
for(j=0; j<13; j++)
{
if(cont[j]==3)
sen=1;
}
return sen;
}
int doblepar (card mano[])
{
int i,j;
int sen=0;
int cont[13]= {0};
for(i=0; i<M; i++)
{
for(j=0; j<13; j++)
{
if(mano[i].valor==(j+1))
cont[j]++;
}
}
for(j=0; j<13; j++)
{
if(cont[j]==2)
sen++;
}
if(sen==2)
return 1;
else
return 0;
}
int pardejosup (card mano[])
{
int i,j;
int sen=0;
int cont[13]= {0};
for(i=0; i<M; i++)
{
for(j=0; j<13; j++)
{
if(mano[i].valor==(j+1))
cont[j]++;
}
}
for(j=10; j<13; j++)
{
if(cont[j]==2)
sen=1;
}
return sen;
}
Ejercicio 5 #include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define N 5
#define M 30
int main()
{
//guardar_personas();
imprimir_tabla();
return 0;
}
void guardar_personas ()
{
int doc;
char nombre[M];
char pais[M];
char l;
int i=0,j=0;
FILE * arch=fopen("personas.csv","w");
while((j<N)&&(doc!=0))
{
printf("\nIngrese el documento: (0 para terminar la carga)\n");
scanf("%d", &doc);
l='a';
if(doc!=0)
{
printf("\nIngrese el Nombre:\n ");
while((i<M)&&(l!='\r'))
{
l=getche();
if(l!='\r')
{
nombre[i]=l;
i++;
}
}
nombre[i]='\0';
i=0;
l='a';
printf("\nIngrese el Pais:\n ");
while((i<M)&&(l!='\r'))
{
l=getche();
if(l!='\r')
{
pais[i]=l;
i++;
}
}
pais[i]='\0';
i=0;
fprintf(arch,"%d;%s;%s\n",doc,nombre,pais);
j++;
}
}
fclose(arch);
}
Ejercicio 6 void imprimir_tabla (void)
{
FILE* arch=fopen("personas.csv","r");
int aux, i=0;
char l;
int doc;
char nom[M];
char pais[M];
printf("Documento:\tNombre:\t\tPais:\n=============================================
==========\n");
fscanf(arch,"%d",&doc);
fgetc(arch);
aux=fgetc(arch);
l=aux;
while(l!=';'&&l!='\n'&& i<M)
{
nom[i]=l;
aux=fgetc(arch);
l=aux;
i++;
}
nom[i]='\0';
i=0;
aux=fgetc(arch);
l=aux;
while(l!=';'&&l!='\n'&& i<M)
{
pais[i]=l;
aux=fgetc(arch);
l=aux;
i++;
}
pais[i]='\0';
i=0;
printf("%d\t%s\t%s\n",doc,nom,pais);
while (!(feof(arch)))
{
fscanf(arch,"%d",&doc);
if(!feof(arch))
{
fgetc(arch);
aux=fgetc(arch);
l=aux;
while(l!=';'&&l!='\n'&& i<M)
{
nom[i]=l;
aux=fgetc(arch);
l=aux;
i++;
}
nom[i]='\0';
i=0;
aux=fgetc(arch);
l=aux;
while(l!=';'&&l!='\n'&& i<M)
{
pais[i]=l;
aux=fgetc(arch);
l=aux;
i++;
}
pais[i]='\0';
i=0;
printf("%d\t%s\t%s\n",doc,nom,pais);
}
}
}
Ejercicio 7 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define M 30
typedef struct
{
int doc;
char nom[M];
char pais[M];
}t_persona;
int main()
{
mostrar_tabla();
return 0;
}
void menu (void)
{
printf("1-Ver listado ordenado por nombre\n");
printf("2-Ver listado ordenado por documento\n");
printf("3-Ver listado ordenado por pais\n");
printf("4-Salis del programa\n");
}
void mostrar_tabla (void)
{
int op;
menu();
scanf("%d", &op);
t_persona personas[1000];
cargar_personas(personas);
switch (op)
{
case 1:
ordenarxnom(personas);
imprimir(personas);
break;
case 2:
ordenarxdoc(personas);
imprimir(personas);
break;
case 3:
ordenarxpais(personas);
imprimir(personas);
break;
case 4:
break;
default:
printf("La opcion elegida no es valida.");
break;
}
}
void cargar_personas(t_persona personas[])
{
FILE*arch=fopen("personas.csv","r");
int aux, i=0,j=0;
char l;
int d;
char n[M];
char p[M];
fscanf(arch,"%d",&d);
fgetc(arch);
aux=fgetc(arch);
l=aux;
while(l!=';'&&l!='\n'&& i<M)
{
n[i]=l;
aux=fgetc(arch);
l=aux;
i++;
}
n[i]='\0';
i=0;
aux=fgetc(arch);
l=aux;
while(l!=';'&&l!='\n'&& i<M)
{
p[i]=l;
aux=fgetc(arch);
l=aux;
i++;
}
p[i]='\0';
i=0;
personas[j].doc=d;
strcpy(personas[j].nom,n);
strcpy(personas[j].pais,p);
j++;
while (!(feof(arch)))
{
fscanf(arch,"%d",&d);
if(!feof(arch))
{
fgetc(arch);
aux=fgetc(arch);
l=aux;
while(l!=';'&&l!='\n'&& i<M)
{
n[i]=l;
aux=fgetc(arch);
l=aux;
i++;
}
n[i]='\0';
i=0;
aux=fgetc(arch);
l=aux;
while(l!=';'&&l!='\n'&& i<M)
{
p[i]=l;
aux=fgetc(arch);
l=aux;
i++;
}
p[i]='\0';
i=0;
personas[j].doc=d;
strcpy(personas[j].nom,n);
strcpy(personas[j].pais,p);
j++;
}
}
personas[j].doc=0;
}
void ordenarxdoc (t_persona personas[])
{
int i,j;
t_persona aux;
for(i=0;personas[i].doc!=0;i++)
{
for(j=i+1;personas[j].doc!=0;j++)
{
if(personas[i].doc>personas[j].doc)
{
aux=personas[i];
personas[i]=personas[j];
personas[j]=aux;
}
}
}
}
void ordenarxnom (t_persona personas[])
{
int i,j;
t_persona aux;
for(i=0;personas[i].doc!=0;i++)
{
for(j=i+1;personas[j].doc!=0;j++)
{
if(strcmp(personas[i].nom,personas[j].nom)>0)
{
aux=personas[i];
personas[i]=personas[j];
personas[j]=aux;
}
}
}
}
void ordenarxpais (t_persona personas[])
{
int i,j;
t_persona aux;
for(i=0;personas[i].doc!=0;i++)
{
for(j=i+1;personas[j].doc!=0;j++)
{
if(strcmp(personas[i].pais,personas[j].pais)>0)
{
aux=personas[i];
personas[i]=personas[j];
personas[j]=aux;
}
}
}
}
void imprimir (t_persona personas[])
{
printf("Documento:\tNombre:\t\tPais:\n=============================================
==========\n");
int i=0;
while(personas[i].doc!=0)
{
printf("%d\t%s\t%s\n",personas[i].doc,personas[i].nom,personas[i].pais);
i++;
}
}
Ejercicio 8
#include <stdio.h> #include <stdlib.h>
#define NA 10 #define NM 10
typedef struct
{ char nombre[100]; int legajo, materias[30];
} t_alumno;
typedef struct {
char nombre[100]; int codigo;
} t_materia;
typedef struct {
int legajo_alumo; int cod_materia,nota; }
t_nota;
void agregar_alm(t_alumno []); void agregar_mat (t_materia []); void agregar_notas (t_alumno [],t_materia [],t_nota []);
void imp_notas_alumno (int , t_alumno [],t_materia [],t_nota []); void imp_notas_materia (int , t_alumno [],t_materia [],t_nota []);
int main() {
int op; int aux;
t_alumno alumnos[NA]= {0}; t_materia materias[NM]= {0}; t_nota notas[NA*30]= {0}; //x30 porque segun los structs dados 30 es el maximo de
materias que puede cursar un alumno.
do { printf("Menu:\n");
printf("1) Agregar Alumno\n");
printf("2) Agregar Materia\n"); printf("3) Agregar Notas\n");
printf("4) Imprimir notas de un alumno\n"); printf("5) Imprimir notas de una materia\n"); printf("6) Salir\n");
scanf("%d", &op);
switch (op) { case 1:
agregar_alm(alumnos); break;
case 2: agregar_mat(materias); break;
case 3: agregar_notas(alumnos,materias,notas);
break; case 4: printf("Ingrese el legajo del alumno:\n");
scanf("%d", &aux); imp_notas_alumno(aux,alumnos,materias,notas);
break; case 5: printf("Ingrese el codigo de la materia:\n");
scanf("%d", &aux); imp_notas_materia(aux,alumnos,materias,notas);
break; case 6: break;
default: printf("\nOpcion incorrecta!");
break; }
} while(op!=6);
return 0; }
void agregar_alm(t_alumno alumnos[]) {
int i,j=0,aux; char l;
for(i=0; (i<NA)&&(alumnos[i].legajo!=0); i++);
printf("Ingrese el Numero de Legajo:\n"); scanf("%d", &aux);
alumnos[i].legajo=aux; if(aux!=0)
{
printf("Ingrese el nombre del alumno: \n"); j=0; do
{ l=getche();
if(l!='\r') { alumnos[i].nombre[j]=l;
j++; }
} while ((l!='\r')&&(j<99)); alumnos[i].nombre[j]=' \0';
for(j=0; (j<30)&&(aux!=0); j++)
{ printf("\nIngrese el codigo de una materia que ese alumno cursa: \n"); scanf("%d", &aux);
if(aux!=0) alumnos[i].materias[j]=aux;
} } printf("\n____________________\n");
}
void agregar_mat (t_materia materias[]) { int i,j=0,aux;
char l;
for(i=0; (i<NM)&&(materias[i].codigo!=0); i++); printf("Ingrese el Codigo de Materia:\n");
scanf("%d", &aux); materias[i].codigo=aux;
if(aux!=0) {
printf("Ingrese el nombre de la materia: \n");
j=0; do
{ l=getche(); if(l!='\r')
{ materias[i].nombre[j]=l;
j++; } }
while ((l!='\r')&&(j<99)); materias[i].nombre[j]=' \0';
} printf("\n____________________\n"); }
void agregar_notas (t_alumno alumnos[],t_materia materias[],t_nota notas[])
{ int i,j,k,l,aux; //uso i para recorrer alumnos.
//uso j para recorrer materias //uso k para recorrer notas
k=0; for(i=0; (i<NA)&&(alumnos[i].legajo!=0); i++)//recorro cada alumno {
for(j=0; (j<30)&&(alumnos[i].materias[j]!=0); j++)//recorro cada materia que cursa ese alumno
{ for(l=0;(l<NM)&&(materias[l].codigo!=0); l++)//recorro todas las materias hasta encontrar la materia que cursa el alumno
{ if(alumnos[i].materias[j]==materias[l].codigo)
{ printf("Ingrese la nota de %s para la materia %s: ", alumnos[i].nombre, materias[l].nombre);
scanf("%d", &aux); notas[k].legajo_alumo=alumnos[i].legajo;
notas[k].cod_materia=materias[l].codigo; notas[k].nota=aux; k++;
} }
} } notas[k].nota=0;
}
void imp_notas_alumno (int legajo, t_alumno alumnos[],t_materia materias[],t_nota notas[])
{ int i,j,k,l; for (i=0; (i<NA)&&(alumnos[i].legajo!=0); i++) //este for busca al alumno por su legajo
para saber su nombre {
if(legajo==alumnos[i].legajo)//encuentro al alumno { printf("Las notas del alumno %s son: \n", alumnos[i].nombre);//imprimo su nombre
for(j=0; (j<30)&&(alumnos[i].materias[j]!=0); j++) //busco desde los codigos de materias que curso el alumno los nombres de esas materias
{ for(k=0; (k<NM)&&(materias[k].codigo!=0); k++)//tengo un codigo de materia, ahora busco como se llama
{ if(alumnos[i].materias[j]==materias[k].codigo)//encuentro la materia a la que
corresponde el codigo q saque de entre las materias que cursa el alumno { for(l=0; notas[l].nota!=0; l++) //busco la nota para esa materia y ese alumno
{ if((alumnos[i].legajo==notas[l].legajo_alumo)&&(materias[k].codigo==n
otas[l].cod_materia))//la encuentro printf("%s:\t%d\n",materias[k].nombre,notas[l].nota);//imprimo la nota para esa materia
} }
} } }
} }
void imp_notas_materia (int cod_mat, t_alumno alumnos[],t_materia materias[], t_nota notas[])
{ int i,j,k,l;
//empiezo por buscar el nombre de la materia: for(i=0; (i<NM) && (materias[i].codigo!=0); i++)
{ if(cod_mat==materias[i].codigo)
{ printf("Las notas para la materia %s son:\n", materias[i].nombre); //paso a buscar 1 por 1 los alumnos que tienen esa materia entre sus cursadas:
for(j=0; (j<NA)&&(alumnos[j].legajo!=0); j++) //recorro cada alumno
{
for(k=0; (k<30)&&(alumnos[j].materias[k]!=0); k++) //recorro cada materia que cursa ese alumno
{ if(alumnos[j].materias[k]==cod_mat) {
for(l=0; notas[l].nota!=0; l++) {
if((alumnos[j].legajo==notas[l].legajo_alumo)&&(materias[i].codigo==notas[l].cod_materia)) {
printf("%s:\t%d\n",alumnos[j].nombre,notas[l].nota); }
} } }
} }
} }