Sei sulla pagina 1di 3

/* Descuento.

c
Programa que al ingresar el Precio Inicial y el Precio Final de un Artculo,
imprime el porcentaje de descuento y lo almacena en un archivos de datos.
Eleazar Vicente Ruelas Vzquez - 1614633*/
#include <stdio.h>
#include <string.h>
#include <windows.h>
typedef struct {
char Articulo[30];
float PrecioInicial, PrecioFinal;
}regPrecios;
regPrecios vtrPrecios;
FILE *ptfPrecios;
typedef struct {
char Articulo[30];
float PrecioInicial, PrecioFinal;
float Descuento;
}regDescuento;
regDescuento vtrDescuento;
FILE *ptfDescuento;
int n;
char Articulos[100][30];
void
void
void
void
void
void

IngresaDatos(regPrecios vtrPrecios);
DatosArreglo(regPrecios vtrPrecios);
ImprimeArreglo(float Pi[], float Pf[], float P[], int n);
ArregloArchivo(float Pi[], float Pf[], float P[], int n, regDescuento vtrDescuento);
Encabezado();
ImprimeArchivo();

void gotoxy(short x, short y){


COORD pos = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
int main(){
int linea;
IngresaDatos( vtrPrecios );
DatosArreglo( vtrPrecios );
system( "pause\n" );
system( "cls" );
ImprimeArchivo();
system( "pause\n" );
}

void IngresaDatos( regPrecios vtrPrecios ){

char opcion[2];
ptfPrecios = fopen("precios.dat","w");
do{
system("cls");
printf("\n Nombre del Articulo: ");
scanf(" %[^\n]",vtrPrecios.Articulo);
printf(" Precio Inicial: ");
scanf("%f",&vtrPrecios.PrecioInicial);
printf(" Precio Final: ");
scanf("%f",&vtrPrecios.PrecioFinal);
fwrite(&vtrPrecios, sizeof(regPrecios), 1, ptfPrecios);
strset(vtrPrecios.Articulo,' ');
printf("\n Agregar mas articulos?[s/n]: ");
scanf(" %[^\n]",opcion);
}while(!strcmp(opcion,"S") || !strcmp(opcion,"s"));
fclose(ptfPrecios);

void DatosArreglo( regPrecios vtrPrecios ){


int i = 1, N;
float Pi[100], Pf[100], D[100];
ptfPrecios = fopen("precios.dat","r");
fread( &vtrPrecios, sizeof( regPrecios ), 1, ptfPrecios );
do{
strcpy( Articulos[i], vtrPrecios.Articulo );
Pi[i] = vtrPrecios.PrecioInicial;
Pf[i] = vtrPrecios.PrecioFinal;
i = i + 1;
N = i;
fread( &vtrPrecios, sizeof( regPrecios ), 1, ptfPrecios );
}while( !feof( ptfPrecios ) );
fclose( ptfPrecios );
ImprimeArreglo( Pi, Pf, D, N );
ArregloArchivo( Pi, Pf, D, N, vtrDescuento );
}
void ImprimeArreglo( float Pi[], float Pf[], float D[], int n ){
int i, Linea = 2;
printf( " Imprimiendo desde el arreglo de memoria \n" );
Encabezado();
for( i = 1; i < n; i++ ){
gotoxy( 1 , Linea );
printf( "%s", Articulos[i] );
gotoxy( 30, Linea );
printf( "%8.2f", Pi[i] );
gotoxy( 50, Linea );
printf( "%8.2f", Pf[i]);
D[i] = ( Pf[i] / Pi[i] ) * 100;
gotoxy( 70, Linea );
printf( "%8.2f", D[i]);
Linea++;
}
printf( "\n" );
}
void ArregloArchivo( float Pi[], float Pf[], float D[], int n, regDescuento vtrDescuento ){
int i;
ptfDescuento = fopen("descuento.sal","w");

for( i = 1; i < n; i++ ){


strcpy( vtrDescuento.Articulo, Articulos[i] );
vtrDescuento.PrecioInicial = Pi[i];
vtrDescuento.PrecioFinal = Pf[i];
vtrDescuento.Descuento = D[i];
fwrite( &vtrDescuento, sizeof(regDescuento), 1, ptfDescuento );
}
fclose( ptfDescuento );

void Encabezado(){
gotoxy( 1, 1 );
printf( "Articulo" );
gotoxy( 30, 1 );
printf( "Precio Inicial" );
gotoxy( 50, 1 );
printf( "Precio Final" );
gotoxy( 70,1 );
printf( "%% Descuento\n" );
}
void ImprimeArchivo(){
printf( " Imprimiendo desde el archivo de salida \n" );
Encabezado();
int Linea = 2;
ptfDescuento = fopen("descuento.sal","r");
if( ptfDescuento == NULL ){
printf(" No se encontro el archivo.\n");
}
Encabezado();
fread( &vtrDescuento, sizeof(regDescuento), 1, ptfDescuento );
do{
gotoxy( 1, Linea );
printf( "%s", vtrDescuento.Articulo );
gotoxy( 30, Linea );
printf( "%8.2f", vtrDescuento.PrecioInicial );
gotoxy( 50, Linea );
printf( "%8.2f", vtrDescuento.PrecioFinal );
gotoxy( 70, Linea );
printf( "%8.2f",vtrDescuento.Descuento );
Linea++;
fread( &vtrDescuento, sizeof( regDescuento ), 1 , ptfDescuento );
}while( !feof( ptfDescuento ) );
fclose( ptfDescuento );
printf( "\n" );
}

Potrebbero piacerti anche