1 / 23

TABLAS

TABLAS. Sintaxis nombre_nuevo_tipo = tabla [rango, rango,...] de nombre_tipo donde rango se define como primer_rango .. ultimo_rango siendo primer_rango y ultimo_rango expresiones de constantes de tipo entero el número de elementos que se pueden guardar en la

gamada
Download Presentation

TABLAS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. TABLAS • Sintaxis nombre_nuevo_tipo = tabla [rango, rango,...] de nombre_tipo donde rango se define como primer_rango .. ultimo_rangosiendo primer_rango y ultimo_rango expresiones de constantes de tipo entero el número de elementos que se pueden guardar en la tabla es igual a ultimo_rango–primer_rango+1

  2. Exemple de problema que utilitza cadenes Algoritme comparar_2paraules Var p1,p2:paraula ; j: enterfvar j := 1;p1[j] := LlegirCaràcter() mentre p1[j] != ‘ ‘ fer j := j+1 p1[j] := LlegirCaràcter() fmentre p1[j]:= NUL mentre p2[j] != ‘ ‘ fer j := j+1 p2[j] := LlegirCaràcter() fmentre p2[j]:= NUL

  3. Si p1>p2 llavors j := 1; mentre p1[j] != NUL fer EscriureCaràcter(p1[j]) j := j+1 fmentre sino j := 1; mentre p2[j] != NUL fer EscriureCaràcter(p2[j]) j := j+1 fmentre fsi falgoritme

  4. #include <string.h> typedef char paraula[20]; void main(void){ paraula p1,p2; cin>>p1; cin>>p2; If (strcmp(p1,p2) == 0){ cout<<“ Son iguals”<<endl;} else if (strcmp(p1,p2) < 0){ cout<< p1<< “Es menor”;} else { cout<<p2<<“Es menor”;} }

  5. Llegir dues matrius de N*N, i escriure el resultat de sumar-les Definir tipus matriu Definir variables tipus matriu Llegir les dues matrius Escriure el resultat de sumar-les component a component

  6. Llegir matriu per j en [1..N] fer ; accedir a cada fila per k en [1..N] fer ; accedir a cada columne m1[j,k] := LlegirEnter() fper fper Ex: Si N és 2 I l’entrada 2 3 5 7 j = 1 k= 1 m1[1,1] --- 2 j = 1 k= 2 m1[1,2] --- 3 j = 2 k= 1 m1[2,1] --- 5 j = 2 k= 2 m1[2,2] --- 7

  7. Algoritme sumar_2matrius const N: enter = 20 fconst tipus matriu = taula [1..N,1..N] deenter ftipus var m1, m2 :matriu; j,k: enterfvar per j en [1..N] fer per k en [1..N] fer m1[j,k] := LlegirEnter() fper fper per j en [1..N] fer per k en [1..N] fer m2[j,k] := LlegirEnter() fper fper

  8. Escriure la suma per j en [1..N] fer per k en [1..N] fer EscriureEnter (m1[j,k] + m2[j,k]) fper fper

  9. Algoritme sumar_2matrius const N: enter = 20 fconst tipus matriu = taula [1..N,1..N] deenter ftipus var m1, m2 :matriu; j,k: enterfvar per j en [1..N] fer per k en [1..N] fer m1[j,k] := LlegirEnter() fper fper per j en [1..N] fer per k en [1..N] fer m2[j,k] := LlegirEnter() fper fper per j en [1..N] fer per k en [1..N] fer EscriureEnter (m1[j,k] + m2[j,k]) fper fper

  10. Llegir dues matrius de N*N, i escriure el resultat de multiplicar-les Definir tipus matriu Definir variables tipus matriu Llegir les dues matrius Multiplicar-les Escriure el resultat

  11. Multiplicar dues matrius A cada component jk de la matriu resultant guardar el resultat de sumar el producte de cada element de la fila j de la primera matriu amb cada element de la columne k de la segona M1 M2 1 2 3 5 6 7 2 1 3 9 11 13 3 2 1 15 14 5 M3 1*5+2*9+3*15 1*6+2*11+3*14 1*7+2*13+3*5 2*5+1*9+3*15 2*6+1*11+3*14 2*7+1*13+3*5 3*5+2*9+º*15 3*6+2*11+1*14 3*7+2*13+1*5 per j en [1..N] fer ; accedir a cada fila per k en [1..N] fer ; accedir a cada columne m3[j,k]=0 per l en [1..N] fer ; calcular el sumatori de producte de m3[j,k] = m3[j,k]+m1[j,l] * m2[l,k] fper fper fper

  12. Algoritme producte_2matrius const N: enter = 20 fconst tipus matriu = taula [1..N,1..N] deenter ftipus var m1, m2 ,m3:matriu; j,k,l: enterfvar per j en [1..N] fer per k en [1..N] fer m1[j,k] := LlegirEnter() fper fper per j en [1..N] fer per k en [1..N] fer m2[j,k] := LlegirEnter() fper fper per j en [1..N] fer ; accedir a cada fila per k en [1..N] fer ; accedir a cada columne m3[j,k] := 0 per l en [1..N] fer ; calcular el sumatori de producte de m3[j,k] = m3[j,k] +m1[j,l] * m2[l,k] fper fper fper per j en [1..N] fer per k en [1..N] fer EscriureEnter (m3[j,k]) fper fper

  13. Determinar si tots els elements de la diagonal d’una matriu són 0 Plantejat com una cerca: Trobar el primer element de la diagonal que NO sigui 0 Algoritme Determinar si diagonal es 0 const N: enter = 20 fconst tipus matriu = taula [1..N,1..N] deenter ftipus var m:matriu; j,k: enter ; trobat : booleàfvar per j en [1..N] fer per k en [1..N] fer m1[j,k] := LlegirEnter() fper fper

  14. trobat := fals ; j:= 1 mentre j<= N i no trobat fer si m[j,j] != 0 llavors trobat := cert fsi j:= j +1 Fmentre Si trobat llavors EscriureCaràcter(‘N’) sino EscriureCaràcter(‘S’) fsi

  15. Algoritme Determinar si diagonal es 0 const N: enter = 20 fconst tipus matriu = taula [1..N,1..N] deenter ftipus var m:matriu; j,k: enter ; trobat : booleàfvar per j en [1..N] fer per k en [1..N] fer m1[j,k] := LlegirEnter() fper fper trobat := fals ; j:= 1 mentre j<= N i no trobat fer k:= 1 mentre k<= N i no trobat fer si j = k I m[j,k] != 0 llavors trobat := cert fsi k:= k +1 fmentre j:= j +1 fmentre si trobat llavors EscriureCaràcter(‘S’) sino EscriureCaràcter(‘S’) fsi

  16. Algoritme Cercar número const N: enter = 20 fconst tipus matriu = taula [1..N,1..N] deenter ftipus var m:matriu; j,k,num: enter ; trobat : booleàfvar per j en [1..N] fer per k en [1..N] fer m[j,k] := LlegirEnter() fper fper num := LlegirEnter() trobat := fals ; j:= 1 mentre j<= N i no trobat fer k:= 1 mentre k<= N i no trobat fer si m[j,k] = num llavors trobat := cert fsi k:= k +1 fmentre j:= j +1 fmentre si trobat llavors EscriureCaràcter(‘S’) sino EscriureCaràcter(‘N’) fsi

  17. Algoritme Cercar número igual a suma de coordenades const N: enter = 20 fconst tipus matriu = taula [1..N,1..N] deenter ftipus var m:matriu; j,k: enter ; trobat : booleàfvar per j en [1..N] fer per k en [1..N] fer m[j,k] := LlegirEnter() fper fper trobat := fals ; j:= 1 mentre j<= N i no trobat fer k:= 1 mentre k<= N i no trobat fer si m[j,k] = j+k llavors trobat := cert fsi k:= k +1 fmentre j:= j +1 fmentre si trobat llavors EscriureCaràcter(‘S’) sino EscriureCaràcter(‘N’) fsi

  18. Determinar si una matriu és simètrica Plantejat com una cerca: Trobar el primer element de la matriu que no sigui simètric Algoritme Determinar si es simetrica const N: enter = 20 fconst tipus matriu = taula [1..N,1..N] deenter ftipus var m:matriu; j,k: enter ; trobat : booleàfvar per j en [1..N] fer per k en [1..N] fer m1[j,k] := LlegirEnter() fper fper

  19. trobat := fals ; j:= 1 mentre j<= N i no trobat fer k:= 1 mentre k<= N i no trobat fer si m[j,k] != m[k,j] llavors ; condició de no simètric trobat := cert fsi k:= k +1 fmentre j:= j +1 Fmentre Si trobat llavors EscriureCaràcter(‘n’) sino EscriureCaràcter(‘S’) fsi

  20. trobat := fals ; j:= 1 mentre j<= N i no trobat fer k:= 1 mentre k<j i no trobat fer ; millora: només accedir si m[j,k] != m[k,j] llavors ; a la matriu inferior trobat := cert fsi k:= k +1 fmentre j:= j +1 Fmentre Si trobat llavors EscriureCaràcter(‘n’) sino EscriureCaràcter(‘S’) fsi

  21. Taula de taules tipus tparaules = taula[1..20] de paraula paraula = taula[1..25] de caràcter Ftipus Var tp: tparaules; j,k:enter fvar

  22. Legir seqüència de paraules acabada en “.” i una nova paraula i cercar aquesta paraula a la taula de paraules Algoritme cercar Var tp: tparaula; j,k:enter; p:paraula fvar k:= 1; j := 1;tp[j][k] := LlegirCaràcter() mentre tp[j][k] != ‘ ‘ fer k := k+1 tp[j][k] := LlegirCaràcter() fmentre tp[j][k] := NUL Mentre tp[j] != “.” fer j:= j+1 ; k:= 1; tp[j][k] := LlegirCaràcter() mentre tp[j][k] != ‘ ‘ fer k := k+1 tp[j][k] := LlegirCaràcter() fmentre tp[j][k] := NUL fmentre

  23. j := 1;p[j] := LlegirCaràcter() mentre p[j] != ‘ ‘ fer j := j+1 p[j] := LlegirCaràcter() fmentre p[j] := NUL; trobat := fals; j:= 1 Mentre tp[j]!= “.” i no trobat fer si tp[j] = p llavors trobat := cert fsi j:= j+1 Fmentre Si trobat llavors EscriureCaràcter(‘S’) sino EscriureCaràcter(‘N’) fsi

More Related