Mostrando entradas con la etiqueta Matrices. Mostrar todas las entradas
Mostrando entradas con la etiqueta Matrices. Mostrar todas las entradas

martes, 16 de julio de 2013

llenar una matriz de f y c que se ingresan por teclado y que los muestre del ultimo al primero

Leer dimensiones de una matriz por teclado, pedir valores y mostrar matriz.


1 Proceso MatrizFC
2  //llenar una matriz de f y c que se ingresan por teclado y que los muestre del ultimo al
primero
3  Definir Filas , Columnas, Matriz como entero;
4  Escribir "Cuantas filas?";
5  Leer Filas;
6  Escribir "Cuantas columnas?";
7  Leer Columnas;
8  Dimension Matriz[Filas, Columnas];
9
10  Definir i, j Como Entero;
11  Para i=1 hasta Filas
12   Para j= 1 hasta Columnas
13    Escribir "Dime valor para F = ", i, " C= ", j;
14    Leer Matriz[i,j];
15  FinPara
16 FinPara
17
18 Escribir "Mostrar matriz";
19
20 Para i=1 hasta Filas
21   Para j= 1 hasta Columnas
22    Escribir Matriz[i,j] , " " Sin Saltar;
23   FinPara
24   Escribir "";
25 FinPara
26
27
28 FinProceso

29

lunes, 1 de abril de 2013

Pseudocódigo Sub Procesos IV


Ejercicios Sub Procesos recursivos con PSeInt:



Cálculo del producto mediante sumas utilizando la recursividad.




1 Subproceso res <- Producto(NumA, NumB)
2      Definir res como real;
3      Si NumB = 0 entonces
4            res <- 0;
5      Sino
6            si NumB > 0 Entonces
7                   res <- NumA + Producto(NumA, NumB - 1);
8            Sino
9                   res <- -NumA + Producto(NumA, NumB + 1);
10           FinSi
11     FinSi
12 FinSubProceso
13 //5 * 3
14 //5 + ( 5 * 2)
15 //5 + 5 + ( 5*1)
16 //5 + 5 + 5
17
18 Proceso ProductoSumando
19     //Calculo del producto mediante suma
20     Definir A, B como real;
21     Escribir "Dime los numeros a multiplicar";
22     Leer A, B;
23     Escribir "El producto de ",A, " * ", B, " es ", Producto(A, B);
24 FinProceso




Programa que permita calcular el elemento N de la serie de Fibonacci:


  • Valores de la serie:
    • 0,1, 1 ,2 ,3 ,5 ,8 ,13 ,21 ,34 ,…
    • Fib(n) = Fib(n-1) + Fib(n-2). El elemento n es la suma de los dos anteriores
    • Fib(0) = 0
    • Fib(1) = 1


1 subproceso res <- Fibonacci(Num)
2      Definir res Como Entero;
3      //Fib(n) = Fib(n-1) + Fib(n-2)
4      //Fib(0) = 0
5      //Fib(1) = 1
6      Segun Num
7            0: Res<-0;
8            1: Res<-1;
9            De Otro Modo:
10                  Res<- Fibonacci(Num-1) + Fibonacci(Num-2);
11     FinSegun
12 FinSubProceso
13
14 Proceso FibonacciRec
15     Definir Numero Como Entero;
16     Escribir "Dime el número para Fibonacci";
17     Leer Numero;
18     Escribir "Fib de ", Numero " es ", Fibonacci(Numero);
19 FinProceso


Programar un algoritmo recursivo que permita invertir un número.

  • Ejemplo: 
    • Entrada: 123 
    • Salida: 321
1 Subproceso res <- Invertir(Numero)
2      Definir res, A, B Como Entero;
3      Definir Multi como entero;
4      si Numero < 10 entonces
5            res <- Numero;
6      Sino
7            A <- (Numero % 10);
8            B <- Numero/10;
9            Multi <- ln(Numero) /ln(10);
10           Escribir "A " , A , " B " , B , " Ceros" , Multi;
11           res <- (A * 10^Multi ) + Invertir(B );
12     FinSi
13 FinSubProceso
14 Proceso InvertirUnNumeroRecursivo
15     //Programar un algoritmo recursivo que permita
16     //invertir un número.
17     /      /Ejemplo:
18     //Entrada: 123 Salida: 321
19     Definir Numero Como Entero;
20     Numero <- 1234567;
21     Escribir Numero ," - " , invertir(Numero);
22 FinProceso
23 // invertir(123)
24 // 3 00 + invertir (12)
25 // 300 + 2 0 + Invertir(1)
26 // 300 + 20 + 1


Torres de hanoi.


1 SubProceso InicioTorres(LasTorres , Altura)
2      Definir I, J como entero;
3      para I <- 2 hasta 3 hacer
4            para J <- 1 hasta Altura hacer
5                   LasTorres[I, J] <- 0;
6            FinPara
7      FinPara
8      para J <- 1 hasta Altura hacer
9            LasTorres[1, J] <- ( Altura - J) + 1 ;
10     FinPara
11 FinSubProceso
12
13 SubProceso VerTorres(LasTorres, Altura)
14     Definir I, J como entero;
15     para J <- Altura hasta 1 Con Paso -1 hacer
16           para I <- 1 hasta 3 hacer
17                  Escribir LasTorres[I, J] ," " Sin Saltar ;
18           FinPara
19           Escribir "";
20     FinPara
21     Escribir "------------------------------";
22 FinSubProceso
23
24 SubProceso Pasar(LasTorres,origen, destino ,Altura)
25     Definir aux, io, id Como Entero;
26     io <- Altura ; //bucar el ultimo cero
27     mientras io > 1 & LasTorres[origen, io ] = 0
28           io <- io - 1;
29     FinMientras
30     id <- Altura + 1;
31     mientras id > 1 & LasTorres[destino, id - 1] = 0
32            id <- id - 1;
33     FinMientras
34     Escribir "pasar de origen ", origen, " destino ", destino;
35     LasTorres[destino, id ] <- LasTorres[origen, io];
36     LasTorres[origen, io]<-0;
37     VerTorres(LasTorres, Altura);
38 FinSubProceso
39
40 SubProceso Hanoi(Alt, LasTorres,origen, auxiliar, destino, Altura)
41     Si Alt = 1 entonces
42           //el disco 1 de pila origen a la pila destino
43           //(insertarlo arriba de la pila destino)
44           Pasar(LasTorres,origen, destino ,Altura);
45     Sino
46           //mover todas las fichas menos la más grande (n)
47           //a la varilla auxiliar
48           hanoi(Alt - 1, LasTorres, origen, destino, auxiliar , altura);
49           //mover la ficha grande hasta la varilla final
50           Pasar(LasTorres,origen, destino ,Altura);
51           //mover todas las fichas restantes,
52           //0...n-1, encima de la ficha grande (n)
53           hanoi(Alt - 1 , LasTorres, auxiliar, origen, destino, altura);
54     FinSi
55 FinSubProceso
56
57
58 Proceso LasTorresDeHanoi
59     Definir Torres , Altura, ori, aux, des como entero;
60     Escribir "Dime la altura";
61     Leer Altura;
62     Dimension Torres[3, Altura];
63     InicioTorres(Torres, Altura);
64     VerTorres(Torres, Altura);
65     ori<-1;
66     aux<-2;
67     des<-3;
68     Hanoi(Altura, Torres ,ori, aux, des, Altura);
69     VerTorres(Torres, Altura);
70 FinProceso



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>