Título: Ayuda con un problema de Estructura de Datos Publicado por: Beginner Web en 11 Junio 2018, 22:43 pm Necesito ayuda con la creacion de un TDA Simple,
El problema dice asi; Definir el TDA Pixel con las siguientes operaciones; *Crear pixel: Dado 3 valores enteros devuelve un pixel *Validar Pixel: Dado un pixel, determinar si sus valores son correctos. Considere que los puntos asumen valores solo en el rango[0,255] *Mostrar pixel: Muestra el valor de sus componentes *Crear blanco: Dado un pixel genera a sus puntos los valores apropiados para generar blanco *Crear negro: Dado un pixel genera a sus puntos los valores apropiados para generar negro Implementar el TDA PIxel utilizando a) arreglos, b)registros. No entiendo bien como y que es lo que tengo que hacer si alguien me ayuda, estare muy agradecido, cualquer ayuda , manual lo que sea me sirve desde ya muchas gracias. Código
Título: Re: Ayuda con un problema de Estructura de Datos Publicado por: Serapis en 11 Junio 2018, 23:21 pm Más o menos como lo llevas...
con registros: Código: Estructura Pixel byte rojo byte verde byte azul fin estructura * Crear pixel: Dado 3 valores enteros devuelve un pixel Código: pixel = funcion CrearPixel(entero rojo, entero Verde, entero Azul) pixel px // Como pide que entren enteros y no bytes es preciso verificar que están en el rango dado (y si no se truncan al límite). px.Rojo = FijarRangoByte(rojo) px.Verde = FijarRangoByte(verde) px.Azul = FijarRangoByte(azul) devolver px fin funcion *Validar Pixel: Dado un pixel, determinar si sus valores son correctos. Considere que los puntos asumen valores solo en el rango[0,255] OJO: esta función no es exactamente 'validar', validar supone rechazar si no están en el rango reclamado, aquí se trunca, se fuerza un valor si o sí... Código: // Trunca un entero a byte si queda fuera de los límites de byte. byte = FijarRangoByte(entero Valor) byte b Si valor <0 b= 0 osi valor> 255 b= 255 sino b = valor fin si devolver b fin funcion *Validar Pixel: Dado un pixel, determinar si sus valores son correctos. Considere que los puntos asumen valores solo en el rango[0,255] Código: // Aquí se valida, pero no se indica queé hacer en caso de que falle la validación... luego no resulta útil por sí misma. buleano = ValidarRangoByte(entero Valor) Si ((valor >= 0) y (valor <= 255)) devolver TRUE sino devolver FALSE fin si fin funcion *Mostrar pixel: Muestra el valor de sus componentes Código: funcion MostrarPixel(pixel px) imprimir "los valores del píxel son: " + nuevalinea + " Rojo: " + px.rojo + nuevalinea + " Verde: " + px.verde + nuevalinea + " Azul: " + px.azul fin funcion *Crear blanco: Dado un pixel genera a sus puntos los valores apropiados para generar blanco Te pongo 2 funciones. Realmente las dos son iguales, pero la enunciación parece pedirte la 2ª... Código: pixel = funcion CrearPixelBlanco devolver CrearPixelGris(255) fin funcion funcion CrearPixelBlanco(pixel px) ModificarPixelGris(px, 255) fin funcion *Crear negro: Dado un pixel genera a sus puntos los valores apropiados para generar negro Te pongo 2 funciones. Realmente las dos son iguales, pero la enunciación parece pedirte la 2ª... Código: pixel = funcion CrearPixelNegro devolver CrearPixelGris(0) fin funcion funcion CrearPixelNegro(pixel px) ModificarPixelGris(px, 0) fin funcio Crear Gris: genera los valores apropiados para generar un nivel de gris (0-255) Código: // Asigna el mismo valor a los 3 canales del pixel CREADO... pixel = funcion CrearPixelGris(byte valor) pixel px px.Rojo = valor px.verde = valor px.Azul = valor devolver px fin funcion // Asigna el mismo valor a los 3 canales del pixel RECIBIDO... funcion ModificarPixelGris(pixel px, byte valor) px.Rojo = valor px.verde = valor px.Azul = valor fin funcion Luego te pide lo mismo (o de forma alternativa?), pero en vez de usar una estructura, usar un array, como se muestra aquí: Código: Array bytes Pixel[0 a 2] es básicamente lo mismo pero usando un array en vez de una estructura, luego solo te pongo la 1ª función... * Crear pixel: Dado 3 valores enteros devuelve un pixel Código: array bytes = funcion CrearPixel(entero rojo, entero Verde, entero Azul) array bytes px[0 a 2] // Como pide que entren enteros y no bytes es preciso verificar que están en el rango dado (y si no se truncan al límite). px[0] = FijarRangoByte(rojo) px[1] = FijarRangoByte(verde) px[2] = FijarRangoByte(azul) devolver px fin funcion p.d.: en el enunciado que pones no señala nada acerca de alguna imagen , todo parece referirse in situ a un píxel individual... si al final debe aplicarse sobre una imagen las funciones deben modificarse (para lojar el bucle que recorra la imagen entera en la función) o bien añadir un bucle para llamarlas por cada píxel (esto es mucho más lento, pero vale si su único propósito es un ejercicio). Título: Re: Ayuda con un problema de Estructura de Datos Publicado por: Beginner Web en 12 Junio 2018, 07:53 am Gracias @NEBIRE ahora lo entiendo un poco mas, lo que no se es como mostrar pixel/color en la consola de comandos. ;-)
Código
|