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


Respostes exercicis T5, Ejercicios de Fundamentos de la Informática

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

Tipo: Ejercicios

2015/2016

Subido el 27/12/2016

mi_mii-7
mi_mii-7 🇪🇸

3.8

(6)

7 documentos

1 / 31

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Tema 5a: Ti
p
us de Dades
p
Taules
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f

Vista previa parcial del texto

¡Descarga Respostes exercicis T5 y más Ejercicios en PDF de Fundamentos de la Informática solo en Docsity!

Tema 5a: Tipus de Dades

p

Taules

Problema 1

Inici

Llegir Temperatures

Inici i=

i=1; mean=mes[0];

Inici

Llegir Temperatures

mes

i<MESOS?

tmax=mes[0]; max=0;tmin=mes[0]; min=

i<MESOS?

Calcular max, min,

mean

SI
NO
NO

Llegir mes[i]

i MESOS ?mean+=mes[i]

i=0;

SI
SI

i++ Fi

mes[i]>tmax?

tmax=mes[i]

max=i tmin=mes[i]

i<MESOS?

SI SI
NO

E^

i^

i 1

NO SI
SI

mes[i]>mean ?mes[i]<mean?

i++ mes[i]<tmin?

tmin=mes[i]

min=i

Escriure i+1“sota mitjana”

SI
NO

Escriure i+1“sobre mitjana”

NO
SI SI

i++

i++

Escriure max+1 i min+

mean=mean/MESOS

NO Fi

Escriure max+1 i min+

Fi

Problema 1^ void

EstadistiquesVector

(int

v[]

int

dim

int

posmin

int

posmax

float

&mean)

void

EstadistiquesVector

(int

v[]

,^

int

dim

,^

int

posmin

,^

int

posmax

,^

float

&mean)

int i;int t_min,t_max;

Variables passades per referència

mean=v[0]; t_min=v[0];

posmin=0;

t_max=v[0];

posmax=0;

Variables

passades per referència

for (i=1;i<dim;i++)

//Recorregut del

vector

per

calcular

max,

min

i

mitjana

mean=mean+v[i];//AQUI:

Càlcul del

màxim i

el

mínim del

vector

} mean=mean/dim;mean=mean/dim; }

Problema 1^ void

EstadistiquesVector

(int

v[]

int

dim

int

posmin

int

posmax

float

&mean)

void

EstadistiquesVector

(int

v[]

,^

int

dim

,^

int

posmin

,^

int

posmax

,^

float

&mean)

int i;int t_min,t_max;mean=v[0]; t_min=v[0];

posmin=0;

t_max=v[0];

posmax=0;

for (i=1;i<dim;i++)

//Recorregut del

vector

per

calcular

max,

min

i

mitjana

mean=mean+v[i];if (v[i]>t max)if (v[i]>t_max){

t_max=v[i];posmax=i; }} else{

if (v[i]<t_min){{

t_min=v[i];posmin=i; } }} } mean=mean/dim; }

Problema 2El programa haurà de llegir la temperatura màxima de tots els dies de l’any ihaurà de construir una taula en què per cada possible valor de temperatura (de-10 a 50) es guardi quants dies han tingut aquella temperatura al llarg de l’any.10 a 50) es guardi quants dies han tingut aquella temperatura al llarg de l any.

PLANTEJAMENT GENERAL

(^

C)

(no C)

Array

Temperatures

Array

Freqüències

Dia

Temp

Volem

Construir

Temp

Freq

Construir

.^

.^

.^

.^

.^

.^

Problema 2

PLANTEJAMENT GENERALPLANTEJAMENT GENERAL

(no C)

Dia

Temp Array Temperatures

Temp

Array^ Freq Freqüències

p

1

  • 2

     3 

0

.^

.

VolemConstruir

p^

q

25

-^

.^

.

0

50

.^

.

.^

.

365

3

.^

.

.^

.

50

1

it h

t^

t^

[Di

])

switch (temperatures[Dia]){

case

frequencia[

‐10]++;break;

case

9: frequencia[ 9]++;break;

case

frequencia

[‐

9]++;

break

case

frequencia[

‐8]++;break;

.^

frequencia[temperatures[Dia]]++

case

frequencia[0]++;break;

case 50:

frequencia[50]++;break;

Problema 2

Inici i=

Inici i=

Inici i=

i<N_DIES?

i<N_DIES?

max=freq[0]i_max=

NO
SI
NO

Llegir temp[i]

freq[temp[i]+10]++

i<N_TEMP?

SI
SI
NO
SI
SI

i++ Fi

i++ Fi

freq[i]>max?

max=freq[i]i_max=i SI

NO

Fi^

i++

Escriure “Temperatura mésTemperatura mésrepetida:” i_max+

FiFi

Problema 2 #define

N DIES 365

#define

N

_DIES

#define

N_TEMP

del

al

ambdos inclosos

int main()int main(){

int i;int temperatures[N DIES];

p^

[ _

];

int frequencia[N_TEMP];^ //

S’ha de

inicialitzar a

tot el

vector

(^

for (i=0;i<N_TEMP;i++)

Recorregut per

inicialitzar

frequencia[i]=0;

for (i=0;i<N_DIES;i++)

Recorregut per

omplir el

vector

printf(“Introduir temperatura

del

dia %d:

“,i+1);

scanf(“%d”,&temperatures[i]);

} f^

(i 0 i N DIES i

)^

//R

t^

l^

l^

l^

f^

üè

i

for (i=0;i<N_DIES;i++)

Recorregut per

calcular

l

es

f

reqüències

frequencia[temperatures[i]+10]++;

Problema 2El programa haurà de mostrar el contingut final d’aquesta taula i calcular iescriure quina és la temperatura que s’ha repetit més cops al llarg de l’any iquina és la temperatura que s’ha repetit menys vegades. int MaximTaula(int v[],int dim){

int MinimTaula(int v[],int dim){

int i;int valmax,posmax;valmax v[0];

int i;int valmin,posmin;valmin v[0];

valmax=v[0];posmax=0;for (i=1;i<dim;i++){

valmin=v[0];posmin=0;for (i=1;i<dim;i++){

if (v[i]>valmax){

valmax=v[i];posmax i;

if (v[i]<valmin){

valmin=v[i];posmin i;

posmax=i;

} return posmax;

posmin=i;

} return posmin;

p

p

Problema: si cap dia ha tingut unadeterminada temperatura serà 0

Problema 2

int

MinimTaulaDiferent0(

int

v[]

int

dim

int

MinimTaulaDiferent0(

int

v[]

,^

int

dim

int i=0;int valmin, posmin;int valmin,

posmin

do{{

valmin=v[i];posmin=i;i++;

}while(

(valmin==0)

(i<dim)

for (

;i<dim;i++)

if ((v[i]<valmin)

(v[i]!=0))

valmin=v[i];posmin=i;

}} return posmin;

Problema 3

I i i

Inici i=

i=0;

max=v[0];min=v[0];pos=0;neg=0; sum=

Inici

Llegir v[i]

pos=0;neg=0; sum=0i<N_DIM && v[i]!=0?

NO

i++

v[i]>max?

max=v[i]

sum=+v[i]

SI
SI

i<N_DIM && v[i-1]!=0?

v[i]>max ?v[i]<min?

max=v[i]min=v[i]

NO
SI
SI
NO NO

Fi

i++

j=0; mean=sum/i;sd=

i > 0?

NO
NO
NO
SI

j < i?

sd=sd+(v[j]-mean)^

sd=sqrt(sd/(i-2))

SI
NO

j++ Fi

sd sqrt(sd/(i 2))

Problema 3Escriure un programa que llegeixi una sèrie de fins a 50 nombres entersacabada amb el 0. És a dir, s’han d’anar llegint nombres per teclat i parar quans’introdueixi un 0 o bé ja s’hagin llegit 50 valors Després de llegir i guardar las’introdueixi un 0 o bé ja s’hagin llegit 50 valors. Després de llegir i guardar lasèrie, s’ha de calcular el màxim i el mínim, el nº de valors positius i el nº devalors negatius de la sèrie, la mitja i la desviació estàndard. 1.- Quina estructura de dades necessitem per representar i manipular l’informació?

#define

N_DIM

int v[N_DIM];

Problema 3

if

(i!=0)

mitjana=(float)sum/i; printf ("El maxim es: %d \n"

valmax);

printf ( El

maxim

es

:^

%d

\

n^

,^

valmax

printf ("El

minim

es:

%d

\n",

valmin);

printf ("Positius:

%d

\n",

pos);

printf ("Negatius:

%d

\n",

neg);

printf ("Mijana: %f \n"

mitjana);

printf ( Mijana:

f^

\n

mitjana

printf ("Desv.

Std:

%f

\n",

DesviacioStdTaula(v,N_DIM,i,mitjana));

return

}^

F^

l^

l^

l^

d^

i^

tà d

d

}^

Funció per calcular la desviació estàndard

dels ‘i’ primers valors de la taula

Problema 3

3.- Com seria la funció per llegir la taula controlant que ens aturem quan

introdueixin el valor 0?void LlegirTaula(int v[N_DIM], int dim)^ {

int i=0;printf("Introduir valor %d

de

la

taula:

i+1);

(^

scanf("%d",

while ((v[i]

(i

dim

i

& v[i]

i++;printf("Introduir valor %d

de

la

taula:

i+1);

scanf("%d",

& v[i]