Está en la página 1de 2

Prácticas de ordenador

FUNDAMENTOS DE COMPUTACIÓN

9ª-1 Leer una palabra y escribirla en plural por la regla de añadir s si la palabra acaba en vocal y es si
acaba en consonante.
Funciones que se pueden usar:
strlen(palabra), con #include <string.h>; devuelve el número de caracteres metidos en la
palabra.
strcat(palabra1,palabra2), también con #include <string.h>; devuelve la primera pala-
bra con la segunda añadida al final.

9ª-2 Programa que lea nombre de usuario y contraseña y los verifique en el fichero “contra.txt” (habrá
una lı́nea por cada usuario, con su nombre y su contraseña). Dar el mensaje correspondiente.
Ejemplo: Si en “contra.txt” tenemos:

amc98 facil
anb10 mia
vet00 R45#try90e<

Si nos dan como usuario amc89 y contraseña facil, debe decir usuario desconocido. Si nos dan anb10
y contraseña miA debe decir contraseña incorrecta. Si nos dan vet00 y contraseña R45#try90e< debe
decir correcto Pistas:
Posible estrategia general Recorrer el fichero comparando la primera palabra con el nombre de
usuario y cuando coincida comparar la segunda palabra con la contraseña; utilizar la funcion
strcmp
Seudocódigo Leer usuario
Leer contrase~na
Ciclo mientras se lean dos palabras del fichero
Leer nombre y clave
Si usuario es nombre
Si contrase~
na es clave
Escribir correcto
Si no
Escribir contrase~na incorrecta
Terminar función o programa
Escribir usuario desconocido

9ª-3 Programa que lea de un fichero que dirá el usuario información de directorio: en cada lı́nea estará
el nombre de un archivo, su fecha (dı́a, mes y año) y los bloques que lo forman, leer de teclado el
nombre de archivo que interesa y escribir sus bloques.
Ejemplo: Si el directorio es:

diccontras.txt 1 9 2005 20 21 22 23 35 36 37 38 44 45
phismesg.eml 10 9 2010 7 8
hack.log 3 3 1983 1 2 3 5 10 11 12 24 25
bansander.log 3 10 2010 40

y nos piden phismesg.log sus bloques son 7 y 8


Pistas:
Posible estrategia general Recorrer el fichero comparando la primera palabra con el nombre y
cuando se encuentre leer la fecha y los bloques pero escribir sólo los bloques.
9ª-4 Tenemos en el fichero “disco” un volcado del disco duro, con cada bloque en una lı́nea. Los bloques
de los ficheros están desordenados, pero al final de cada lı́nea está el nº de siguiente bloque (lı́nea)
donde sigue el fichero (o -1 si no hay siguiente). En el fichero “directorio” tenemos datos de archivos;
por cada archivo tiene su nombre, su fecha y el nº del primer bloque (es decir, lı́nea en el fichero
“disco”)
Leer de teclado una palabra y decir en qué ficheros está.
Ejemplo: Si el directorio es:
diccontras.txt 1 9 2005 1
phismesg.eml 10 9 2010 3
hack.log 3 3 1983 4
bansander.log 3 10 2010 7
y el “disco” es
abcd asdfg contra dios dos entrar facil iiii mia 2
nadie opq pasa super total tres uno vale xyz -1
Por favor teclee su nombre de usuario y contrase~na -1
199.144.15.2 user anonymous logged in 5
file userlist transferred OK 6
main database file access restricted 9
Santander.principal consola de administrador 8
Indique cuenta a retener cantidad y código de destino -1
administrator user acknowledged 10
main database file transmitted 11
end session -1
y nos piden la palabra “de” está en los ficheros phismesg.eml y bansander.log
Pistas:
Posible estrategia general Recorrer el directorio repitiendo para cada archivo un ciclo de búsqueda
para ver si está la palabra; cuando se encuentra la palabra se escribe el nombre del archivo y se
pasa al siguiente; si no se encuentra la palabra no se escribe. Para buscar la palabra se empieza
por el primer bloque y se va leyendo cada bloque pasando al que toque después. Para saber si
está la palabra utilizar la funcion strcmp
Seudocódigo general
Leer palabra a buscar
Ciclo mientras se lea de directorio nombre, dı́a, mes, a~
no
y bloque
Abrir archivo de disco
Leer contando lı́neas hasta bloque
Leer lı́nea
*Buscar último espacio (strrchr)
*Leer a partir de ahı́ el número de
bloque (sscanf)
*Buscar la palabra en la lı́nea
*Si está
Escribir el nombre
Cerrar archivo de disco (fclose(fichero))
Esquema C de la parte indicada con asterisco
posesp = strrchr(linea,’ ’);
sscanf(posesp,"%i",&bloque);
posbus=strstr(linea,palabra);
if(posbus!=NULL)

También podría gustarte