Ganchala Stalin Tarea 3.4
Ganchala Stalin Tarea 3.4
Ganchala Stalin Tarea 3.4
CARRERA
INGENIERÍA MECÁNICA
NRC
7531
ASIGNATURA
FUNDAMENTOS DE PROGRAMACIÓN
TAREA 3.4
TEMA
NOMBRE
FECHA
22/02/2022
1) Se necesita mantener un inventario de una ferretería que indique cuáles son las
herramientas que se tiene, cuántas se tiene y el costo de cada una.
Escribir un programa que inicialice el archivo "tools.dat" a 100 registros vacíos, que permita
introducir los datos correspondientes a cada herramienta, enlistar todas las herramientas,
borrar un registro correspondiente a una herramienta que ya no se posea, y actualizar
cualquier información dentro del archivo. El número de identificación de la herramienta
deberá ser el número de registro.
M
I
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstring>
#include <string>
#include <climits>
#include <vector>
class Articulo {
public:
string referencia;
string nombre;
int existente;
int compra;
int venta;
Articulo() {}
return this->referencia<articulo.referencia;
if (this!=&articulo){
this->referencia = articulo.referencia;
this->nombre = articulo.nombre;
this->existente = articulo.existente;
this->compra = articulo.compra;
this->venta = articulo.venta;
return *this;
//imprimir en pantalla
cout << " cantidad existente: " << articulo.existente << endl;
cout << " precio de compra : " << articulo.compra << endl;
cout << " precio de venta : " << articulo.venta << endl;
//imprimir en archivo
};
//funciones
template <class T> void quick_sort (vector<T> &arreglo, int inicio=0, int fin=-1);
int main(){
vector<Articulo> arreglo;
char campo[255], ruta[] = "Lista_Articulos.txt"; //nombre del archivo .txt a crear en carpeta para
almacenamiento de información
if (entrada!=NULL){
articulo.nombre = campo;
arreglo.push_back (articulo);
entrada.close();
do {
system ("cls");
//menu en pantalla
cout << "\n Programa para registrar articulos\n\n"<< endl <<"\n MEN\351 PRINCIPAL\n" <<
endl << " 1. Ingresar nuevo registro"
<< endl << " 3. Modificar registro existente" << endl << " 4. Eliminar Registro existente" <<
endl
<< " 5. Ordenar registros existentes" << endl << " 6. Editar registros existente\n"
<< endl <<" Nota: Para guardar los registros es necesario al final seleccionar la opci\242n: "
<< endl << " 7. Guardar registros y Salir del sistema" << endl;
//condicionales
continue;
// ingreso de articulo
if (opcion<5){
if (dato!=NULL)
case 1:
articulo.nombre = leer_cadena (" Nombre del articulo: "); //permite ingreso de letras y
nombres
arreglo.push_back (articulo);
case 3:
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
cout << endl << " Registro actualizado correctamente."; // informa que los datos se
registraron en archivo
break;
case 4:
vector_quitar (arreglo, *dato); //informa que el registro del articulo fue aliminado
break;
case 5:
break;
case 6:
n = arreglo.size();
contador = 0;
cout << " Total de registros: " << contador << ".";
break;
} while (opcion!=7);
if (salida!=NULL){
n = arreglo.size();
salida.close();
return EXIT_SUCCESS;
if (dato==arreglo[i])
return &arreglo[i];
return NULL;
int i, n=arreglo.size();
if (dato==arreglo[i]) {
arreglo.erase (arreglo.begin()+i);
return;
if (fin==-1)
fin = arreglo.size()-1;
mayor = fin;
T pivote;
if (fin>inicio){
if (menor<=mayor){
pivote = arreglo[menor];
arreglo[menor] = arreglo[mayor];
arreglo[mayor] = pivote;
menor++;
mayor--;
if (inicio<mayor)
if (menor<fin)
char cadena[255];
if (salto!=NULL)
*salto = '\0';
string str(cadena);
return str;
int entero;
do {
cin.get();
if (entero<menor || entero>mayor)
return entero;
if (archivo.eof())
return false;
if (tab!=NULL)
*tab = '\0';
return true;