ejercicios resueltos practica 2 (nueva 2014) informática ii

30
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)); }

Upload: alvin-jacobs

Post on 20-Jun-2015

332 views

Category:

Engineering


1 download

DESCRIPTION

Ejercicios resueltos practica 2 (nueva 2014) informática ii

TRANSCRIPT

Page 1: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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)); }

Page 2: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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++)

Page 3: Ejercicios resueltos practica 2 (nueva 2014) informática ii

{

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);

}

Page 4: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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);

Page 5: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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);

}

}

Page 6: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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"},

Page 7: Ejercicios resueltos practica 2 (nueva 2014) informática ii

{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"},

Page 8: Ejercicios resueltos practica 2 (nueva 2014) informática ii

{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");

Page 9: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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

{

Page 10: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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++)

Page 11: Ejercicios resueltos practica 2 (nueva 2014) informática ii

{

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

Page 12: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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;

Page 13: Ejercicios resueltos practica 2 (nueva 2014) informática ii

}

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++)

{

Page 14: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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};

Page 15: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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;

}

Page 16: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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';

Page 17: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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);

}

Page 18: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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)))

Page 19: Ejercicios resueltos practica 2 (nueva 2014) informática ii

{

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);

}

}

}

Page 20: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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);

Page 21: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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;

Page 22: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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;

Page 23: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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[])

Page 24: Ejercicios resueltos practica 2 (nueva 2014) informática ii

{

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++;

}

}

Page 25: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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");

Page 26: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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++);

Page 27: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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) {

Page 28: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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;

}

Page 29: Ejercicios resueltos practica 2 (nueva 2014) informática ii

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

Page 30: Ejercicios resueltos practica 2 (nueva 2014) informática ii

{

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); }

} } }

} }

} }