Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


EXAMEN 2015, Exámenes de Fundamentos de la Informática

Asignatura: Fonaments d'informática, Profesor: , Carrera: Enginyeria Informàtica, Universidad: UAB

Tipo: Exámenes

2016/2017

Subido el 27/01/2017

sirlyn_aredo
sirlyn_aredo 🇪🇸

3.9

(42)

20 documentos

1 / 8

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Fonaments d’Informàtica (101736)
Curs 2015-2016
Examen Parcial (10 de Novembre de 2015)
Grup:
Nom alumne: NIU:
Important: Recordeu que cal donar les millors solucions possibles en cada
exercici. A més de funcionar correctament, els procediments i funcions han
d'estar ben programats (fent el mínim nombre d'operacions possibles, sense
operacions ni variables innecessàries, etc.)
Volem gestionar les notes d’una assignatura de 100 alumnes i volem fer unes
estadístiques de les qualificacions que han tret els alumnes, és a dir, volem
saber quants han tret Suspens, Aprovat, Notable i Excel·lent.
NOTA: Les notes són valors reals. Tots els alumnes es presenten a l'examen.
Exercici 1
Declarar les constants necessàries per tal que el programa sigui fàcilment
modificable.
Declarar una estructura de dades que es digui TNotesAlumnes per
guardar la notes dels alumnes.
Declarar una estructura de dades que es digui TEstadistica per
guardar el nombre d'alumnes que han tret una mateixa qualificació.
#define NUM_ALUMNES 10
#define NUM_QUALIF 4
float TNotesAlumnes[NUM_ALUMNES];
int TEstadistica[NUM_QUALIF];
pf3
pf4
pf5
pf8

Vista previa parcial del texto

¡Descarga EXAMEN 2015 y más Exámenes en PDF de Fundamentos de la Informática solo en Docsity!

Fonaments d’Informàtica (101736)

Curs 2015-

Examen Parcial (10 de Novembre de 2015)

Grup:

Nom alumne: NIU:

Important: Recordeu que cal donar les millors solucions possibles en cada exercici. A més de funcionar correctament, els procediments i funcions han d'estar ben programats (fent el mínim nombre d'operacions possibles, sense operacions ni variables innecessàries, etc.)

Volem gestionar les notes d’una assignatura de 100 alumnes i volem fer unes estadístiques de les qualificacions que han tret els alumnes, és a dir, volem saber quants han tret Suspens, Aprovat, Notable i Excel·lent.

NOTA: Les notes són valors reals. Tots els alumnes es presenten a l'examen.

Exercici 1  Declarar les constants necessàries per tal que el programa sigui fàcilment modificable.

 Declarar una estructura de dades que es digui TNotesAlumnes per

guardar la notes dels alumnes.

 Declarar una estructura de dades que es digui TEstadistica per

guardar el nombre d'alumnes que han tret una mateixa qualificació.

#define NUM_ALUMNES 10 #define NUM_QUALIF 4

float TNotesAlumnes[NUM_ALUMNES]; int TEstadistica[NUM_QUALIF];

Fer un procediment anomenat LlegirNotes que permeti introduir totes les

notes dels Alumnes. El procediment informarà al professor amb un missatge

del tipus “Introdueixi la nota de l’alumne/a n” i llegirà la nota de cadascun dels

100 alumnes de manera consecutiva. El procediment haurà de comprovar que la nota sigui vàlida (entre 0 i 10, ambdós inclosos). Si la nota no està entre aquests dos valors es donarà el següent missatge d’error “Nota no vàlida” i es

tornarà a demanar la nota de l’alumne n.

void LlegirNotes(float TNotesAlumnes[]) { int i;

for(i=0;i<NUM_ALUMNES;i++) { cout<<"Introdueixi la nota de l'alumne/a "<<i+1<<": "; cin>>TNotesAlumnes[i]; while((TNotesAlumnes[i]<0)||(TNotesAlumnes[i]>10)) { cout<<endl<<"Nota no valida"<<endl; cout<<"Introdueixi la nota de l'alumne/a "<<i+1<<": "; cin>>TNotesAlumnes[i]; }; }

Fer un procediment anomenat EstadisticaQualificacions que

calculi quants alumnes han tret la mateixa qualificació. Al procediment li

passarem la taula amb les notes dels alumnes (TNotesAlumnes).

Retornarà una taula (TEstadistica) on hi haurà el nombre d’alumnes que

tenen cadascuna de les qualificacions possibles.

NOTA : ‐ Utilitzeu la funció definida en l’exercici 3.

‐ Suposeu que la taula de tipus TEstadistica està inicialitzada a 0.

void EstadisticaQualificacions(float TNotesAlumnes[], int TEstadistica[]) { int i, index;

for(i=0;i<NUM_ALUMNES;i++) { index=Qualificacio(TNotesAlumnes[i]); TEstadistica[index]++; } }

Exercici 5

Fer un procediment anomenat InicialitzarTaula. Aquest

procediment té tres paràmetres: una taula de tipus int, el valor amb el que es

vol inicialitzar la taula i la dimensió de la taula.

void InicialitzarTaula(int taula[], int valor, int dim) { int i;

for(i=0;i<dim;i++) taula[i]=valor;

Fer un programa principal (main) que segueixi els següents passos:

  1. Declaracions.

2. Cridar el procediment de l’ex. 2, LlegirNotes, per introduir les notes.

3. Utilitzar el procediment de l’ex. 5 InicialitzarTaula per inicialitzar a

0 la taula TEstadistica.

4. Cridar el procediment de l'ex.4, EstadisticaQualificacions per

calcular el nombre d’alumnes que han assolit cada qualificació.

  1. Utilitzar la funció següent per tal de saber quina qualificació ha estat la més

aconseguida: int MaximIndex(int array[], int dim)

Aquesta funció busca el màxim d'un array i retorna la posició on ha trobat aquest màxim. Suposeu que ja està implementada.

  1. Imprimir per pantalla un missatge amb la informació següent:

“La qualificació més repetida ha estat <qualifició> amb un total de alumnes”

on <qualificació> pot ser Suspès, Aprovat, Notable o Excel·lent,

i serà un enter amb el nombre d’alumnes que han aconseguit

aquesta nota.

Declarar un nou tipus de dades, Alumne, com un registre amb els camps: Nom (string de 15 caràcters), Nota (real) i Qualificacio (string de 10 caràcters).

typedef struct{ char Nom[15]; float Nota; char Qualificacio[10]; } Alumne;

Exercici 8

Escriure la funció BuscarCaracter. Aquesta funció rep com a paràmetres

un string i un caràcter. La funció retorna un 1 si el caràcter es troba dins del string i un 0 en cas contrari.

NOTA : Planteja la funció sense que faci cap comparació INNECESSÀRIA.

int BuscarCaracter(char cadena[], char carBuscat) { int i=0;

while((cadena[i]!=carBuscat)&&(cadena[i]!='\0')) { i++; }

if (cadena[i]==carBuscat) return 1; else return 0;

Escriure una funció per que ens retorni el resultat de fer una divisió entera. La funció tindrà 3 paràmetres de tipus int. Els dos primers seran, en aquest ordre, el numerador i el denominador. El tercer serà el resultat de l'operació en el cas que es pugui realitzar. La funció retornarà un 1 si s’ha pogut realitzar la divisió i un 0 en cas contrari.

int DivisioEntera(int num, int den, int &res) { if (den==0) return 0; else res=num/den;

return 1; }

Exercici 10 a) Fer una funció que retorni les desenes d'un nombre. La funció tindrà un paràmetre de tipus int. La funció retornarà el valor de les desenes del nombre que li ha estat passat com a paràmetre.

Exemple. Si el valor que es passa és el 1378 la funció retornarà un 7.

int Desenes(int num) { return (num/10)%10; }

b) Fer la crida de la funció anterior dintre de la funció main (). S'ha de demanar a l’usuari que introdueixi un nombre sencer i s'ha de realitzar la lectura per teclat abans de fer la crida a la funció. Finalment, s'ha d'imprimir el resultat amb el missatge “Les desenes del nombre són

int main() { int num;

cout<<"Introdueix numero enter: "; cin>>num; cout<<endl<<"Les desenes del nombre "<<num<<" son "<<Desenes(num);

return 0;