domingo, 31 de marzo de 2013

Pseudocódigo Vectores y Matrices III


Ejercicios de arrays:




Buscar los dos mayores de una lista de N datos.




1 Proceso BuscarLosDosMayoresDeUnaListadeNNumeros
2      Definir N, Indice Como Entero;
3      Escribir "Dime N > 2";
4      Leer N;
5      Definir Nums Como Entero;
6      Dimension Nums[N];
7      Para Indice <- 1 Hasta N Hacer
8            Nums[Indice] <- Azar(100);
9            Escribir Nums[Indice];
10     FinPara
11     //Buscar los dos Mayores
12     Nums[1]<-99;
13     Definir Mayores Como Entero;
14     Dimension Mayores[2]; //pos 2 es el mas alto.
15     Si Nums[1] > Nums[2] entonces
16           Mayores[2] <- Nums[1];
17           Mayores[1] <- Nums[2];
18     Sino
19           Mayores[2] <- Nums[2];
20           Mayores[1] <- Nums[1];
21     FinSi
22     Para Indice <- 3 hasta N hacer
23           si Nums[Indice] > Mayores[1] entonces //> que algun mayor
24                  si Nums[Indice] > Mayores[2] entonces //> que el mas mayor
25                         Mayores[1]<-Mayores[2]; //El mayor pas al 2mayor
26                         Mayores[2]<-Nums[Indice];
27                  sino // mayor que el 2º mayor
28                         Mayores[1]<-Nums[Indice];
29                  FinSi
30           FinSi
31     FinPara
32
33     Escribir "Resultados";
34     Para Indice<-2 hasta 1 Con Paso -1 Hacer
35           Escribir Mayores[Indice];
36
37     FinPara
38 FinProceso


Se ingresan los precios de 5 artículos y las cantidades vendidas por una empresa en sus 4 sucursales.Informar:


  • Las cantidades totales de cada articulo.
  • La cantidad de artículos en la sucursal 2.
  • La cantidad del articulo 3 en la sucursal 1.
  • La recaudación total de cada sucursal.
  • La recaudación total de la empresa.
  • La sucursal de mayor recaudación.


1 Proceso PreciosArticulosySucursales
2      //Se ingresan los precios de 5 articulos y las cantidades
3      //vendidas por una empresa en sus 4 sucursales.
4      //Informar:
5      // Las cantidades totales de cada articulo.
6      // La cantidad de artículos en la sucursal 2.
7      // la cantidad del articulo 3 en la sucursal 1.
8      // la recaudación total de cada sucursal.
9      // La recaudación total de la empresa.
10 // La sucursal de mayor recaudación.
11     Definir Precios como real;
12     Dimension Precios[5]; // precios de los 5 articulos
13     Definir VentasSucursal Como Entero;
14     Dimension VentasSucursal[4,5];
15     Definir I, S , A Como Entero;
16     Escribir "Dime los precios";
17     Para I<-1 hasta 5 Hacer
18           Escribir "A" , I Sin Saltar;
19           Leer Precios[I] ;
20     FinPara
21     Para S<-1 Hasta 4 hacer //paso por las sucursales
22           Escribir "";
23           Escribir "Venta de la sucursal num: ", S;
24           Para A <-1 hasta 5 hacer //Pido ventas de cada articulo
25                  Escribir "A", A Sin Saltar;
26                  Leer VentasSucursal[S,A] ;
27           finpara
28     FinPara
29
30     Definir Cantidades como entero;
31     Dimension Cantidades[5];//cantidades totales de cada articulo.
32     Para i<-1 hasta 5 hacer
33           Cantidades[i]<-0; // a acero para acumular
34     FinPara
35
36     Definir totalS2 como entero;//cantidad de art en sucursal 2.
37     TotalS2 <-0;
38
39     Definir CantAr3enS1 como entero;//cant del art 3 en sucursal 1.
40     CantAr3enS1 <- VentasSucursal[1,3];
41
42     Definir Recaudaciones como real;
43     Dimension Recaudaciones[4]; //recaudacion total de cada sucul.
44     Para I<-1 hasta 4 hacer
45           Recaudaciones[I]<-0;
46     FinPara
47     Definir Total como real;// recaudacion total de la empresa.
48 Total <- 0;
49     Definir MejorSucursal como entero;//sucursal de mayor recaudacion.
50     Definir MaxSucursal como real;
51     MaxSucursal <- 0;
52     Para S<-1 Hasta 4 Hacer
53           Para A<-1 hasta 5 Hacer
54                  Cantidades[A] <- Cantidades[A] + VentasSucursal[S,A];
55                  Si S = 2 Entonces
56                         TotalS2 <- TotalS2 + VentasSucursal[S,A];
57                  FinSi
58           Recaudaciones[S] <- Recaudaciones[S] + ( VentasSucursal[S,A] * Precios[A]);
59           Total <- Total + ( VentasSucursal[S,A] * Precios[A]);
60           FinPara
61     FinPara
62
63     Escribir "Total de Ventas por Articulos";
64     Para i<-1 hasta 5 hacer
65           Escribir "Articulo " , i , "Total: " ,Cantidades[i];
66     FinPara
67     Escribir "Total ventas Sucursal 2 :" , TotalS2;
68     Escribir "cant del art 3 en sucursal 1: " , CantAr3enS1;
69     Escribir "Recaudacion de cada sucursal";
70     Para I<-1 hasta 4 hacer
71           Si Recaudaciones[I] > MaxSucursal entonces
72                  MaxSucursal<-Recaudaciones[I];
73                  MejorSucursal<-I;
74           FinSi
75           Escribir "El Total en sucursal ", i , " Es ", Recaudaciones[I];
76     FinPara
77     Escribir "Recaudacion total de la empresa ", Total;
78     Escribir "La Mejor sucursal es ", MejorSucursal, " Con " , MaxSucursal ," Euros.";
79 FinProceso


Hay unos multicines con 5 salas, y cada sala con 100 personas distribuidas en 20 asientos y 5 filas. Si yo pido entrada para una sala, implementar un programa que me diga si hay sitio en la sala.



Proceso Cines
2      //Hay unos multicines con 4 salas,
3      //y cada sala con 100 personas distribuidas
4      //en 20 asientos y 5 filas.
5      //Si yo pido entrada para una sala, implementar
6      //un programa que me diga si hay sitio en la sala.
7      //Decir fila y asiento
8      Definir Cines como logico//Verdadero es ocupado
9      Dimension Cines[4,5,20]; // 4 salas, 5 filas , 20 asientos
10     Definir SComo Entero;
11     Para S<-hasta Hacer
12           Para F<-hasta Hacer
13                  Para A<-hasta 20 Hacer
14                         Cines[S,F,A<- (Azar(2) = 1);
15                  FinPara
16           FinPara
17     FinPara
18
19     Para S<-hasta Hacer
20           Escribir "Sala : "S;
21           Para F<-hasta Hacer
22                  Para A<-hasta 20 Hacer
23                         Si Cines[S,F,Aentonces //Verdadero ocupado
24                                Escribir " X " sin saltar;
25                         sino
26                                Escribir " . " sin saltar;
27                         FinSi
28                  FinPara
29                  Escribir "";
30           FinPara
31     FinPara
32
33     Definir SalaFila Asiento Como Entero;
34     Definir SeguirBuscado como logico;
35     Repetir
36           Escribir "Dime a que sala queires ir??";
37           Leer Sala;
38           Si Sala <> Entonces
39                  Borrar Pantalla;
40                  F<-1;
41                  A<-1;
42                  SeguirBuscado<-Verdadero;
43                  Mientras SeguirBuscado
44                         si Cines[Sala,F,A] = Falso Entonces
45                                SeguirBuscado<-falso;
46                         sino
47                                A<-A+1;
48                                Si 20 entonces
49                                      <- 1;
50                                      <- 1;
51                                      si entonces
52                                             SeguirBuscado<- Falso;
53                                      FinSi
54                                FinSi
55                         FinSi
56                  FinMientras
57                  Si Entonces //sala ocupada
58                         Escribir "Sala ocupada.";
59                  Sino
60                         Cines[Sala,F,A<- Verdadero;
61                         Escribir "Tu entrada es S:" Sala " F:"F" A:",A;
62                  FinSi
63                  Para S<-hasta Hacer
64                         Escribir "Sala : "S;
65                         Para F<-hasta Hacer
66                                Para A<-hasta 20 Hacer
67                                      Si Cines[S,F,Aentonces //Verdadero ocupado
68                                             Escribir " X " sin saltar;
69                                       sino
70                                             Escribir " . " sin saltar;
71                                      FinSi
72                                FinPara
73                                Escribir "";
74                         FinPara
75                  FinPara
76           FinSi
77     Hasta Que Sala 0
78 FinProceso


Opción vender varias entradas:




Proceso CinesVariasEntradas
2      //Hay unos multicines con 4 salas,
3      //y cada sala con 100 personas distribuidas
4      //en 20 asientos y 5 filas.
5      //Si yo pido un numeros de entradas para una sala, implementar
6      //un programa que me diga si hay sitio en la sala.
7      //Decir fila y asiento
8      Definir Cines como logico//Verdadero es ocupado
9      Dimension Cines[4,5,20]; // 4 salas, 5 filas , 20 asientos
10     Definir SComo Entero;
11     Para S<-hasta Hacer
12           Para F<-hasta Hacer
13                  Para A<-hasta 20 Hacer
14                         Cines[S,F,A<- (Azar(2) = 1);
15                  FinPara
16           FinPara
17     FinPara
18
19     Para S<-hasta Hacer
20           Escribir "Sala : "S;
21           Para F<-hasta Hacer
22                  Para A<-hasta 20 Hacer
23                         Si Cines[S,F,Aentonces //Verdadero ocupado
24                                Escribir " X " sin saltar;
25                         sino
26                                Escribir " . " sin saltar;
27                         FinSi
28                  FinPara
29                  Escribir "";
30           FinPara
31     FinPara
32     Definir SalaNumEntradasEntradasResevadasEntradas Como Entero;
33     Dimension Entradas[153]; // NumEntada(1)Sala (2)Fila (3)Asiento
34     Definir SeguirBuscado como logico;
35     Repetir
36           Escribir "Dime a que sala queires ir??";
37           Leer Sala;
38           Si Sala <> Entonces
39                  Escribir "Dime cuantas entradas max(15) ?";
40                  Leer NumEntradas;
41
42                  Borrar Pantalla;
43
44                  EntradasResevadas <-0;
45                  F<-1;
46                  A<-1;
47                  SeguirBuscado<-Verdadero;
48                  Mientras SeguirBuscado
49                         si Cines[Sala,F,A] = Falso Entonces
50                                EntradasResevadas <- EntradasResevadas 1;
51                                Entradas[EntradasResevadas,]<-Sala;
52                                Entradas[EntradasResevadas,]<-F;
53                                Entradas[EntradasResevadas,]<-A;
54                                si EntradasResevadas NumEntradas Entonces
55                                      SeguirBuscado<-falso;
56                                Sino
57                                      A<-A+1;
58                                      Si 20 entonces
59                                             <- 1;
60                                             <- 1;
61                                             si entonces
62                                                    SeguirBuscado<- Falso;
63                                             FinSi
64                                      FinSi
65                                FinSi
66                         sino
67                                A<-A+1;
68                                Si 20 entonces
69                                      <- 1;
70                                      <- 1;
71                                      si entonces
72                                             SeguirBuscado<- Falso;
73                                      FinSi
74                                FinSi
75                         FinSi
76                  finMientras
77
78
79
80
81                  Si Entonces //sala ocupada
82                         Escribir "Sala ocupada ";
83                  Sino
84                  //Cines[Sala,F,A] <- Verdadero;
85                         Escribir "Tus Entradas:";
86                         Para S<-Hasta NumEntradas Hacer
87                                Sala <- Entradas[S,];
88                                F<-Entradas[S,];
89                                A<- Entradas[S,];
90                                Cines[Sala,F,A<- Verdadero;
91                                Escribir "Entrada " S" en S:" Sala " F:"F" A:",A;
92                         FinPara
93
94                  FinSi
95     Para S<-hasta Hacer
96           Escribir "Sala : "S;
97           Para F<-hasta Hacer
98                  Para A<-hasta 20 Hacer
99                         Si Cines[S,F,Aentonces //Verdadero ocupado
100                        Escribir " X " sin saltar;
101                 sino
102                        Escribir " . " sin saltar;
103                 FinSi
104           FinPara
105          Escribir "";
106    FinPara
107 FinPara
108 FinSi
109 Hasta Que Sala 0
110
111
112
113 FinProceso


Programa que lee dos matrices y permite operar con ellas sumar , restar y multiplicar.



1 Proceso OpertarConMatrices
2      //Programa que lee dos matrices y permite operar con ellas
3      // 1 = sumar , 2 = restar , 3 = multiplicar , 4 = Fin
4      Definir FilasA , ColumnasA como entero;
5      Definir FilasB , ColumnasB como entero;
6      Definir MatrizA , MatrizB Como Real;
7      Escribir "Dime las filas de la Matriz A";
8      Leer FilasA;
9      Escribir "Dime las columnas de la Matriz A";
10     Leer ColumnasA;
11     Dimension MatrizA[FilasA, ColumnasA];
12     Definir i,j,x como entero;
13     Para i<-1 hasta FilasA hacer
14           Para j<-1 hasta ColumnasA hacer
15                  MatrizA[i,j] <- azar(10) ;
16           FinPara
17     FinPara
18     Escribir "Dime las filas de la Matriz B";
19     Leer FilasB;
20     Escribir "Dime las columnas de la Matriz B";
21     Leer ColumnasB;
22     Dimension MatrizB[FilasB, ColumnasB];
23     Para i<-1 hasta FilasB hacer
24           Para j<-1 hasta ColumnasB hacer
25                  MatrizB[i,j] <- azar(10);
26           FinPara
27     FinPara
28     Escribir "Matriz A";
29     Para i<-1 hasta FilasA hacer
30           Para j<-1 hasta ColumnasA hacer
31                  Escribir MatrizA[i,j] , " " Sin Saltar;
32           FinPara
33           Escribir "";
34     FinPara
35     Escribir "Matriz B";
36     Para i<-1 hasta FilasB hacer
37           Para j<-1 hasta ColumnasB hacer
38                  Escribir MatrizB[i,j] , " " Sin Saltar;
39           FinPara
40           Escribir "";
41     FinPara
42     Definir operacion Como Entero; //1 suma 2 resta 3 producto 4 salir
43     Definir MatrizS, MatrizP como real;
44     Dimension MatrizS[FilasA, ColumnasA];
45     Dimension MatrizP[FilasA, ColumnasB];
46     Repetir
47           Escribir "Dime la operacion a realizar 1 Suma 2 Resta 3 Producto 4 Fin";
48           Leer Operacion;
49           segun Operacion hacer
50                  1: //sumar
51                  Si FilasA <> FilasB | ColumnasA <> ColumnasB entonces
52                         Escribir "Solo se pueden sumar matrices de la misma dimension";
53                  Sino
54                         Para i<-1 hasta FilasA hacer
55                         Para j<-1 hasta ColumnasA hacer
56                                MatrizS[i,j] <- MatrizA[i,j] + MatrizB[i,j];
57                         FinPara
58                  FinPara
59                  Escribir "Matriz Suma";
60                  Para i<-1 hasta FilasA hacer
61                         Para j<-1 hasta ColumnasA hacer
62                                Escribir MatrizS[i,j] , " " Sin Saltar;
63                         FinPara
64                         Escribir "";
65                  FinPara
66           FinSi
67           2: //Restar
68           Si FilasA <> FilasB | ColumnasA <> ColumnasB entonces
69                  Escribir "Solo se pueden restar matrices de la misma dimension";
70           Sino
71                  Para i<-1 hasta FilasA hacer
72                         Para j<-1 hasta ColumnasA hacer
73                                MatrizS[i,j] <- MatrizA[i,j] - MatrizB[i,j];
74                         FinPara
75                  FinPara
76                  Escribir "Matriz Resta";
77                  Para i<-1 hasta FilasA hacer
78                         Para j<-1 hasta ColumnasA hacer
79                                Escribir MatrizS[i,j] , " " Sin Saltar;
80                         FinPara
81                         Escribir "";
82                  FinPara
83           FinSi
84           3: //Producto
85           Si ColumnasA <> FilasB Entonces
86                  Escribir "Solo se pueden multiplicar si el número de columnas de la primera matriz coincida con el número de filas de la segunda";
87           Sino
88                  Para i<-1 hasta FilasA Hacer
89                         para j<-1 hasta ColumnasB Hacer
90           // Suma i,j es Ain*Bnj
91                                MatrizP[i,j] <- 0;
92                           para x<-1 hasta ColumnasA hacer
93                                MatrizP[i,j] <- MatrizP[i,j] + (MatrizA[i,x] * MatrizB[x,j]);
94                           FinPara
95                         FinPara
96                  FinPara
97
98
99                  Escribir "Matriz Producto";
100          Para i<-1 hasta FilasA Hacer
101                 para j<-1 hasta ColumnasB Hacer
102                        Escribir MatrizP[i,j] , " " Sin Saltar;
103                 FinPara
104                 Escribir "";
105          FinPara
106    FinSi
107    FinSegun
108 Hasta Que operacion = 4
109
110
111
112 FinProceso

Siguiente>