Вы находитесь на странице: 1из 9

1

UNIVERSIDAD NACIONAL DEL COMAHUE

FACULTAD DE INGENIERA

Asignatura: Mtodos Computacionales en Ingeniera I

Modulo 2

Primer Cuatrimestre 2014


Laboratorio: Programacin en Scilab

Grupo92

Alumno/a Legajo N Carrera


SandroChristianGonzlezGutirrez 114625 IngenieraQumica
MaradelasMercedesCapurro 107989 IngenieraQumica


Fecha de entrega: 9/05/2014

Fecha de devolucin:..

Calificacin: ..



2

Enunciado del ejercicio N 92



Se requiere de un programa que lea 30 nmeros (reales en general) de un archivo secuencial. Esos
nmeros sern asignados a las componentes de un arreglo bidimensional de 5x5 y a uno unidimensional
de 5, donde:
1) Los 5 mayores valores ledos sern asignados al vector previo multiplicarlos por ((-1)^(ndice)) , la
diagonal principal de la matriz contendr los menores nmeros ledos, siendo la ubicacin del menor de
todos ellos el que lleve los ndices (1, 1) y en orden creciente en modulo los restantes hasta el (5, 5).
2) Los restantes elementos de cada una de las filas de la matriz, sern los nmeros ledos excluyendo los
mayores y los menores que han sido ubicados en el vector o en la diagonal, en el orden en que se
leyeron completando primero la primer fila, luego la segunda, hasta completar el arreglo.
3) Debe mostrar por pantalla al usuario los arreglos resultantes con el formato usual de una matriz tal
como se trabaja en algebra, y los datos en el orden en el que fueron ledos.


Anlisis del problema.

Datos de entrada:

Archivo secuencial con treinta nmeros reales en general

Datos de salida:

Vector de 5 elementos, los cuales sern los 5 mayores nmeros ledos previamente multiplicados por ((-
1)^(ndice))
Matriz de 5 filas por 5 columnas, donde sus elementos de la diagonal son los menores nmeros ledos
ordenados en forma creciente desde la posicin (1,1) hasta la (5,5) y el resto de los componentes



Algoritmo.


Abrir el archivo datos.txt
Leer los datos y asignarlo a un vector
Cerrar el archivo datos.txt
Buscar los 5 elementos menores
Ordenar en forma creciente en modulo
Ubicarlos al principio del vector
El resto de los elementos se corren de lugar
Buscar los 5 elementos mayores
Ubicarlos al principio del vector
El resto de los elementos se corren de lugar
Los 5 primeros elementos se multiplican por (-1)^(ndice)
Asignar a un vector b estos elementos
Asignar a los siguientes 5 elementos a los elementos de la diagonal de una matriz m de 5x5
Asignar a los elementos fuera de la diagonal el resto de los nmeros ledos, en el orden en que se
leyeron completando primero la primer fila, luego la segunda, hasta completar el arreglo.
Mostrar por pantalla el vector de datos, el vector b y la matriz m



3


Diagrama de fujo












































Inicio
s=s+1
s=i
s>n
i=i+1
i=1
i>k
n=dimensin(v)
k=5
Leovdeun
archivosecuencial
menor=abs(v(i)
Abs(v(s))
<menor
Menor=abs(v(s))
j=s
f=f+1
f=j
f<i+1
A
auxi=v(j)
v(i)=auxi
v(f)=v(f1)
4










































i=i+1
i=j
i>n
j=j+1
j=1
j>k
Max=v(j)
m=j
v(i)>Max
Max=v(i)
m=i
v(i)=v(i1)
A
B
v(j)=Max
i=i1
i=m
i<j+1
5










































i<>j
B
a=(i+1)*k+ji
i<>j
b(i)=v(i)*(1)^(i)
i=i+1
i=1
i>k
m(i,j)=v(k+1)
i=i+1
i=1
i>k
j=j+1
j=1
j>k
i=i+1
i=1
I>k
a=(i+k)*k+j(i1)
M(i,j)=v(a)
fin
Mostrardatosde
salida
6


Pseudocdigo.


Comienzo del programa
Abro el archivo datos.txt
Leo los datos y los asigno en un vector
V=[v1,v2,..vn]
n =dimensin ( v )
Cierro el archivo datos.txt
K =5
Repetir desde i=1 hasta k con un paso de 1
Menor =valor absoluto de v ( i)
Repetir desde s=i hasta n con un paso de 1
Si valor absoluto de v ( s ) <Menor entonces
Menor =valor absoluto de v ( s )
j =s
Fin si
Fin repetir
Guardo Los Menores Encontrados
auxi =v ( j )
Corro los Componentes restantes
Repetir desde f =j hasta i-1con un paso de -1
V ( f ) =V ( f-1 )
Fin repetir
V ( i ) =auxi
Fin repetir

Busco los 5 Mayores y los Ubico al Principio del vector
Repetir desde j=1 hasta k con un paso de 1
Max =v ( j )
m =j
Bsqueda del mayor Elemento del vector
Repetir desde i=j hasta n con un paso de 1
si ( v ( i ) >Max )
Max =v ( i )
m =i
fin si
fin repetir
Desplazo los dems Componentes del vector
Repetir desde i=m hasta j+1 con un paso de -1
V (i) =v (i-1)
Fin repetir
El mayor valor va al Principio
v ( j) =Max
fin repetir

Armo el vector de 5 componentes
Repetir desde i=1 hasta k con un paso de 1
B ( i ) =v ( i) * (-1) ^i
Fin repetir

Armo La Matriz
7

Primero Asigno los valores a Los Elementos de la diagonal


Repetir desde i=1 hasta k con un paso de 1
m (i, i) =v (k+i)
fin repetir
Asigno valores un los componentes Que no estn en la diagonal
Repetir desde i=1 hasta k con un paso de 1
Repetir desde j=1 hasta k con un paso de 1
si i <>j entonces
si i <j entonces
a =(i+1) * k +j-i
si no
a =(i+1) * k+j-(i-1)
fin si
m (i, j) =V (a)
fin si
fin repetir
fin repetir
mostrar ( m, " Matriz de 5x5 " , b, "vector 5x1 ", " Datos de Salida" )

fin del programa



Cdigo Scilab


clc
//abro mi archivo datos.txt y leo los datos en un vector
datos=mopen("datos.txt","r")
v=mfscanf(-1,datos,"%f")
v=v'
disp(v,"Datos de entrada")
mclose(datos)
n=length(v)
//busco los 5 menores y los ubico al principio del vector
k=5
for i=1:k n
menor=abs(v(i))
for s=i:n
if abs(v(s))<menor then
menor=abs(v(s))
j=s
end
end
//guardo los menores encontrados
auxi=v(j)
//corro los componentes restantes
for f=j:-1:(i+1)
v(f)=v(f-1)
end
v(i)=auxi
end

8

//busco los 5 mayores y los ubico al principio del vector


for j=1:k
Max=v(j)
m=j
//bsqueda del mayor elemento del vector
for i=j:n
if (v(i)>Max)
Max=v(i)
m=i
end
end
//desplazo los dems componentes del vector
for i=m:-1:j+1
v(i)=v(i-1)
end
//el mayor valor va al principio
v(j)=Max
end

//armo el vector de 5 componentes
for i=1:k
b(i)=v(i)*(-1)^i
end

//armo la matriz
//primero asigno los valores a los elementos de la diagonal
for i=1:k
m(i,i)=v(k+i)
end
//asigno los valores a los componentes que no estn en la diagonal
for i=1:k
for j=1:k
if i<>j then //pregunto si j es distinto a i
if i<j then //a ser la posicin de los componentes del vector, se toma dos formulas distintas de a
a=(i+1)*k+j-i //formula de a para valores de i<j
else
a=(i+1)*k+j-(i-1)//formula de a para valores de i>j
end
m(i,j)=v(a)
end
end
end
disp(m,"matriz de 5x5",b,"vector 5x1","Datos de salida")










9



Resultados del problema

Ejemplo 1:

Datos de entrada

14. 2. 3. 4. 5. 6. - 7. 1. 9. 4. 6. 3. 897. 0. 65. 234. 98. 24. 35. 23.
733. 4. 67. 8. 65. 12. 68. 4. 8970. 234.

Datos de salida

vector 5x1

- 8970.
897.
- 733.
234.
- 234.

matriz de 5x5

0. 14. 4. 5. 6.
- 7. 1. 9. 4. 6.
65. 98. 2. 24. 35.
23. 4. 67. 3. 8.
65. 12. 68. 4. 3.



Ejemplo 2:

Datos de entrada

34. - 54. - 65. 43. - 3. 5. - 6. 3. 567. 876. - 213. 7. 456. 796. 2. 45. 596. 423.
547. 8. 23. 677. 23. 657. 243. - 6. 23. 45. - 52345. 9764.

Datos de salida

vector 5x1

- 9764.
876.
- 796.
677.
- 657.

matriz de 5x5

2. 34. - 54. - 65. 43.
567. - 3. - 213. 7. 456.
45. 596. 3. 423. 547.
8. 23. 23. 5. 243.
- 6. 23. 45. - 52345. - 6.

Вам также может понравиться