Examen de Fonaments d'Informàtica UAB 2020 · Parcial de Programació en C++ - Novembre 2020

Examen de Fonaments d'Informàtica de la UAB (Grado en Ingeniería Informática) 2020, Parcial de Programació en C++ - Novembre 2020: 9 problemas con solución.

Temas del examen: Programació en C/C++: funcions, vectors, matrius, registres i programa principal

Exercici 1 · Programació en C/C++: funcions, vectors, matrius, registres i programa principal

Context

Convocatòria: Examen Parcial (23 de novembre de 2020).

Context general: Les qüestions 1 a 6 descriuen mòduls d'una aplicació per simular partides de Bingo tradicional de 75 boles per a dos contrincants. Un cartró està format per 25 caselles que s'omplen per intervals de 15 números (de l'1 al 75). Cal dissenyar codi estructurat, modular i eficient emprant C++.

Exercici 1 (1 punt). Generació de cartró de bingo

Dissenyeu el procediment CrearCartro encarregat de generar un cartró vàlid amb 25 números compresos entre 1 i 75. Cal complir estrictament la distribució per blocs següent:

5 elements dins l'interval de l'1 al 15

5 elements de l'interval del 16 al 30

5 elements de l'interval del 31 al 45

5 elements de l'interval del 46 al 60

5 elements de l'interval del 61 al 75

El procediment rep per paràmetre el vector (cartró) juntament amb la seva dimensió, i ha de deixar el vector emplenat amb els números ordenats de forma creixent.

Podeu fer ús (sense caldre implementar-les) de les subrutines auxiliars:

int GenerarNombre(int min, int max, int a[], int dim): obté un valor pseudoaleatori entre min i max que no figuri prèviament a a.

void Ordena(int a[], int dim): ordena creixentment el vector a.

Exercici 2 · Programació en C/C++: funcions, vectors, matrius, registres i programa principal

Context

Convocatòria: Examen Parcial (23 de novembre de 2020).

Context general: Les qüestions 1 a 6 descriuen mòduls d'una aplicació per simular partides de Bingo tradicional de 75 boles per a dos contrincants. Un cartró està format per 25 caselles que s'omplen per intervals de 15 números (de l'1 al 75). Cal dissenyar codi estructurat, modular i eficient emprant C++.

Exercici 2 (1 punt). Comparació d'identitat de dos vectors

Escriu la funció booleana ArraysIguals per determinar si dos vectors tenen exactament la mateixa seqüència de valors. La funció rebrà els dos vectors i la seva mida comuna, retornant true en cas que coincideixin element a element i false si discrepen en alguna posició.

Exercici 3 · Programació en C/C++: funcions, vectors, matrius, registres i programa principal

Context

Convocatòria: Examen Parcial (23 de novembre de 2020).

Context general: Les qüestions 1 a 6 descriuen mòduls d'una aplicació per simular partides de Bingo tradicional de 75 boles per a dos contrincants. Un cartró està format per 25 caselles que s'omplen per intervals de 15 números (de l'1 al 75). Cal dissenyar codi estructurat, modular i eficient emprant C++.

Exercici 3 [1 punt]. Visualització de boles extretes

Desenvolupeu el procediment ImprimirBolesSortides destinat a llistar per pantalla la seqüència de boles que ja han estat extretes del bombo. Es rep un vector d'estat i la seva dimensió (75 posicions). Si en una posició hi ha emmagatzemat un 1, significa que la bola amb número índex + 1 ha sortit; si hi ha un 0, encara no ha estat extreta.

Exercici 4 · Programació en C/C++: funcions, vectors, matrius, registres i programa principal

Context

Convocatòria: Examen Parcial (23 de novembre de 2020).

Context general: Les qüestions 1 a 6 descriuen mòduls d'una aplicació per simular partides de Bingo tradicional de 75 boles per a dos contrincants. Un cartró està format per 25 caselles que s'omplen per intervals de 15 números (de l'1 al 75). Cal dissenyar codi estructurat, modular i eficient emprant C++.

Exercici 4 [1 punt]. Escrutini per comprovar si hi ha bingo

Definiu la funció Escrutini que avaluï si un determinat cartró ha assolit el Bingo. La funció pren com a paràmetres el cartró, la seva mida i el vector bombo que conté les boles que han sortit (on la presència d'un 1 a la posició n−1n - 1 indica que la bola nn ja s'ha cantat). Retornarà true si tots els nombres del cartró han aparegut al bombo, i false en cas contrari.

Exercici 5 · Programació en C/C++: funcions, vectors, matrius, registres i programa principal

Context

Convocatòria: Examen Parcial (23 de novembre de 2020).

Context general: Les qüestions 1 a 6 descriuen mòduls d'una aplicació per simular partides de Bingo tradicional de 75 boles per a dos contrincants. Un cartró està format per 25 caselles que s'omplen per intervals de 15 números (de l'1 al 75). Cal dissenyar codi estructurat, modular i eficient emprant C++.

Exercici 5 [1 punt]. Comentari segons diferència de victòries

Implementeu el procediment ImprimirComentari encarregat de mostrar un text contextualitzat d'acord amb el balanç de partides guanyades entre dos jugadors. Rebrà dos enters amb el nombre de victòries de cadascú i aplicarà el criteri següent:

Diferència menor o igual que 1: imprimir "Està molt igualat".

Diferència compresa entre 2 i 5 (inclosos): mostrar "La remuntada és possible".

Diferència major o igual que 6: mostrar "Avui és el teu dia de sort".

Nota: podeu emprar la funció matemàtica abs() per computar la distància absoluta.

Exercici 6 · Programació en C/C++: funcions, vectors, matrius, registres i programa principal

Context

Convocatòria: Examen Parcial (23 de novembre de 2020).

Context general: Les qüestions 1 a 6 descriuen mòduls d'una aplicació per simular partides de Bingo tradicional de 75 boles per a dos contrincants. Un cartró està format per 25 caselles que s'omplen per intervals de 15 números (de l'1 al 75). Cal dissenyar codi estructurat, modular i eficient emprant C++.

Exercici 6 (2,5 punts). Programa principal amb menú de joc

Suposant disponibles les operacions prèvies i els auxiliars:

void MenuPrincipal(): mostra per pantalla les 4 opcions del menú interactiu (1. Assignar cartrons, 2. Jugar, 3. Marcador, 4. Sortir).

void InicialitzarArray(int a[], int dim, int v): assigna el valor v a totes les cel·les del vector a.

int GenerarNombre(int min, int max, int a[], int dim): genera una bola aleatòria no repetida.

Programeu la funció principal main() (amb constants i llibreries pertinents) que executi el flux següent:

Definir constants per a la capacitat del cartró (25) i el total de boles del bombo (75).

Declarar els vectors dels cartrons ( cartroPlayer1, cartroPlayer2) i del bombo, a més del recompte de victòries.

Bucle interactiu amb MenuPrincipal():

Opció 1: Inicialitzar els cartrons a 0, generar el primer cartró i després el segon, repetint la generació del segon mentre ambdós cartrons siguin idèntics (fent servir ArraysIguals). Marcar que els cartrons estan llestos.

Opció 2: Comprovar que s'hagin generat cartrons prèviament. Si no, notificar l'error i tornar al menú. En cas afirmatiu: posar a zero el bombo; en un bucle extreure boles amb GenerarNombre, anotar-les al bombo, mostrar la bola extreta i el llistat acumulat amb ImprimirBolesSortides, i comprovar el bingo amb Escrutini per a cada participant fins que algú guanyi; sumar la victòria al guanyador.

Opció 3: Presentar el marcador actual i cridar ImprimirComentari.

Opció 4: Mostrar el marcador final i el text "Sortint del programa...".

Altres: Mostrar "Opció no permesa".

Reiterar fins a la selecció de l'opció 4.

Exercici 7 · Programació en C/C++: funcions, vectors, matrius, registres i programa principal

Exercici 7 [0,5 punts]. Registre TCartro i impressió de dades

Especifiqueu el tipus compost TCartro com una estructura formada pels següents atributs:

Ident_Cartro: enter amb l'identificador únic del cartró.

Numeros: vector de 25 posicions enteres.

Nom_Jugador: taula de 50 caràcters pel nom de l'usuari.

A continuació, redacteu el procediment Imprimir que prengui com a argument una variable de tipus TCartro i mostri per la consola l'identificador i el nom del jugador separats per un guió ( -).

Exercici 8 · Programació en C/C++: funcions, vectors, matrius, registres i programa principal

Exercici 8 [1 punt]. Comprovació de matriu no negativa

Dissenyeu la funció Es_MatPositiva que accepti una matriu d'enters de 4 columnes, la quantitat de files i la de columnes. Ha de retornar 1 si cap element de la matriu és negatiu (és a dir, tots són ≥0\ge 0), i 0 si es localitza com a mínim un valor estrictament inferior a zero.

Exercici 9 · Programació en C/C++: funcions, vectors, matrius, registres i programa principal

Exercici 9 [1 punt]. Càlcul del quadrat amb control de desbordament

Programeu la funció Elevar dissenyada per calcular el quadrat d'un enter. Rebrà dos arguments de tipus int: el primer correspondrà a la base i el segon desarà per referència el resultat obtingut.

La funció haurà de retornar 1 si el càlcul s'ha pogut dur a terme satisfactòriament, i 0 en cas contrari. Per evitar problemes d'overflow en enters estàndard, la base ha de trobar-se obligatòriament a l'interval [−46340,46340][-46340, 46340].

También puedes estudiar por temas

Practica un tema con ejercicios de los exámenes de todos los años, mezclados.

Ver los 9 temas