Professional Documents
Culture Documents
Literal ( b ) ( 25 ptos )
void procesarNota(FILE *notas, FILE *aprobados, FILE *reprobados) { //Variables a almacenar la informacion leida de "notas" int n1, n2, n3, nota; //La variable nota almacena la nota total que obtuvo el estudiante char matricula[10]="", nombres_completo[25]=""; //Mientras existan datos en "notas.dat" while(!feof(notas)) { fscanf(notas,"%[^|]|%[^|]|%d|%d|%d",matricula, nombres_completo, &n1, &n2, &n3); nota = calcularNota(n1,n2,n3); if( nota >= 120) //Si el estudiante aprobo agrego al archivo "aprobados.dat" fprintf(aprobados,"%s|%s|%d|AP\n",matricula, nombres_completo, nota); else //Si el estudiante reprobo agrego al archivo "reprobados.dat" fprintf(reprobados,"%s|%s|%d|RP\n",matricula, nombres_completo, nota); } fclose(aprobados); fclose(reprobados); }
TEMA 3 (5 ptos)
int a=0, b=5, *p, *q; p = &a; q = malloc(sizeof(int)*5); while(a<b) { *(q+a) = 2 * (a+1); *p+=1; } b = *p + *q;
Respuesta: p a b
5
q 2 4 6 8 10
TEMA 4 (40 ptos) Literal ( a ) ( 10 ptos ) void imprimirTablero(int tablero[M][N]) { int i, j; for(i=0; i<M; i++) { for(j=0; j<N; j++) { if(tablero[i][j] == -1) printf("[ X ]\t"); else if(tablero[i][j] == -2) printf("[ 0 ]\t"); else printf("[ ]\t"); } printf("\n"); } } Literal ( b ) ( 12 ptos ) int descubrirMina(int tablero[M][N], int x, int y) { /*Valores: Casillas descubiertas -> Mina encontrada -> Casilla vacia Casillas ocultas -> Mina -> Sin mina
//Casilla descubierta y mina explotada -1 (X) //Casilla descubierta y no hay mina -2 (O) //En caso que la mina no ha sido descubierta
*/ //Pregunto si es una casilla ya descubierta if(tablero[x][y] == -1 || tablero[x][y] == -2) return -1; else if(tablero[x][y] == 1) //Es una casilla con mina { tablero[x][y] = -1; //Marco como mina explotada o encontrada return 1; } else //Es una casilla vacia { tablero[x][y] = -2; return 0; } }
Literal ( c ) ( 6 ptos )
int llenarTablero(int tablero[M][N]) { int valor, minas=0, i, j; for(i=0; i<M; i++) { for(j=0; j<N; j++) { valor = rand()%2; if(valor == 1) //Si sale una mina minas++; //Incremento la cantidad de minas tablero[i][j] = valor; //Asigno el valor obtenido (Mina=1, Vacio=0) } } return minas; }
Literal ( d ) ( 12 ptos )
//LIBRERIAS #include <stdio.h> #include <stdlib.h> #include <time.h> //CONSTANTES #define M 4 #define N 4 //PROTOTIPOS DE FUNCIONES Y PROCEDIMIENTOS void imprimirTablero(int tablero[M][N]); int descubrirMina(int tablero[M][N], int x, int y); int llenarTablero(int tablero[M][N]); void main() { /* minas: mantiene la cantidad de minas presente en el tablero casillas_vacias: mantiene la cantiad de casillas disponibles */ int tablero[M][N], minas, casillas_vacias, puntaje=0, x, y, m; srand(time(NULL)); minas = llenarTablero(tablero); casillas_vacias = M*N - minas; //Total de celdas - minas while(minas>0 || casillas_vacias>0) { do{ system("cls"); printf("Puntaje: %d\n\n", puntaje); printf("Minas por descubir: %d\n\n", minas); imprimirTablero(tablero); printf("\n\nEscriba las coordenadas x,y: "); scanf("%d,%d",&x,&y); }while(x<0 || x>=M || y<0 || y>=N); m = descubrirMina(tablero, x, y); if(m == 0) //Si es una casilla vacia { puntaje+=2; casillas_vacias--; } else if(m == 1) //Si es una mina { puntaje--; minas--; } } }