#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <Windows.h> // Biblioteca para modificar la consola.
int op, ID_Planta[100], Tipo_Planta[100], Cantidad_Existente_Planta[100], Contador_Plantas = 0, Contador = 0, aux, Control = 0, salida = 0;
char Nombre_Planta[100][20], auxiliar[20];
bool error = false; // Variable Booleana para ahorrar pasos y numeros declarativos
// Funciones que subdividen el programa
void Altas();
void Consulta_General();
void Consulta_Nombre();
void Consulta_Tipo();
void Control_Existencia();
void main()
{
// Detalle al programa que modifica el color y titulo de la consola
system("color 2b");
system("title Vivero");
do
{
// CLS limpia la pantalla para que todo se mantenga mas limpio y ordenado
system("cls");
printf(" ¿Que deseas hacer? \n 1.- Altas \n 2.- Consulta General \n 3.- Consulta por Nombre \n 4.- Consulta por Tipo \n 5.- Control de Existencia \n 6.- Salir \n");
scanf("%i", &op);
switch (op)
{
case 1: Altas(); // Dar de Alta
break;
case 2: Consulta_General(); // Consultas Generales
break;
case 3: Consulta_Nombre(); // Consulta por Nombre
break;
case 4: Consulta_Tipo(); // Consulta por Tipo
break;
case 5: Control_Existencia(); // Control de Existencia
break;
case 6: // Salida
printf ("\n Gracias por usar el programa :) \n");
break;
default:
printf ("\n ERROR: Numero no valido \n");
system("pause");
break;
}
} while (op != 6);
system("pause");
}
void Altas()
{
do
{
// En vez de usar un for, y estar pregunte al usuario cuantos quiere, mejor voy sumando Contador_Plantas y asi cada vez que elija que quiere registrar otro, se ira sumando.
Contador_Plantas ++;
system("cls");
do{
error = false;
printf ("\n [No se admite ingresar 0] ID de la Planta No. %i: \n", Contador_Plantas);
scanf_s("%i", &ID_Planta[Contador_Plantas]);
// Confirmacion de que no se ingrese 0, revisese la ultima seccion
if ( ID_Planta[Contador_Plantas] == 0 )
{
printf("\n ERROR: Ingresaste 0 \n");
system("pause");
// Error es verdadero por que hay un error
error = true;
}
// Confirmacion de que no hay ningun error en el programa, y esto es lo mismo en cada seccion
}while(error != false);
do{
error = false;
printf ("\n Nombre de la Planta No. %i: \n", Contador_Plantas);
fflush(stdin); // ffslush para que se limpie el flujo de entrada
gets(Nombre_Planta[Contador_Plantas]);
// Condicion para saber si ya hay un nombre que se ha registrado con anterioridad y no se caiga en que ya hay uno igual a otro
if ( strcmp(Nombre_Planta[Contador_Plantas], Nombre_Planta[Contador_Plantas - 1]) == 0)
{
printf("\n ERROR: Ya existe un nombre asi. \n");
system("pause");
error = true;
}
}while(error != false);
do{
error = false;
printf("\n Tipo de la planta No. %i : \n 1.- Exterior \n 2.- Interior \n", Contador_Plantas);
scanf_s("%i", &Tipo_Planta[Contador_Plantas]);
// Confirmacion de que el tipo de planta es el correcto
switch (Tipo_Planta[Contador_Plantas])
{
case 1:
case 2:
break;
default:
printf("\n ERROR: Ingresa un numero valido. \n");
error = true;
break;
}
}while( error != false);
printf ("\n Cantidad Existente de la planta No. %i \n", Contador_Plantas);
scanf_s("%i", &Cantidad_Existente_Planta[Contador_Plantas]);
do{
error = false;
printf("\n ¿Deseas seguir dando de alta? \n 1.- Si \n 2.- No \n");
scanf_s("%i", &salida);
switch (salida)
{
case 1:
case 2:
break;
default:
printf("\n ERROR: Ingresa un numero valido. \n");
error = true;
break;
}
}while( error != false);
} while (salida != 2);
system("pause");
}
void Consulta_General()
{
// Imprimir toda la informacion de las plantas existentes en el vivero.
for (int i = 1; i <= Contador_Plantas; i++)
{
printf ("\n ID de la Planta No. %i: %i\n",i , ID_Planta[i]);
printf ("\n Nombre de la Planta No. %i: \n", i);
puts(Nombre_Planta[i]);
printf("\n Tipo de la planta No. %i : %i \n",i , Tipo_Planta[i]);
printf ("\n Cantidad Existente de la planta No. %i: %i \n",i , Cantidad_Existente_Planta[i]);
printf (" \n \n ====================================== \n \n");
}
system("pause");
}
void Consulta_Nombre()
{
do{
system("cls");
printf("\n Ingrese el Nombre de la planta que desea buscar: \n");
fflush(stdin);
gets(auxiliar);
for (int i = 1; i <= Contador_Plantas; i++)
{
// Condicion para saber si el auxiliar y el nombre coinciden, es decir que lo que puso el usuario sea igual al nombre que se busca.
if( strcmp(auxiliar, Nombre_Planta[i]) == 0 )
{
error = false;
system("cls");
printf ("\n ID de la Planta No. %i: %i\n", i, ID_Planta[i]);
printf ("\n Nombre de la Planta No. %i: \n", i);
puts(Nombre_Planta[i]);
printf("\n Tipo de la planta No. %i : %i\n", i, Tipo_Planta[i]);
printf ("\n Cantidad Existente de la planta No. %i : %i \n", i, Cantidad_Existente_Planta[i]);
system("pause");
}
else
{
error = true;
}
}
// En caso de que no se haya encontrado, el error se hara verdadero y se mostrara este mensaje
if ( error == true )
{
printf ("\n No se encontro el nombre que buscas \n");
system("pause");
}
printf("\n ¿Deseas seguir buscando plantas por nombre? \n 1.- Si \n 2.- No \n");
scanf_s("%i", &salida);
} while (salida != 2);
}
void Consulta_Tipo()
{
do{
system("cls");
printf("\n Ingrese el tipo de planta que desea consultar: \n 1.- Exterior \n 2.- Interior \n");
scanf_s("%i", &op);
for (int i = 1; i <= Contador_Plantas; i++)
{
if ( op == Tipo_Planta[i])
{
// Este Contador ira sumando todos los tipos de plantas que existen
Contador++;
error = false;
system("cls");
printf ("\n ID de la Planta No. %i: %i\n", i, ID_Planta[i]);
printf ("\n Nombre de la Planta No. %i: \n", i);
puts(Nombre_Planta[i]);
printf("\n Tipo de la planta No. %i : %i\n", i, Tipo_Planta[i]);
printf ("\n Cantidad Existente de la planta No. %i : %i \n", i, Cantidad_Existente_Planta[i]);
system("pause");
}
else
{
error = true;
}
}
if (error == true)
{
printf("\n No existe informacion disponible \n");
system("pause");
}
else
{
printf ("\n En total existen %i Plantas del tipo %i \n", Contador, op);
system("pause");
}
printf("\n ¿Deseas seguir buscando plantas por tipo? \n 1.- Si \n 2.- No \n");
scanf_s("%i", &salida);
} while (salida != 2);
}
void Control_Existencia()
{
do
{
system("cls");
printf ("\n Ingresa la Clave de la Planta que buscas \n");
scanf_s("%i", &aux);
for (int i = 1; i <= Contador_Plantas; i++)
{
// Condicion para saber si el auxiliar es igual a la clave que se dio
if ( aux == ID_Planta[i] )
{
system("cls");
printf("\n ¿Que deseas hacer? \n 1.- Aumentar \n 2.- Disminuir \n ");
scanf_s("%i", &op);
system("cls");
switch (op)
{
case 1:
printf ("\n Ingresa la cantidad a la que la Aumentaras: \n");
scanf_s("%i", &Control);
// Condicion para saber si control es mayor y gracias a ello saber que en realidad es mayor y aplicar la suma de manera correcta
if ( Control > Cantidad_Existente_Planta[i])
{
// Operacion para hacer el aumento
Cantidad_Existente_Planta[i] = Cantidad_Existente_Planta[i] + Control;
printf("\n Se ha realizado con exito \n");
system("pause");
}
else
{
// En caso de que se ingrese algo menor al valor original se presentara este error
printf("\n ERROR: La cantidad ingresada es igual o menor a lo que se deberia \n");
system("pause");
}
break;
case 2:
printf ("\n Ingresa la cantidad a la que la Disminuiras: \n");
scanf_s("%i", &Control);
// Condicion para saber si control es mayor y gracias a ello saber que en realidad es menor y aplicar la suma de manera correcta
if ( Control < Cantidad_Existente_Planta[i])
{
// Operacion para hacer el disminuyendo
Cantidad_Existente_Planta[i] = Cantidad_Existente_Planta[i] - Control;
printf("\n Se ha realizado con exito \n");
system("pause");
}
else
{
printf("\n ERROR: La cantidad ingresada es igual o mayor a lo que se deberia \n");
system("pause");
}
break;
default:
printf("\n ERROR: No valido \n");
system("pause");
break;
}
}
}
// condicion para saber si quiero seguir poniendo o salirme del programa
printf("\n ¿Deseas seguir aumentando o disminuyendo la cantidad de plantas? \n 1.- Si \n 2.- No \n");
scanf_s("%i", &salida);
} while (salida != 2);
}
- Hay redundancias en el código.
- No existen suficientes verificadores.