Enrere Mòdul 7
Fonaments de Programació. Llenguatge C/C++---
Exercicis

 

1. Base de dades de pel·lícules

Seguint el mateix esquema del programa de la pràctica 1 feu una base de dades de pel·lícules. 

Definiu una estructura anònima i un vector associat a aquesta estructura amb el nom entrada. Els camps seran:

struct {
    char titol[50];
    char director[50];
    char protagonista[50];
    int duracio;
} entrada[MAX];

El programa ha de permetre fer noves entrades, esborrar-les, mostrar-les i fer cerques per títol, director i protagonista.

Anomeneu l'arxiu font: m7e1.cc.

 

2. Suma de dates

Amb l'ajuda de la funció mktime(), tractada a la pràctica 5, feu un programa que utilitzi una funció que sumi a una data i hora determinada un nombre de segons. El protocol de la funció haurà de ser:

void suma_temps( tm *data, long segons);

És a dir, la funció tindrà dos arguments, un punter a una variable d'estructura tm i una variable entera. La funció modificarà el valor de la variable apuntada per data de forma que la nova variable correspongui a sumar aquests segons a la data. Per exemple, si data apunta a:

18:01:20 1 de gener de 2001, i sumen 100.000 segons tindrem la nova data i hora:

21:48:00 2 de gener de 2001.

Tingueu en compte que podeu sumar els segons directament al camp tm_sec i, encara que se superi el valor màxim de 59, la crida a la funció mktime() reajustarà el contingut dels camps per mostrar la data i hora correcta.

Anomeneu l'arxiu font: m7e2.cc.

 
3. Més estructures

Es demana dissenya una estructura per emmagatzemar les següents dades:

- Nom de la màquina ( un màxim de 20 caràcters )

- Hores

- Minuts

- Segons

- Data   ( amb format DD-MM-AA)

- Servei facturat ( s / n )

L’execució del programa ens permetrà escollir entre tres opcions. Una primera per introduir les dades corresponen a una estructura, una segona per llistar els registres que pertanyen a una màquina en concret i una tercera per sortir.

 

1-  Afegir estructures alumnes.

2-  Llistat d’una màquina.

3-  Sortir.

 Si per exemple les dades emmagatzemades son:

 

A-18      1              45            10            10            1              2005        s

A-1        3              30            5              10            1              2005        n

A-18      0              25            25            10            1              2005        s

B-10      1              17            45            11            1              2005        n

B-2        2              18            25            11            1              2005        n

A-18      1              45            8              11            1              2005        n

A-18      2              7              1              12            1              2005        n

A-18      1              27            2              20            1              2005        n

A-18      1              35            3              2              2              2005        n

C-5        4              26            4              2              2              2005        n

A-18      1              48            5              2              2              2005        n

A-18      1              36            6              3              2              2005        n

A-18      5              25            4              3              2              2005        n

C-10      1              8              3              3              2              2005        n

A-18      1              9              2              5              3              2005        n

A-18      5              1              1              5              3              2005        n

A-18      1              24            10            5              3              2005        n

C-5        1              21            5              5              3              2005        n

A-18      4              23            25            10            3              2005        n

A-18      1              24            45            10            3              2005        n

C-10      1              25            25            10            3              2005        n

A-18      3              3              8              12            3              2005        n

A-18      2              4              1              12            3              2005        n

B-2        1              34            2              12            3              2005        n

A-1        2              35            3              23            3              2005        n

A-1        1              38            4              23            3              2005        n

B-2        2              45            5              23            3              2005        n

i es demana el consum de la màquina A-18, el programa mostrarà un llistat com  el següent:

Factura de consum de la màquina A-18

 

 

hores

Minuts

segons

dia

mes

any

facturat

 

A-18

1

45

8

11

1

2005

n

1,05

A-18

2

7

1

12

1

2005

n

1,27

A-18

1

27

2

20

1

2005

n

0,87

A-18

1

35

3

2

2

2005

n

0,95

A-18

1

48

5

2

2

2005

n

1,08

A-18

1

36

6

3

2

2005

n

0,96

A-18

5

25

4

3

2

2005

n

3,25

A-18

1

9

2

5

3

2005

n

0,69

A-18

5

1

1

5

3

2005

n

3,01

A-18

1

24

10

5

3

2005

n

0,84

A-18

4

23

25

10

3

2005

n

2,63

A-18

1

24

45

10

3

2005

n

0,85

A-18

3

3

8

12

3

2005

n

1,83

A-18

2

4

1

12

3

2005

n

1,24

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TOTAL:

20,53

 

 

 

 

 

 

 

 

 

El preu és el resultat de multiplicar els minuts ( o fracció ) per 1 cèntim d’euro.

Anomeneu l'arxiu font: m7e3.cc.

 

4. Arguments en la funció main()

Fent servir les idees de la pràctica 9, construïu una aplicació que es pugui cridar des de la línia de comandaments de MS-DOS amb tres paràmetres: un número, un caràcter ( + - * / ) i un altre número. L'aplicació també haurà de realitzar l'operació, entre el segon  i el quart argument. La operació a realitzar ve donada pel tercer argument, que el programa controlarà que sigui un dels següents operadors ( + , - , * , / )

Per exemple:

c:\>m7e4 10 +  5

La suma és 15

Anomeneu l'arxiu font: m7e4.cc.

 

Problemes complementaris

Aquests exercicis serveixen per completar aquest mòdul però suposen una ampliació voluntària. No és necessari lliurar aquests exercicis. No obstant això, és convenient fer-los i lliurar-los.

 

5. Arguments en la funció main()

Fent servir les idees de la pràctica 9, construïu una aplicació que es pugui cridar des de la línia de comandaments de MS-DOS amb dos paràmetres: un caràcter i un enter. L'aplicació ha d'escriure el caràcter indicat pel primer argument el nombre de vegades que indiqui el segon argument. Per exemple:

c:\>m7e4 x 10

xxxxxxxxxx

Anomeneu l'arxiu font: m7e5.cc.

6. Assignació dinàmica

Seguint les idees de la pràctica d'ampliació 2, feu un programa que calculi la mitjana d'un nombre indeterminat de números introduïts per teclat.

La introducció de dades (del tipus double) s'acabarà en el moment de prémer la tecla d'escape (codi ASCII 27).

Anomeneu l'arxiu font: m7e6.cc.

7. Divisio de nombres complexos

Completeu el programa de la pràctica 6 per incloure la divisió de nombres complexos. El quocient és possible sempre que la part real i la part imaginària del divisor no siguin simultàniament 0. Aquesta circumstància s'ha de comprovar.

 

Si tenim dos nombres complexos z1=a+bi     i    z2=c+di, es defineix la divisió com:

Anomeneu l'arxiu font: m7e7.cc.

3. Horari escolar

L’horari escolar d’un  grup de batxillerat  és de 6 hores diàries de dilluns a divendres. Volem crear una aplicació que ens permeti introduir les dades d’aquest horari.

  Per cada hora s’haurà de definir:

      -          nom de l’assignatura.

      -          nom del professor.

      -          número d’aula.

 

L’horari s’emmagatzema en una estructura de dades anomenada horari. Tria l’estructura de dades més adient per emmagatzemar aquesta informació i que tingui les següents funcionalitats:

 

       a)        OmplenarHorari(). Ha de permetre introduir totes les hores.

        b)       OmplenarHora(). Permet introduir les dades d’una determinada hora d’un dia.

        c)        LlistarHorari(). Treu per pantalla l’horari.

        d)       ModificarHora(). Permet canviar les dades d’una determinada hora d’un dia.

 Anomeneu l'arxiu font: m7e8.cc.