Visual C++ .NET - Ayuda no puedo encontrar mi error y es un proyecto para mañana

 
Vista:

Ayuda no puedo encontrar mi error y es un proyecto para mañana

Publicado por José angel García sotero (1 intervención) el 15/12/2021 06:33:48
//programa introduce datos en un arreglo, simulando un registro (struct)
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include<stdlib.h>
#include <iostream>
#include <windows.h>
#include <cstdio>
using namespace std;
#define maxFila 10

typedef struct producto
{
char nombre[20];
float precio; //modifico
int codigo;
}Producto;

/* Arreglo que almacena productos */

Producto codigo[100];

/* Contiene el numero de productos actual */
int total = 0;

void cargar(), guardar(), insertar(producto info),Regarticulos(),Ajuste (),MaxMenos(),Ajuste ();
void ingresar(), buscar(), modificar(), eliminar(), ordenar(), mostrar(), generar(), reporte(),Existencia(),PrecVta(),cveprocto(),actprevta(),reginvent(); //incluir
char menu(void), Sub_articulo(void), encabezado();

main()
{
system("cls");
total=0;
cargar();
char op, g;

// for(;;)
do
{
fflush(stdin);
switch(op=menu())
{
case '1':
Regarticulos();
break;
case '2':
ordenar();
break;
case '3':
mostrar();
break;
case '4':
generar(); //meter
break;
case '5':
reporte(); //meter
break;
case '6':
break;
MaxMenos();
case '7':
break;
Ajuste ();
case '8':
break;
default :
printf("Opcion no valida");
getch();
}

if(op=='6')
{
printf("Presione (g) para guardar los cambios: ");
g=getche();
// break;
}
printf("\n");
system("pause");
system("cls");
}while(op<'8');
// system("pause");


if(g=='g')
{
guardar();
// exit(1);
}
}

void insertar(producto info)
{
strcpy(codigo[total].nombre, info.nombre);
codigo[total].precio = info.precio;
codigo[total].codigo = info.codigo;
total++;
// printf("%d --> ",total);
// printf("%d ",info.precio);
}

void cargar()
{
Producto info;
FILE *fp;
int x;
fp=fopen("productos.txt","r");
if(fp==NULL)
{
printf("\n");
return;
}

while(!feof(fp))
{
if(fread(&info, sizeof(producto), 1, fp)!=1) break;
if (info.codigo>0)
insertar(info);
}

fclose(fp);
}

void guardar()
{
producto info;
FILE *fp;

fp=fopen("productos.txt","w");
if(fp==NULL)
{
printf("No se puede abrir el archivo\n");
return;
}

for(int i=0; i<total; i++)
fwrite(&codigo[i], sizeof(producto), 1, fp);

fclose(fp);
}

char Sub_articulo(void)
{
char d;
// printf("\t Lleressy Roman Vega \n");
printf(" \n");
printf("\t ELEGIR UNA OPCION : \n");
printf(" \n");
printf("\t(1) Ingresar Productos\n");
printf("\t(2) Buscar Productos\n");
printf("\t(3) Modificar Productos\n");
printf("\t(4) Eliminar Productos\n");
printf("\t(5) Salir \n");
printf(" \n");
printf("\t Introduzca su opcion: ");
d=getche();
printf("\n");
return(d);
}

void Regarticulos()
{
char ops;
do
{
fflush(stdin);
switch(ops=Sub_articulo())
{
case '1':
ingresar();
break;
case '2':
buscar();
break;
case '3':
modificar();
break;
case '4':
eliminar();
break;
case '5':
break;
default :
printf("Opcion no valida");
getch();
}

printf("\n");
system("pause");
system("cls");
}while(ops<'5');
// system("pause");

}
void ingresar()
{ fflush(stdin);
producto info;
float pre;
int cod;
printf("Ingrese Nombre del producto: "); gets(info.nombre);
printf(" \n");
printf("Ingrese el precio del producto: ");
scanf("%f", &pre);
printf(" \n");
printf("Ingrese el Codigo del Producto: ");
scanf("%d", &cod);
info.precio=pre;
printf("%.2f",pre);
info.codigo=cod;
insertar(info);
printf(" \n");
printf("Producto ingresado exitosamente");
total++;
}

void buscar()
{
char nombre[20];
int i;

printf("Ingrese El Nombre A Buscar: ");
gets(nombre);
// printf("Nombre: %s %s\n",codigo[i].nombre, nombre);

for(i=0; i<total; i++)
if(!strcmp(codigo[i].nombre, nombre))
{
printf("\n--- Datos Del Producto ---\n");
printf("Num.: %d\n", i+1);
printf("Nombre: %s\n",codigo[i].nombre);
printf("Precio: $ %f\n",codigo[i].precio); //modificar
printf("Codigo: %d",codigo[i].codigo);

break;
}

if(i==total)
printf("producto no encontrado");
}

void modificar()
{
char nombre[20];
int i;

printf("Ingrese el nombre del a modificar: ");
gets(nombre);

for(i=0; i<total; i++)
if(!strcmp(codigo[i].nombre, nombre))
{
printf("--- Datos actuales del producto ---\n");
printf("Num.: %d\n", i+1);
printf("Nombre: %s\n", codigo[i].nombre);
printf("Precio: $ %f\n", codigo[i].precio); //modifico
printf("Codigo: %d\n\n", codigo[i].codigo);

printf("--- Nuevos datos del producto ---\n");
printf("Ingrese nombre nuevo del producto: "); gets(codigo[i].nombre);
printf("Ingrese el precio: %f ",(codigo[i].precio)); //modifico
printf("Ingrese el codigo del producto: ");
scanf("%d", &(codigo[i].codigo));
printf(" \n");

printf("\n\nDatos actualizados exitosamente!");

break;
}

if(i==total)
printf("Producto no encontrado");
}

void eliminar()
{
char nombre[20];
int i;

printf("Ingrese nombre del producto a eliminar: ");
gets(nombre);

for(i=0; i<total; i++)
if(!strcmp(codigo[i].nombre, nombre))
{
/* Recorre registros posteriores */
for(int j=i+1; j<total; j++)
{
strcpy(codigo[j-1].nombre, codigo[j].nombre);
codigo[j-1].precio = codigo[j].precio;
codigo[j-1].codigo = codigo[j].codigo;
}

printf("Producto eliminado");
total--;
break;
}

if(i==total)
printf("producto no encontrado");
}

void ordenar()
{
int i, j;
producto temp;

for(i=0; i<total-1; i++)
{
for(j=i+1; j<total; j++)
if(strcmp(codigo[i].nombre, codigo[j].nombre)>0)
{
/* Copia en variable temporal datos actuales */
strcpy(temp.nombre, codigo[i].nombre);
temp.precio = codigo[i].precio;
temp.codigo = codigo[i].codigo;

/* Intercambia informacion */
strcpy(codigo[i].nombre, codigo[j].nombre);
codigo[i].precio = codigo[j].precio;
codigo[i].codigo = codigo[j].codigo;

strcpy(codigo[j].nombre, temp.nombre);
codigo[j].precio, temp.precio;
codigo[j].codigo = temp.codigo;
}
}
printf("Se han ordenado los registros");
}

void mostrar()
{
printf("--- Listado de productos ---\n");
printf("Num.\t - \tNombre - \tPrecio - \tCodigo\n");
for(int i=0; i<total; i++)
{
printf("%d\t\t ", i+1);
printf("%s\t\t ", codigo[i].nombre);
printf("%.2f\t\t ", codigo[i].precio); //modifico
printf("%d\n", codigo[i].codigo);
}
}

char menu(void)
{
char c;
// printf("\t Lleressy Roman Vega \n");
printf(" \n");
printf("\t ELEGIR UNA OPCION : \n");
printf(" \n");
printf("\t(1) Registro Productos\n");
printf("\t(2) Ordenar Productos\n");
printf("\t(3) Mostrar Productos\n");
printf("\t(4) Generar Reporte \n");
printf("\t(5) Reporte Reporte \n");
printf("\t(6) Salir \n");
printf(" \n");
printf("\t Introduzca su opcion: ");
c=getche();
printf("\n");
return(c);
}



void generar()
{

Producto info;
char nombre[20], nombre2[20];
int precio,codigo, i=0, uno=0, dos=0;
FILE *fp;
FILE *arch;
//abrimos el archivo de entrada de datos
if((fp=fopen("productos.txt","r"))==NULL)
{
printf("No pude abrir el archivo del directorio \n");
exit(1);
}
// abrimos el archivo de salida, Reporte
if((arch=fopen("ProductosRep.txt", "w"))==NULL)
{
printf("No pude abrir el arch del Reporte\n");
exit(1);
}
// for(int i=0; i<total; i++)

while(!feof(fp))
//while(dos = 0)
{
i=i+1;
if(uno == 0)
{ //rutina para escribir el encabezado del reporte
// encabezado();
fprintf(arch, " Empresa Mercancia Fragoso.");
fprintf(arch, "\n");
fprintf(arch, " Relacion de mercancias con las que se cuenta");
fprintf(arch, "\n\n");
fprintf(arch, " \tNombre \tPrecio \tCodigo");
fprintf(arch, "\n\n");
uno=8;
}
//La siguiente instruccion es para leer el archivo
if(fread(&info, sizeof(Producto), 1, fp)!=1) break;
if (info.codigo>0)

//Se envian los campos al archivo de salida del Reportes //
if(!feof(fp))
{
fprintf(arch, "%s", info.nombre);
fprintf(arch,"\t");
fprintf(arch, "%.2f",info.precio);
fprintf(arch,"\t");
fprintf(arch,"%d", info.codigo);
fprintf(arch,"\n");
}
printf("%d---",info.codigo);
uno = uno +1;
if(uno > 60) uno = 0;
}
fclose(fp);
fclose(arch);
printf("\n");
printf("*******Ya se genero el Reporte ******** \n");
system("pause");
}

char encabezado()
{
//FILE *fp;
FILE *fpr;
fprintf(fpr," Empresa Mercancia Fragoso.");
fprintf(fpr, "\n");
fprintf(fpr," Relacion de mercancias con las que se cuenta");
fprintf(fpr, "\n\n");
fprintf(fpr," \tNombre \tPrecio \tCodigo");
fprintf(fpr, "\n\n");
return 0;}

void reporte(){
printf(" Empresa Mercancia Fragoso.");
printf("\n");
printf("Relacion de mercancias con las que se cuenta");
printf("\n\n");
printf("\tNombre \tPrecio \tCodigo");
printf("\n\n");
for(int i=0; i<total; i++)
{
printf("%d\t\t ", i+1);
printf("%s\t\t ", codigo[i].nombre);
printf("%.2f\t\t ", codigo[i].precio); //modifico
printf("%d\n", codigo[i].codigo);
}
}


void Ajuste(void),Existencia(void),PrecVta(void),cveprocto(void),actprevta(void),reginvent(void)

{

reginvent info;
int i,x;
double acumact=0,result=0,val,acumant=0,acutot=0,acunvo=0,acuant=0,acuexi, prevta,incre=1.15,reg=0,prod;
char val1[10];

for(i=0; i<total; i++)
{
prod=atoi(codigo[i].cveprocto);
if (prod>0)
{
acuexi=atoi(codigo[i].Existencia);
prevta=atoi(codigo[i].PrecVta);
acunvo=acunvo + (acuexi* prevta*incre);
acuant=acuant + (acuexi* prevta);
reg++;
}
}
cout<<"El total del inventario anterior es : "<<acuant<<endl;
cout<<"El total del nuevo inventario es : "<<acunvo<<endl;
cout<<" El numero de registros son : "<<reg<<endl;
cout<<" El numero de registros son : "<<reg;
cout<<"\n\n";
cout<<"Deseas actualizar los precios de venta del el inventario digita 1"<<endl;
cout<<"en caso contrario oprime enter ";
cin>>x;
if (x==1)
actprevta();


}

void MaxMenos()
{
reginvent info;
int valor, AcumAnt=0,valmax=0,AcumAct=0,cal=0,menor=100000;
char nombre1[20],nombre2[20];;
for(int i=0; i<total; i++)
{ printf("hola %d",total);
printf("%d -- ", i+1);

printf("%8s ", codigo[i].cveprocto);
printf("%s ", codigo[i].Nombre);
printf("%s ", codigo[i].PrecComp);
printf("%s ", codigo[i].PrecVta);
printf("%s ", codigo[i].Existencia);
printf("%s ", codigo[i].Ventas);
printf("%s ", codigo[i].Unidades);
printf("\n");

valor = atoi(codigo[i].Ventas);
cout<<"ventas " <<valor;
if(valor>0)
if(valor>valmax)

{
valmax=valor;
strcpy(nombre1, codigo[i].Nombre);
cout<<"\nvalmax " <<valmax;
}

if(valor>0)
if(valor<menor)
{
menor=valor;
strcpy(nombre2, codigo[i].Nombre);
cout<<"\nvalmen " <<menor;
}
}
cout<< "\n El producto mas vendido : " <<valmax<<" es : "<<nombre1;
cout<< "\n El producto menos vendido : " <<menor <<" es : "<<nombre2;

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rene

Ayuda no puedo encontrar mi error y es un proyecto para mañana

Publicado por Rene (6 intervenciones) el 15/01/2023 07:10:59
Lo primero y pregunto:

1. Debugueastes la aplicación??? No! entonces empieza por ahi, función por función ok
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar