Manejo de imagenes en Visual C++ con sdl
Abril 1, 2008
En la escuela estamos manejando archivos indexados con imágenes en C++, como esta un poco loco todo ese asunto, pues el profesor nos ha dejado usar Visual C++ o Builder C++, yo preferí Visual C++. Y he encontrado un tutorial que te lleva de la mano para el manejo de una libreria que es bastante conocida, SDL. Esta curiosidad te sirve para manejar imágenes de casi todos los formatos hasta videos, música… A mi me ha creado conflictos con librerías default de C++, así que sigo en la búsqueda de alguna que no los haga.
Archivos directos c++
Abril 1, 2008
//ABC con archivos directos en C++.
#include stdio.h
#include string.h
#include conio.h
struct reg
{
int idart,costo,preciovta;
char nomart[30];
int existe;
}R;
FILE *ar;
void crea()
{
int x;
for(x=0;x<10;x++) fwrite(&R,1,sizeof(reg),ar);
}
//Altas
void altas()
{
int pos=0,ida=1,cost=0,prevta=0,ex=0; char n[30];
int rnc=-1;
printf(“0 para salir\n”);
while(rnc!=0)
{
printf(“Dame el id del producto\n”);
scanf(“%d”,&rnc);
if(rnc!=0)
{
pos=rnc-1;
fseek(ar, pos *(sizeof(reg)),SEEK_SET);
printf(“Costo:\n”);
scanf(“%d”,&cost);
printf(“Precio de vta:\n”);
scanf(“%d”,&prevta);
printf(“Nombre:\n”);
scanf(“%s”,n);
printf(“Existen\n”);
scanf(“%d”,&ex);
R.costo=cost;
R.idart=rnc;
R.preciovta=prevta;
strcpy(R. nomart,n);
R.existe=ex;
fwrite(&R,1,sizeof(reg),ar);
printf(“Grabado de registro exitoso. Confia en ti. Dinnnnn Dinnn Dinnnn\n”);
printf(“\n”);
}
}
}
//Bajas.
void bajas()
{
int idar,pos,p;
printf(“dame idart a eliminar”);
scanf(“%d”,&idar);
pos=idar-1;
fseek(ar, pos *(sizeof(reg)),SEEK_SET);
fread(&R,1,sizeof(reg),ar);
p=R.idart;
R.idart=0;
fseek(ar, pos *(sizeof(reg)),SEEK_SET);
fwrite(&R,1,sizeof(reg),ar);
printf(“Baja con exito idart:%d , antes %d \n”,R.idart, p);
}
//cambios
void cambios()
{
int idar, pos,r,campo;
char campn[30];
printf(“idart a cambiar”);
scanf(“%d”,&idar);
pos=idar-1;
fseek(ar, pos *(sizeof(reg)),SEEK_SET);
fread(&R,1,sizeof(reg),ar);
printf(” 1.-id articulo 2.-costo 3.-preciovta 4.-nombre 5.-existencia \n”);
printf(“Opción a cambiar”);
scanf(“%d”,&r);
switch(r)
{
case 1:
printf(“Cambiar idart con:”);
scanf(“%d”,&campo);
R.idart=campo;
break;
case 2:
printf(“Cambiar costo con:”);
scanf(“%d”,&campo);
R.costo=campo;
break;
case 3:
printf(“Cambiar preciovta con:”);
scanf(“%d”,&campo);
R.preciovta=campo;
break;
case 4:
printf(“Cambiar nombre con:”);
scanf(“%s”,campn);
strcpy(R.nomart,campn);
break;
case 5:
printf(“Cambiar existencia con:”);
scanf(“%d”,&campo);
R.existe=campo;
break;
default:
printf(“Sorry, ese No de campo no existe”);
break;
}
fseek(ar, pos *(sizeof(reg)),SEEK_SET);
fwrite(&R,1,sizeof(reg),ar);
}
//Reporta.
void reporta(){
int res,idar,pos;
printf(“1/un solo registro 2/todos los registros”);
scanf(“%d”,&res);
if(res==1)//Para un solo registro
{
printf(“dame idart”);
scanf(“%d”,&idar);
pos=idar-1;
fseek(ar,pos*(sizeof(reg)),SEEK_SET);
if (R.idart!=0)
{
printf(“id articulo: %d\n costo: %d\n preciovta: %d\n nombre: %s\n existencia %d\n”,R.idart,R.costo,R.preciovta,R.nomart,R.existe);
printf(“\n”);
printf(“_______________________________”);
printf(“\n”);
}
else printf(“Numero de registro eliminado anteriormente\n”);
}
else//Para imprimir los registros existentes.
{
printf(“——–imprime todos——–\n”);
fseek(ar,0,SEEK_SET);
while(!feof(ar))
{
fread(&R,1,sizeof(reg),ar);
if (R.idart!=0)
{
printf(“id articulo: %d\n costo: %d\n preciovta: %d\n nombre: %s\n existencia %d\n”,R.idart,R.costo,R.preciovta,R.nomart,R.existe);
printf(“\n”);
printf(“_______________________________”);
printf(“\n”);
}
}
}//else
}
int main()
{
//Cascarón.
R.costo=0;
R.existe=0;
R.idart=0;
strcpy(R.nomart,” “);
R.preciovta=0;
ar=fopen(“Datos.dat”,”w”);
crea();
//Menú.
int x;
do{
int r;
printf(“Opcion a realizar en registros \n 0 para salir 1 para seguir\n”);
printf(“1.-Altas.\t 2.-Bajas.\n 3.-Cambios.\t 4.-Reporta\n”);
scanf(“%d”,&r);
switch(r){
//Altas
case 1:
altas();
fclose(ar);
break;
//Bajas
case 2:
ar=fopen(“Datos.dat”,”r+”);
bajas();
fclose(ar);
break;
//Cambios.
case 3:
ar=fopen(“Datos.dat”,”r+”);
cambios();
fclose(ar);
break;
//Reporta
case 4:
ar=fopen(“Datos.dat”,”r+”);
reporta();
fclose(ar);
break;
default:
printf(“%d No es una opcion”,r);
break;
}
printf(“¿Salir?”);//Mientras la respuesta sea cualquier número diferente de 0
scanf(“%d”,&x); //el menú seguirá activo.
}while(x!=0);
getch();
}