EXAMEN DE INTRODUCCIÓN A LA COMPUTACIÓN 27 de Julio de 2009 Ejercicio 1 (solución) a) - ssh usuario@introcomp-server.fisica.edu.uy - 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; } } } ======================================================================================================