(**************************************************** *NOMBRE: #Alejandro# *PRIMER APELLIDO: #XXXX# *SEGUNDO APELLIDO: #XXXXX# *DNI: #XXXXXXXX# ****************************************************) MODULE Rombo; FROM InOut IMPORT WriteString, WriteLn, Write, ReadInt; VAR nLinea : INTEGER; (* fila *) columna : INTEGER; (* columna *) sumFilCol : INTEGER; (* suma de filas y columnas *) lado : INTEGER; (* lado del rombo *) eje : INTEGER; (* eje para marcar el final de fila *) espacios : INTEGER; (* espacios en blanco *) esp1, esp2, esp3, esp4, esp5 : INTEGER; (* espacios del caracter '@' *) BEGIN
(*--Leer dato desde consola. --*)
WriteString ("Lado del rombo? "); ReadInt (lado); WriteLn; WriteLn;
(*-- Inicializamos los contornos '@' --*)
esp1 := lado + 1; esp2 := esp1 + 4; esp3 := esp2 + 4; esp4 := esp3 + 4; esp5 := esp4 + 4;
(*-- Algoritmo para imprimir el rombo --*)
(*-- SI EL DATO INTRODUCIDO ESTA ENTRE 1 Y 20 Y ES PAR MOSTRAMOS ESTE ALGORITMO --*)
IF (lado > 0) AND (lado < 2 =" 0)" href="mailto:">'@', o si la suma es número par se imprime '.' o si la suma es número impar se imprime 'o' --*) sumFilCol := nLinea + columna; IF (sumFilCol = esp1) OR (sumFilCol = esp2) OR (sumFilCol = esp3) OR (sumFilCol = esp4) OR (sumFilCol = esp5) THEN Write ('@'); ELSIF sumFilCol MOD 2 = 0 THEN Write ('.'); ELSIF sumFilCol MOD 2 # 0 THEN Write ('o'); END; END; (*-- CUADRANTE SUPERIOR DERECHO --*) eje := (lado +1) - nLinea; (* el eje determina el final de la escritura por pantalla *) FOR columna := lado - 1 TO eje BY -1 DO (* recorremos todas las columnas hasta el eje *) (*-- Si la suma de la fila y columna es un contorno se imprime '@', o si la suma es número par se imprime '.' o si la suma es número Impar se imprime 'o' --*) sumFilCol := nLinea + columna; IF (sumFilCol = esp1) OR (sumFilCol = esp2) OR (sumFilCol = esp3) OR (sumFilCol = esp4) OR (sumFilCol = esp5) THEN Write ('@'); ELSIF sumFilCol MOD 2 = 0 THEN Write ('.'); ELSIF sumFilCol MOD 2 # 0 THEN Write ('o'); END; END; WriteLn; (* un salto de linea par el final de cada fila *) END; (*-- CUADRANTES INFERIORES --*) FOR nLinea := lado - 1 TO 1 BY - 1 DO (* filas del cuadrante *) eje := lado; (* el eje determina el final de la escritura por pantalla *) columna := lado - nLinea; (* primer columna *) (*-- Preparamos los espacios en blanco --*) FOR espacios := 1 TO columna DO Write (' '); END; (*-- CUADRANTE INFERIOR IZQUIERDO --*) FOR columna := (lado + 1) - nLinea TO eje DO (* recorremos todas las columnas hasta el eje *) (*-- Si la suma de la fila y columna es un contorno se imprime '@', o si la suma es número par se imprime '.' o si la suma es número impar se imprime 'o' --*) sumFilCol := nLinea + columna; IF (sumFilCol = esp1) OR (sumFilCol = esp2) OR (sumFilCol = esp3) OR (sumFilCol = esp4) OR (sumFilCol = esp5) THEN Write ('@'); ELSIF sumFilCol MOD 2 = 0 THEN Write ('.'); ELSIF sumFilCol MOD 2 # 0 THEN Write ('o'); END; END; (*-- CUADRANTE INFERIOR DERECHO --*) eje := (lado +1) - nLinea; (* el eje determina el final de la escritura por pantalla *) FOR columna := lado - 1 TO eje BY -1 DO (* recorremos todas las columnas hasta el eje *) (*-- Si la suma de la fila y columna es un contorno se imprime '@', o si la suma es número par se imprime '.' o si la suma es número impar se imprime 'o' --*) sumFilCol := nLinea + columna; IF (sumFilCol = esp1) OR (sumFilCol = esp2) OR (sumFilCol = esp3) OR (sumFilCol = esp4) OR (sumFilCol = esp5) THEN Write ('@'); ELSIF sumFilCol MOD 2 = 0 THEN Write ('.'); ELSIF sumFilCol MOD 2 # 0 THEN Write ('o'); END; END; WriteLn; END; (*-- SI EL DATO INTRODUCIDO ESTA ENTRE 1 Y 20 Y ES IMPAR MOSTRAMOS ESTE ALGORITMO --*) ELSIF (lado > 0) AND (lado < href="mailto:">'@', o si la suma es número par se imprime 'o' o si la suma es número impar se imprime '.' --*) sumFilCol := nLinea + columna; IF (sumFilCol = esp1) OR (sumFilCol = esp2) OR (sumFilCol = esp3) OR (sumFilCol = esp4) OR (sumFilCol = esp5) THEN Write ('@'); ELSIF sumFilCol MOD 2 = 0 THEN Write ('o'); ELSIF sumFilCol MOD 2 # 0 THEN Write ('.'); END; END; (*-- CUADRANTE SUPERIOR DERECHO --*) eje := (lado +1) - nLinea; (* el eje determina el final de la escritura por pantalla *) FOR columna := lado - 1 TO eje BY -1 DO (* recorremos todas las columnas hasta el eje *) (*-- Si la suma de la fila y columna es un contorno se imprime '@', o si la suma es número par se imprime 'o' o si la suma es número Impar se imprime '.' --*) sumFilCol := nLinea + columna; IF (sumFilCol = esp1) OR (sumFilCol = esp2) OR (sumFilCol = esp3) OR (sumFilCol = esp4) OR (sumFilCol = esp5) THEN Write ('@'); ELSIF sumFilCol MOD 2 = 0 THEN Write ('o'); ELSIF sumFilCol MOD 2 # 0 THEN Write ('.'); END; END; WriteLn; (* un salto de linea par el final de cada fila *) END; (*-- CUADRANTES INFERIORES --*) FOR nLinea := lado - 1 TO 1 BY - 1 DO (* filas del cuadrante *) eje := lado; (* el eje determina el final de la escritura por pantalla *) columna := lado - nLinea; (* primer columna *) (*-- Preparamos los espacios en blanco --*) FOR espacios := 1 TO columna DO Write (' '); END; (*-- CUADRANTE INFERIOR IZQUIERDO --*) FOR columna := (lado + 1) - nLinea TO eje DO (* recorremos todas las columnas hasta el eje *) (*-- Si la suma de la fila y columna es un contorno se imprime '@', o si la suma es número par se imprime 'o' o si la suma es número impar se imprime '.' --*) sumFilCol := nLinea + columna; IF (sumFilCol = esp1) OR (sumFilCol = esp2) OR (sumFilCol = esp3) OR (sumFilCol = esp4) OR (sumFilCol = esp5) THEN Write ('@'); ELSIF sumFilCol MOD 2 = 0 THEN Write ('o'); ELSIF sumFilCol MOD 2 # 0 THEN Write ('.'); END; END; (*-- CUADRANTE INFERIOR DERECHO --*) eje := (lado +1) - nLinea; (* el eje determina el final de la escritura por pantalla *) FOR columna := lado - 1 TO eje BY -1 DO (* recorremos todas las columnas hasta el eje *) (*-- Si la suma de la fila y columna es un contorno se imprime '@', o si la suma es número par se imprime 'o' o si la suma es número impar se imprime '.' --*) sumFilCol := nLinea + columna; IF (sumFilCol = esp1) OR (sumFilCol = esp2) OR (sumFilCol = esp3) OR (sumFilCol = esp4) OR (sumFilCol = esp5) THEN Write ('@'); ELSIF sumFilCol MOD 2 = 0 THEN Write ('o'); ELSIF sumFilCol MOD 2 # 0 THEN Write ('.'); END; END; WriteLn; END; END; END Rombo.
domingo, octubre 02, 2005
Suscribirse a:
Enviar comentarios (Atom)
Etiquetas
- uned (14)
- apuntes (5)
- Ingeniería Informática (3)
- Ingeniería de Sistemas (3)
- Ingeniería de Software (3)
- academias uned (3)
- prog2 (3)
- ETC 2 (2)
- Informática Gestión (2)
- aprobar (2)
- cursos uned (2)
- sorteo (2)
- todouned (2)
- Álgebra (2)
- Ampliación Matemáticas (1)
- Análisis Matemático (1)
- Apuntes Álgebra (1)
- Dinámica de Sistemas (1)
- Estadistica 1 (1)
- Exámenes UNED (1)
- Ingeniería de Software de Gestión (1)
- Matrícula de Honor (1)
- Organización y administración de empresas (1)
- Sistemas Operativos I (1)
- bolonia (1)
- elche (1)
- ingenieria software gestion (1)
- matrícula gratis (1)
- mat´rícula (1)
- notas (1)
- prácticas (1)
No hay comentarios:
Publicar un comentario