Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Final del 13/12/16
Autor Mensaje
seebas Sin conexión
Empleado del buffet
ola k ase
*

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 8
Agradecimientos dados: 3
Agradecimientos: 8 en 3 posts
Registro en: Oct 2016
Mensaje: #1
Final del 13/12/16 Finales Informática I (Electrónica)
Adjunto el final tomado el 13/12/16 de informática 1 con mi resolución, disculpen no se si esta bien por que estoy practicando y también por no haberlo escaneado.
[/code]


#include<stdio.h>
#include <stdlib.h>
#include <string.h>

#define ERRORALABRIRARCHIVO -1
#define ERRORALCREARARCHIVO -2
#define ERRORALLEERARCHIVO -3
#define ERRORALESCRIBIRARCHIVO -4
#define ERRORALPEDIRMEMORIA -5

int rgbGris(char *origen, char *destino);
int rotar90(char *origen, int pixelX, int pixelY, char *destino);
int histograma(char *origen, int pixelX, int pixelY, char *destino);

int main (int argc,char **argv)
{

return 0;
}

int rgbGris(char *origen, char *destino)
{
//reservo memoria
FILE *archo, *archd;
int j , i, *gris;
char *rgb;

//abro los archivos
archo = fopen(origen, "r");
if(archo == NULL)
{
return ERRORALABRIRARCHIVO;
}
archd = fopen(destino, "w");
if(archd == NULL)
{
return ERRORALCREARARCHIVO;
}

//averiguo el largo del archivo
fseek(archo,0,SEEK_END);
i = ftell(archo);
rewind(archo);//vuelvo el puntero al principio del archivo

//pido memoria para un string que lea todo el archivo y otro para hacer las cuentas
if((rgb = (char *)malloc(sizeof(char)*i)) == NULL)
{
return ERRORALPEDIRMEMORIA;
}
if((gris = (int *)malloc(sizeof(int)*(i/3 - 1))) == NULL)
{
return ERRORALPEDIRMEMORIA;
}

//leo el archivo
if(fread(rgb, sizeof(char), i, archo) == 0)
{
return ERRORALLEERARCHIVO;
}

//hago las cuentas que me piden
for(j=0 ; j < i - 1 ; j += 3)
{
gris = 0,2126*(rgb[j] - 48) + 0,7152*(rgb[j + 1] - 48) + 0,0722*(rgb[j + 2] - 48);
}// asumi que estaba todo junto(el 48 es la diferencia que hay entre el 0 de ascci y el 0 decimal)

//escribo en el archivo
if(fwrite(gris, sizeof(int), i/3 - 1, archd) == 0)
{
return ERRORALESCRIBIRARCHIVO;
}

//libero memoria
free(gris);
free(rgb);
fclose(archd);
fclose(archo);

return i;

}
int rotar90(char *origen, int pixelX, int pixelY, char *destino)
{

//reservo memoria
FILE *archo, *archd;
int i = 0, j = 0, n = 0;
char *pixeles;

//abro los archivos
archo = fopen(origen, "r");
if(archo == NULL)
{
return ERRORALABRIRARCHIVO;
}
archd = fopen(destino, "w");
if(archd == NULL)
{
return ERRORALCREARARCHIVO;
}

//averiguo el tamanio del archivo
fseek(archo, 0, SEEK_END);
i = ftell(archo);

//reservo memoria para el string que lo lea
if((pixeles = (char *)malloc(sizeof(char)*i)) == NULL)
{
return ERRORALPEDIRMEMORIA;
}

//leo todo el archivo
if(fread(pixeles, sizeof(char), i, archo) == 0)
{
return ERRORALLEERARCHIVO;
}

//escribo en el archivo con un algoritmo propio
for(n = 1 ; n <= (pixelX) ; n++)
{
for(j = 0 ; j < (pixelY) ; j++)
{
if(fputc(pixeles[(pixelX-n)+(pixelX+1)*j], archd) == EOF)
{
return ERRORALESCRIBIRARCHIVO;
}
}
if(fputs("\n", archd) == EOF)
{
return ERRORALESCRIBIRARCHIVO;
}
}//asi haria si tiene enter al final de cada renglon


//libero memoria
free(pixeles);
fclose(archd);
fclose(archo);

return i;
}
int histograma(char *origen, int pixelX, int pixelY, char *destino)
{
//reservo memoria
FILE *archo;
int i, j, n;
char *buffer;

//abro el archivo
if((archo = fopen(origen, "r")) == NULL)
{
return ERRORALABRIRARCHIVO;
}

//averiguo el tamanio del archivo
fseek(archo, 0, SEEK_END);
i = ftell(archo);

//reservo memoria para el string que lo lea
if((buffer = (char *)malloc(sizeof(char)*i)) == NULL)
{
return ERRORALPEDIRMEMORIA;
}

//leo todo el archivo
if(fread(buffer, sizeof(char), i, archo) == 0)
{
return ERRORALLEERARCHIVO;
}

memset(destino, 0, 255);//lleno 255 espacios con 0 del string destino

//algoritmo para resolver este ejercicio
for(j=0 ; j <= 255 ; j++)
{
for(n=0 ; n <= 255 ;n++)
{
if(buffer[n] == (j + 48))
{
destino[j]++;
}
}
}

//libero memoria
fclose(archo);
free(buffer);

return i;
}





Archivo(s) adjuntos Imagen(es)
       
(Este mensaje fue modificado por última vez en: 11-02-2017 18:39 por seebas.)
11-02-2017 18:04
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] seebas recibio 3 Gracias por este post
CarooLina (11-02-2017), Feer (11-02-2017), diegomsaiz (16-02-2017)
Francodw Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. Electrónica
Facultad Regional Villa María

Mensajes: 6
Agradecimientos dados: 1
Agradecimientos: 0 en 0 posts
Registro en: Jan 2017
Mensaje: #2
RE: Final del 13/12/16
Que carajos? estoy haciendo el cursillo para ingresar a electrónica y me parece que ya pego la vuelta (? Jaja

Enviado desde mi C6943 mediante Tapatalk
11-02-2017 18:12
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.