Ejercicios Resueltos Practica 2 (NUEVA 2014) | Informática II

Anuncio
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].ypuntos[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].ypuntos[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
void
void
void
void
agregar_alm(t_alumno []);
agregar_mat (t_materia []);
agregar_notas (t_alumno [],t_materia [],t_nota []);
imp_notas_alumno (int , t_alumno [],t_materia [],t_nota []);
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==n
otas[l].cod_materia))
{
printf("%s:\t%d\n",alumnos[j].nombre,notas[l].nota);
}
}
}
}
}
}
}
}
Descargar