Resolver ejercicio
#include <stdio.h>
#include <conio.h>
// Definicio de constants ...
const unsigned int MAX_FETS = 50; // màxim nombre de fets/dpmt
const unsigned char MAX_DPMTS = 5; // màx. nombre de departament
typedef struct {int dia,mes,any;} TData; //identifica una data
typedef char TFet[40]; // descripció del fet
typedef char TAutor[40]; // nom de l'autor/s
typedef char TDepartament[40]; // nom del departament
typedef struct {
TData Dia; // Data del fet
TFet Fet; // Descripció ...
TAutor Autor; // i autor
} TEsdeveniment;
typedef struct {
TDepartament Dpmt; // Nom del departament
TEsdeveniment Fets[MAX_FETS]; // Descripció dels fets
unsigned int NombreFets; // Nombre de fets reals
} TBaseDpmt;
typedef struct {
TBaseDpmt Dpmts[MAX_DPMTS]; // posició/departament
unsigned int NombreDpmts; // nombre real de departaments
} TBaseEUSS;
// prototips funcions inicials donandes
int menu (void);
void inicialitza (TBaseEUSS &);
// prototips funcions a realitzar demanades a l'enuanciat
TBaseEUSS AfegirFet ( TBaseEUSS, TDepartament );
int BuscaPosicioDpmt( TBaseEUSS, TDepartament);
int NouDpmt( TBaseEUSS &, TDepartament);
int NouFet (TBaseDpmt &, TEsdeveniment);
void LlistaFets ( TBaseEUSS );
void LlistaDpmt ( TBaseDpmt );
// prototips d'altres funcions dissenyades pel grup
// programa principal
void main (void)
{int fi=0;
// fer declaracions de variables i inicialitzacions....
do {
switch(menu() ){
case '1': printf("nAlta d'un nou fet a la base de dades.");
// afegir crida a funció
break;
case '2': printf("nLlistat dels fets de la base de dades.");
// afegir crida a funció
break;
case '0': fi=1;
break;
default: printf("nOpci¢ incorrecta !!");
}
if (!fi) {printf ("nPrmer tecla per continuar ..."); getch();}
} while (!fi);
}
int menu (void)
{
clrscr();
printf("nn");
printf(" 1.- Alta d'un nou fet a la base de dadesn");
printf(" 2.- Llistat dels fets de la base de dadesn");
printf("n 0.- Fi programan");
return getch();
}
void inicialitza (TBaseEUSS &base)
{ base.NombreDpmts=0;}
// funcions a realitzar ...................................
el enunciodo del ejercicio es.
Programació Curs 2003-04 Pràctiques.
P1 - 1
Pràctica 1. Tipus de dades i estructures internes.
Objectius
Repassar conceptes adquirits a lassignatura de fonaments informàtics, recalcant els punts:
Definició de nous tipus de dades i organització en estructures internes.
Utilització dels prototipus de les funcions per definir el comportament.
Pas de paràmetres a funcions per valor i per referència, així com tipus de dades del
retorn de lexecució de la funció.
Enunciat
Volem memoritzar els esdeveniments més importants de lescola per tal de deixar un històric
amb informació sobre les principals accions que succeeixin i els seus autors. Cada
departament de lescola portarà una base de dades pròpia, corresponent als fets que li són
rellevants. Tindrem una estructura que englobarà les dades de tots els departaments.
El disseny de les estructures de dades que utilitzarem serà el següent:
Constants:
const unsigned int MAX_FETS = 50; // màxim nombre de fets/dpmt
const unsigned char MAX_DPMTS = 5; // màx. nombre de departament
Tipus bàsics de dades:
typedef struct {int dia,mes,any;} TData; //identifica una data
typedef char TFet[40]; // descripció del fet
typedef char TAutor[40]; // nom de lautor/s
typedef char TDepartament[40]; // nom del departament
Estructures auxiliars:
typedef struct {
TData Dia; // Data del fet
TFet Fet; // Descripció ...
TAutor Autor; // i autor
} TEsdeveniment;
typedef struct {
TDepartament Dpmt; // Nom del departament
TEsdeveniment Fets[MAX_FETS]; // Descripció dels fets
unsigned int NombreFets; // Nombre de fets reals
} TBaseDpmt;
typedef struct {
TBaseDpmt Dpmts[MAX_DPMTS]; // posició/departament
unsigned int NombreDpmts; // nombre real de departaments
} TBaseEUSS;
Es demana
Fer els següents apartats:
Afegir un nou fet a la llista dun departament
Fer una funció que permeti afegir un nou esdeveniment, que tingui el següent prototip:
Programació Curs 2003-04 Pràctiques.
P1 - 2
TBaseEUSS AfegirFet ( TBaseEUSS, TDepartament );
En cas de que el departament no existeixi, lafegirà a la llista de lestructura TBaseEUSS per
introduir-hi el nou fet. Retornarà lestructura TBaseEUSS resultant desprès dafegir el nou fet.
Per a la realització d'aquest apartat, es demana realitzar i utilitzar les funcions:
int BuscaPosicioDpmt( TBaseEUSS, TDepartament);
busca la posició del departament que té el nom donat i ens retorna la posició de larray, o 1 si
no el troba.
int NouDpmt( TBaseEUSS &, TDepartament);
Dóna dalta un nou departament (sempre que hi hagi el lloc per fer-ho i ens deixa les dades
TBaseEUSS, passada per referència, amb la nova informació. També ens retorna el valor 0
(definició de fals) en cas de no poder-ho fer i un valor diferent de 0 (definició de cert) en cas
contrari.
int NouFet (TBaseDpmt &, TEsdeveniment);
Funciona similar a lanterior afegint un esdeveniment a un departament.
Fer un llistat dels esdeveniments de cada departament.
Fer un llistat que mostri lautor, la data del fet i el fet per a cada departament de la nostra base
de dades.
El prototip de la funció serà:
void LlistaFets ( TBaseEUSS );
Per a realitzar això, es demana fer les funcions:
void LlistaDpmt ( TBaseDpmt );
que llista els fets dun departament.
#include <conio.h>
// Definicio de constants ...
const unsigned int MAX_FETS = 50; // màxim nombre de fets/dpmt
const unsigned char MAX_DPMTS = 5; // màx. nombre de departament
typedef struct {int dia,mes,any;} TData; //identifica una data
typedef char TFet[40]; // descripció del fet
typedef char TAutor[40]; // nom de l'autor/s
typedef char TDepartament[40]; // nom del departament
typedef struct {
TData Dia; // Data del fet
TFet Fet; // Descripció ...
TAutor Autor; // i autor
} TEsdeveniment;
typedef struct {
TDepartament Dpmt; // Nom del departament
TEsdeveniment Fets[MAX_FETS]; // Descripció dels fets
unsigned int NombreFets; // Nombre de fets reals
} TBaseDpmt;
typedef struct {
TBaseDpmt Dpmts[MAX_DPMTS]; // posició/departament
unsigned int NombreDpmts; // nombre real de departaments
} TBaseEUSS;
// prototips funcions inicials donandes
int menu (void);
void inicialitza (TBaseEUSS &);
// prototips funcions a realitzar demanades a l'enuanciat
TBaseEUSS AfegirFet ( TBaseEUSS, TDepartament );
int BuscaPosicioDpmt( TBaseEUSS, TDepartament);
int NouDpmt( TBaseEUSS &, TDepartament);
int NouFet (TBaseDpmt &, TEsdeveniment);
void LlistaFets ( TBaseEUSS );
void LlistaDpmt ( TBaseDpmt );
// prototips d'altres funcions dissenyades pel grup
// programa principal
void main (void)
{int fi=0;
// fer declaracions de variables i inicialitzacions....
do {
switch(menu() ){
case '1': printf("nAlta d'un nou fet a la base de dades.");
// afegir crida a funció
break;
case '2': printf("nLlistat dels fets de la base de dades.");
// afegir crida a funció
break;
case '0': fi=1;
break;
default: printf("nOpci¢ incorrecta !!");
}
if (!fi) {printf ("nPrmer tecla per continuar ..."); getch();}
} while (!fi);
}
int menu (void)
{
clrscr();
printf("nn");
printf(" 1.- Alta d'un nou fet a la base de dadesn");
printf(" 2.- Llistat dels fets de la base de dadesn");
printf("n 0.- Fi programan");
return getch();
}
void inicialitza (TBaseEUSS &base)
{ base.NombreDpmts=0;}
// funcions a realitzar ...................................
el enunciodo del ejercicio es.
Programació Curs 2003-04 Pràctiques.
P1 - 1
Pràctica 1. Tipus de dades i estructures internes.
Objectius
Repassar conceptes adquirits a lassignatura de fonaments informàtics, recalcant els punts:
Definició de nous tipus de dades i organització en estructures internes.
Utilització dels prototipus de les funcions per definir el comportament.
Pas de paràmetres a funcions per valor i per referència, així com tipus de dades del
retorn de lexecució de la funció.
Enunciat
Volem memoritzar els esdeveniments més importants de lescola per tal de deixar un històric
amb informació sobre les principals accions que succeeixin i els seus autors. Cada
departament de lescola portarà una base de dades pròpia, corresponent als fets que li són
rellevants. Tindrem una estructura que englobarà les dades de tots els departaments.
El disseny de les estructures de dades que utilitzarem serà el següent:
Constants:
const unsigned int MAX_FETS = 50; // màxim nombre de fets/dpmt
const unsigned char MAX_DPMTS = 5; // màx. nombre de departament
Tipus bàsics de dades:
typedef struct {int dia,mes,any;} TData; //identifica una data
typedef char TFet[40]; // descripció del fet
typedef char TAutor[40]; // nom de lautor/s
typedef char TDepartament[40]; // nom del departament
Estructures auxiliars:
typedef struct {
TData Dia; // Data del fet
TFet Fet; // Descripció ...
TAutor Autor; // i autor
} TEsdeveniment;
typedef struct {
TDepartament Dpmt; // Nom del departament
TEsdeveniment Fets[MAX_FETS]; // Descripció dels fets
unsigned int NombreFets; // Nombre de fets reals
} TBaseDpmt;
typedef struct {
TBaseDpmt Dpmts[MAX_DPMTS]; // posició/departament
unsigned int NombreDpmts; // nombre real de departaments
} TBaseEUSS;
Es demana
Fer els següents apartats:
Afegir un nou fet a la llista dun departament
Fer una funció que permeti afegir un nou esdeveniment, que tingui el següent prototip:
Programació Curs 2003-04 Pràctiques.
P1 - 2
TBaseEUSS AfegirFet ( TBaseEUSS, TDepartament );
En cas de que el departament no existeixi, lafegirà a la llista de lestructura TBaseEUSS per
introduir-hi el nou fet. Retornarà lestructura TBaseEUSS resultant desprès dafegir el nou fet.
Per a la realització d'aquest apartat, es demana realitzar i utilitzar les funcions:
int BuscaPosicioDpmt( TBaseEUSS, TDepartament);
busca la posició del departament que té el nom donat i ens retorna la posició de larray, o 1 si
no el troba.
int NouDpmt( TBaseEUSS &, TDepartament);
Dóna dalta un nou departament (sempre que hi hagi el lloc per fer-ho i ens deixa les dades
TBaseEUSS, passada per referència, amb la nova informació. També ens retorna el valor 0
(definició de fals) en cas de no poder-ho fer i un valor diferent de 0 (definició de cert) en cas
contrari.
int NouFet (TBaseDpmt &, TEsdeveniment);
Funciona similar a lanterior afegint un esdeveniment a un departament.
Fer un llistat dels esdeveniments de cada departament.
Fer un llistat que mostri lautor, la data del fet i el fet per a cada departament de la nostra base
de dades.
El prototip de la funció serà:
void LlistaFets ( TBaseEUSS );
Per a realitzar això, es demana fer les funcions:
void LlistaDpmt ( TBaseDpmt );
que llista els fets dun departament.
