solución

Anuncio
EXAMEN DE INTRODUCCIÓN A LA COMPUTACIÓN
27 de Julio de 2009
Ejercicio 1 (solución)
a)
- ssh [email protected]
- mkdir examen
mv examen examen-julio-2009
- cd examen-juilo-2009
b)
-ftp introcomp-server.fisica.edu.uy
user: anonymous
passwd: sin password
-ftp> cd examen-julio
ftp> get file-ax1.txt
ftp> get file-ex2.txt
c)
- chmod o-r+x ../examen-julio-2009 (cuando se crea la carpeta por defecto tien permiso de ejecucuión
para otros, de no ser así debo setear el +x para poder darle permiso de ejecución a algún archivo
dentro de la carpeta)
- chmod o-w+x file1-ex1.txt
d)
- tail -5 ../.bash_history
e)
- ps aux >> file-ex1.txt
- finger |grep usuario
f)
- echo "la fecha actual es: `date`"
- echo "mi directorio home es $HOME"
- echo 'la salida de usar `ls` con echo es: '; ls
g)
#!/bin/bash
# list contiene a los usuarios que recorro en el bucle
list="dgau fabella gpolsi lamy vschaffel"
for name in $list
do
# el archivo file-ex1.txt tiene los procesos de todos los usuarios resultado de ps aux
# filtro dicho archivo por cada nombre de la lista y lo redirecciono a un archivo correspondiente
cat ./file-ex1.txt | grep $name > procesos_$name
done
#EOF
==================================================================================
Ejercicio 2 (Solución)
program primeFactorization
integer, dimension(11) :: primes
integer, dimension(11) :: countFactors
integer :: N,quotient,rest,prime, primeIndex
!
!
!
!
!
!
!
!
array con los primos
menores/iguales a N
array con las cantidad de factores
corresp. a cada primo
quotient -> cociente de la
division entera, rest -> resto
primeIndex -> indice de posicion
del aray de primos
!Inicializo las variables
primes = (/2,3,5,7,11,13,17,19,23,29,31/)
countFactors = (/0,0,0,0,0,0,0,0,0,0,0/)
primeIndex = 0
N = 36
quotient = N
! Divido a N tantas veces como pueda por cada primo consecutivo, hasta que el ! !
! cociente de las divisiones sucesivas sea 1
do while (quotient /= 1)
primeIndex = primeIndex + 1
prime = primes(primeIndex)
rest = mod(quotient,prime)
do while (rest == 0)
countFactors(primeIndex) = countFactors(primeIndex) + 1
quotient = quotient/prime
rest = mod(quotient,prime)
end do
end do
! Imprimo a stdout solo los factores que tienen cuenta diferente de cero
do i = 1,primeIndex
if (countFactors(i) /= 0) then
print*,"La potencia de ",primes(i)," es ",countFactors(i)
end if
end do
end program primeFactorization
----------------------------------------------------------------------------------
En C++
# include <iostream>
using namespace std;
int main()
{
int primes[11]
= {2,3,5,7,11,13,17,19,23,29,31}; // array de primos
int countFactors[11] = {0,0,0,0,0,0,0,0,0,0,0};
// array con la cuenta de factores primos
int prime,primeIndex,quotient,rest;
// quotient -> cociente de la
division entera
// rest -> resto de la division entera
// primeIndex -> posicion en el array de primos
// inicializo vars
N = 36;
primeIndex = 0; // tener en cuenta en las cond.de borde, en C el indice de arrays comienza en cero
quotient = N;
// mientras el cociente de las divisones sucesivas no sea 1 divido tantas veces como pueda por
// cada primo
while (quotient != 1)
{
prime = primes[primeIndex];
rest = quotient % prime;
while (rest == 0)
{
countFactors[primeIndex] = countFactors[primeIndex] + 1;
quotient = quotient / prime;
rest = quotient % prime;
}
primeIndex = primeIndex + 1;
}
// imprimo a stdout solo los factores primos con una cuenta distinta de cero
for (int i=0; i<primeIndex; i++)
{
if (countFactors[i] != 0)
{
cout << "La potencia del factor " << primes[i] << " es "<< countFactors[i] << endl;
}
}
}
======================================================================================================
Descargar