Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - CoduJ

Páginas: [1]
1
Hola, comunidad.
Hice un sencillo programa que trata de disimular la tarea de ir de compras a un mercado; cabe mencionar que el hecho de que no halla funciones para dividir este problema, es adrede, quería intentar cómo sería hacerlo sin esa "técnica".  Invito a que ustedes también puedan compartir una manera más de resolverlo.

Código: [Seleccionar]
#include<iostream>

using namespace std;

/*
run: variable bool para ser constante en la ejecución del programa
money: variable int que simulara dinero para la compra de productos
minusMoney: variable int que restará el valor de "money" según el precio del producto
multProduct: variable int que sirve para multiplicar el precio de un producto según sea la cantidad pedida
shoppCart: variable string, array; simulará un carrito de compras
marketProduct: variable iny, array; serán los productos
*/
int main(){
int vegeFruts[3]; //vegetales y frutas
vegeFruts[0] = 2; //tomates
vegeFruts[1] = 4; //papas
vegeFruts[2] = 4; //lechuga
int breadRep[3]; //panaderia y reposteria
breadRep[0] = 2; //pan
breadRep[1] = 4; //pastel
breadRep[2] = 2; //dona
int snack[3]; //snacks
snack[0] = 2; //mani
snack[1] = 3; //nuez
snack[2] = 4; //papas fritas
int drink[3]; //bebidas
drink[0] = 5; //soda
drink[1] = 5; //jugo
drink[2] = 4; //te
int money = 2000, minusMoney = 0, multProduct = 0, opc = 0, indFil = 0, indCol = 0;
string shoppCart[16];
string totalProductNum[16];
string totalProduct[3][4];
//vegetales y frutas
totalProduct[0][0] = "Tomate";
totalProduct[1][0] = "Papa";
totalProduct[2][0] = "Lechuga";
//panaderia y reposteria
totalProduct[0][1] = "Pan";
totalProduct[1][1] = "Pastel";
totalProduct[2][1] = "Dona";
//snack
totalProduct[0][2] = "Mani";
totalProduct[1][2] = "Nuez";
totalProduct[2][2] = "Mani confitado";
//bebidas
totalProduct[0][3] = "Soda";
totalProduct[1][3] = "Jugo";
totalProduct[2][3] = "Te";
string multProductString;
bool run = true;

for(int i = 0; i < 16; i++){
shoppCart[i] = "[vacio]";
}
while(run){
do{
system("cls");
cout<<"\t--- Bienvenido a la tienda ---\nUsted cuenta con "<<money<<" de dinero."<<endl;
cout<<"1. Vegetales y frutas.\n2. Panaderia y reposteria.\n3. Snacks.\n4. Bebidas.\n5. Ver carrito.\n6. Salir."<<endl;
cin>>opc;
indCol = opc-1;
}while(opc < 1 || opc > 6);
switch(opc){ //opciones
case 1: //vegetales y frutas
do{
system("cls");
cout<<"1. Tomate | $2\n2. Papa | $4\n3. Lechuga | $4"<<endl;
cin>>opc;
indFil = opc-1;
}while(opc <= 0 || opc > 3);
minusMoney = vegeFruts[opc-1];
break;
case 2: //panaderia y reposteria
do{system("cls");
cout<<"1. Pan | $2\n2. Pastel | $4\n3. Dona | $2"<<endl;
cin>>opc;
indFil = opc-1;
}while(opc <= 0 || opc > 3);
minusMoney = breadRep[opc-1];
break;
case 3: //snack
do{
system("cls");
cout<<"1. Mani | $2\n2. Nuez | $3\n3. Mani confitado | $4"<<endl;
cin>>opc;
indFil = opc-1;
}while(opc <= 0 || opc > 3);
minusMoney = snack[opc-1];
break;
case 4: //bebidas
do{
system("cls");
cout<<"1. Soda | $5\n2. Jugo | $4\n3. Te | $4"<<endl;
cin>>opc;
indFil = opc-1;
}while(opc <= 0 || opc > 3);
minusMoney = drink[opc-1];
break;
case 5: //carrito
do{
system("cls");
for(int i = 0; i < 16; i++){
if(shoppCart[i] == "[vacio]"){
cout<<i+1<<". "<<shoppCart[i]<<endl;
}else{
cout<<i+1<<". "<<totalProductNum[i]<<" x "<<shoppCart[i]<<endl;
}
}
cout<<"1: Quitar producto del carro. | 2: Salir."<<endl;
cin>>opc;
if(opc == 1){
do{
cout<<"Escriba el numero que corresponde al producto que desea retirar; 0 para salir."<<endl;
cin>>opc;
if(opc == 0){
break;
}
shoppCart[opc-1] = "[vacio]";
}while(opc <= 0 || opc > 16 || shoppCart[opc-1] == "[vacio]");
}else if(opc == 2){
break;
}
}while(opc <= 0 || opc > 2);
opc = 5;
break;
case 6: //salir
run = false;
}
if(opc < 5){
do{
cout<<"Cantidad: "; cin>>multProduct; //multiplicar el precio del producto segun la cantidad
}while(multProduct <= 0);
minusMoney *= multProduct;
if(money - minusMoney > 0){ //restar dinero
for(int i = 0; i < 16; i++){
if(shoppCart[i] == "[vacio]"){
totalProductNum[i] = to_string(multProduct);
shoppCart[i] = "[" + totalProduct[indFil][indCol] + "]";
break;
}
}
money -= minusMoney;
}else{
cout<<"No hay suficiente dinero."<<endl;
system("pause");
}
}
}

return 0;
}

2
Muy buenas, espero que se encuentren bien. He programado un sencillo programa en donde puedes sumar vectores, quería, además de compartir el código, que me retroalimenten sobre el mismo, aporten consejos, crítica, etc.; me gustaría ver otras formas en las que ustedes harían esto.
Código: [Seleccionar]
#include<iostream>
#include<math.h>

using namespace std;

int main(){
int largoVector1 = 0, largoVector2 = 0, largoVectorMayor = 0;
bool largoVector = true; //true: vector 1 false: vector 2

cout<<"Largo del vector 1: "; cin>>largoVector1; //dar los valores de largo del vector
cout<<"Largo del vector 2: "; cin>>largoVector2;
int vector1[largoVector1]; //declaraciones de vectores
int vector2[largoVector2];
if(largoVector1 > largoVector2){ //ver cual de los dos vectores ses mayor
largoVectorMayor = largoVector1;
}else{
largoVectorMayor = largoVector2;
largoVector = false;
}
for(int i = 0; i < largoVectorMayor; i++){ //dejar en 0 cada espacion de los vectores
vector1[i] = 0;
vector2[i] = 0;
}
cout<<"\tVector 1:"<<endl;
for(int i = 0; i < largoVector1; i++){ //declarar valores de los vectores
cout<<"Vector: "; cin>>vector1[i];
}
cout<<"\tVector 2:"<<endl;
for(int i = 0; i < largoVector2; i++){
cout<<"Vector: "; cin>>vector2[i];
}
if(largoVector){ //hacer operatoria e imprimer el primer vector
cout<<"V1: | ";
for(int i = 0; i < largoVector1; i++){
cout<<vector1[i]<<" | ";
}
cout<<"\nV2: | ";
for(int i = 0; i < largoVector2+(largoVector1 - largoVector2); i++){
cout<<vector2[i]<<" | ";
}
for(int i = 0; i < largoVector1; i++){ //sumar vectores
vector1[i] += vector2[i];
}
cout<<"\nR:  | ";
for(int i = 0; i < largoVector1; i++){ //imprimir vectores
cout<<vector1[i]<<" | ";
}
}else{ //en caso de que el segundo vector sea mayor
cout<<"V1: | ";
for(int i = 0; i < largoVector1+(largoVector2 - largoVector1); i++){
cout<<vector1[i]<<" | ";
}
cout<<"\nV2: | ";
for(int i = 0; i < largoVector2; i++){
cout<<vector2[i]<<" | ";
}
for(int i = 0; i < largoVector2; i++){ //sumar vectores
vector2[i] += vector1[i];
}
cout<<"\nR:  | ";
for(int i = 0; i < largoVector2; i++){ //imprimir vectores
cout<<vector2[i]<<" | ";
}
}

return 0;
}

3
Buenas, espero que se encuentren bien.

He estado programando un algoritmo para simular un movimiento de un carácter en la consola, este mismo se puede mover en 4 direcciones, me gustaría saber su opinión y de que otras formas se les hubiera ocurrido hacer esto.


Código: [Seleccionar]
import java.util.Scanner;
import java.util.Random;

public class Main{
   public static void main(String[] args){
      Scanner input = new Scanner(System.in);
      Random numRandom = new Random();
      int x = 0, y = 0, dir = 0, planoX = 0, planoY = 0, opcTipoMapa = 0;
      //x = y = cordenada del jugador
      //dir = direccion del jugador
      //planoX = planoY = indice de la matriz de la posicion del jugador
      //opcTipoMapa = el mapa puede ser generado por valores que el usuario colocara o seran valores aleatorios
      boolean juego = true;
      char jugador = ' ';
     
      //aspecto del jugador
      System.out.print("Jugador: ");     
      jugador = input.next().charAt(0);
      //declarar valores del largo y ancho del mapa
      System.out.println("1: Escoger los valores del mapa | 2: Valores aleatorios (1-100)");
      opcTipoMapa = input.nextInt();
      while(opcTipoMapa < 1 || opcTipoMapa > 2){
         System.out.println("No ha seleccionado de manera correcta. . .");
         System.out.println("1: Escoger los valores del mapa | 2: Valores aleatorios (1-100)");
         opcTipoMapa = input.nextInt();
      }
      switch(opcTipoMapa){
         case 1:
            System.out.print("Ancho: ");
            planoX = input.nextInt();
            System.out.print("Largo: ");
            planoY = input.nextInt();
         break;
         case 2:
            planoX = numRandom.nextInt(100)+1;
            planoY = numRandom.nextInt(100)+1;
            System.out.println("Ancho: " + planoX + "\nLargo: " + planoY);           
         break;
      }
      int plano[][] = new int[planoX][planoY];
      plano[0][0] = jugador;
     
      //juego
      while(juego){
         for(int i = 0; i < planoY; i++){
            for(int j = 0; j < planoX; j++){
               if(plano[j][i] == jugador){
                  System.out.print("[" + jugador + "]");
               }else{
                  System.out.print("[ ]");
               }
            }
            System.out.println();
         }
         System.out.println("Direccion: 1: Derecha | 2: Izquierda | 3: Arriba | 4: Abajo");
         dir = input.nextInt();
         while(dir < 1 || dir > 4){
            System.out.println("No ha seleccionado de manera correcta. . .");
            System.out.println("Direccion: 1: Derecha | 2: Izquierda | 3: Arriba | 4: Abajo");
            dir = input.nextInt();
         }
         switch(dir){
            case 1: //x++
               x++;
               if(x == planoX){ //limite del mapa
                  x = 0;
                  plano[x][y] = jugador;
                  plano[x+planoX-1][y] = ' ';
               }else{ //movimiento
                  plano[x][y] = jugador;
                  plano[x-1][y] = ' ';
               }
            break;
            case 2: //x--
               x--;
               if(x < 0){ //limite del mapa
                  x = planoX-1;
                  plano[x][y] = jugador;
                  plano[0][y] = ' ';
               }else{
                  plano[x][y] = jugador;
                  plano[x+1][y] = ' ';
               } 
            break;
            case 3: //y--
               y--;
               if(y < 0){
                  y = planoY-1;
                  plano[x][y] = jugador;
                  plano[x][0] = ' ';
               }else{
                  plano[x][y] = jugador;
                  plano[x][y+1] = ' ';
               }
            break;
            case 4: //y++
               y++;
               if(y == planoY){
                  y = 0;
                  plano[x][y] = jugador;
                  plano[x][y+planoY-1] = ' ';
               }else{
                  plano[x][y] = jugador;
                  plano[x][y-1] = ' ';
               }
            break;
         }
      }
   }
}

Tengo una pequeña duda, hace ya mucho tiempo, creé un hilo sobre una duda que tenía acerca del objeto Scanner, el usuario Kabuto me respondió, y quede fuera de dudas, sin embargo, por alguna razón me estoy emepzando a cuestionar y se me generó una nueva pregunta. El problema que tenía era de que a veces el Scanner no me leía los datos y los "saltaba", es decir...

Código: [Seleccionar]
variableInt = input.nextInt();
System.out.println("Numero: " + variableInt);
variableString = input.nextLine(); //el objeto Scanner ignora esto
System.out.println("Frase: " + variableString);

A este suceso se le llama "retorno de coche", y he aquí mi duda, por lo que entiendo, al momento de utilizar X valor con el objeto Scanner, y cambiar ese mismo valor de manera bruta, puede que provoque este fenómeno, ¿no?

4
Buenas, espero que se encuentren bien. Otro hilo en donde expongo mi código buscando recibir una retroalimentación; he estado aprendiendo la POO de Java y demás, pero quise probar con las funciones, para eso, programé un programa para hacer compras, similar a un proyecto que había hecho, pero en este caso quería mejorarlo.


Código: [Seleccionar]
import java.util.Scanner;
import java.util.Random;

public class Test_12{
   static Scanner Input = new Scanner(System.in);
   static Random DineroR = new Random();   
   static byte opc = 0; //toma de decisiones SI/NO
   static int indiceProducto = 0, cantidadProductos = 0, productoCosto = 0, dinero = 10, dineroAux = 0, dineroExtra = 0;
   static boolean estadoCompra = false;
   public static void main(String[] args){
      int cantidadProductos = 0;
      byte opc = 0;
      boolean estadoTienda = true;
      while(estadoTienda == true){
         dineroAux = dinero;
         estadoCompra = true;
         System.out.println("\t--- TIENDA ---\nSeleccione categoria: 1: Comida | 2: Herramientas | 3: Decoraciones | 4: Mostrar dinero | 5: Sacar dinero | 6: Salir");
         opc = (byte) Integer.parseInt(Input.next());
         while(opc < 1 || opc > 6){ //error al insertar datos
            System.out.println("No ha seleccionado de manera correcta. . .");
            System.out.println("\t--- TIENDA ---\nSeleccione categoria: 1: Comida | 2: Herramientas | 3: Decoraciones | 4: Mostrar dinero | 5: Sacar dinero | 6: Salir");
            opc = (byte) Integer.parseInt(Input.next());
         }
         switch(opc){ //menu
            case 1: //comida
               Comida();
            break;
            case 2: //herramienatas
               Herramientas();
            break;           
            case 3: //decoraciones
               Decoraciones();
            break;
            case 4: //mostrar dinero
               System.out.println("Dinero: $" + dinero);
            break;
            case 5:
               dineroExtra = DineroR.nextInt(1000) + 1;
               dinero += dineroExtra;
               System.out.println("Has recibido " + "$" + dineroExtra);
            break;
            case 6: //salir
               estadoTienda = false;
               System.out.println("Usted ha salido de la tienda. . .");
            break;
         }
      }
   }

   public static void Comida(){ //menu opcion 1
      int costo[] = {5, 15, 20};
      String comida[] = {"Papas", "Manzanas", "Pollo"};
      while(estadoCompra == true){
         for(int i = 0; i < comida.length; i++){ //imprimir comidas
            System.out.println("Comida N°"+ (i+1) + ": " + comida[i] + " | " + "$" + costo[i]);
         }
         System.out.print("\tEscriba lo que desea llevar segun el numero del producto\nLLevar: "); //seleccionar producto
         indiceProducto = (byte) Integer.parseInt(Input.next());         
         while(indiceProducto < 1 || indiceProducto > 3){ //error al insertar datos
            System.out.println("\t\tNo ha seleccionado de manera correcta. . .");
            for(int i = 0; i < comida.length; i++){ //imprimir comidas
               System.out.println("Comida N°"+ (i+1) + ": " + comida[i] + " | " + "$" + costo[i]);
            }
            System.out.print("\tEscriba lo que desea llevar segun el numero del producto\nLLevar: ");
            indiceProducto = (byte) Integer.parseInt(Input.next());           
         }
         productoCosto = costo[indiceProducto-1];
         indiceProducto--;
         System.out.print("Cuanto desea llevar: "); //cantidad de producto
         cantidadProductos = Integer.parseInt(Input.next());
         while(cantidadProductos < 1){ //error al insertar datos a la cantidad de productos
            System.out.println("No puede llevar " + cantidadProductos + " de " + comida[indiceProducto]);
            System.out.print("Cuanto desea llevar: ");
            cantidadProductos = Integer.parseInt(Input.next());
         }
         productoCosto *= cantidadProductos;
         dineroAux -= productoCosto;
         if(dineroAux < productoCosto){ //operacion de cantidad de productos y restar dinero
            System.out.println("\tNo queda suficiente dinero\n\t\tVuelva mas tarde");
            break;
         }else{
            dinero -= productoCosto;
         }
         System.out.println("Salir: 1: SI | 2: NO"); //salir
         opc = (byte) Integer.parseInt(Input.next());
         while(opc < 1 || opc > 2){ //error opciones SI o NO de salir del bucle
            System.out.println("\t\tNo ha seleccionado de manera correcta. . .");
            System.out.println("Salir: 1: SI | 2: NO");
            opc = (byte) Integer.parseInt(Input.next());
         }
         if(opc == 1){ //aceptar salir del bucle
            estadoCompra = false;
         }
      }
   }
   public static void Herramientas(){ //menu opcion 2
      int costo[] = {25, 40, 80};
      String herramientas[] = {"Martillo", "Destornillador", "Sierra"};
      while(estadoCompra == true){
         for(int i = 0; i < herramientas.length; i++){ //imprimir herramientas
            System.out.println("Herramienta N°" + (i+1) + ": " + herramientas[i] + " | " + "$" + costo[i]);
         }
         System.out.print("\tEscriba lo que desea llevar segun el numero del producto\nLLevar: "); //seleccionar producto
         indiceProducto = (byte) Integer.parseInt(Input.next());         
         while(indiceProducto < 1 || indiceProducto > 3){ //error al insertar datos
            System.out.println("\t\tNo ha seleccionado de manera correcta. . .");
            for(int i = 0; i < herramientas.length; i++){ //imprimir herramientas
               System.out.println("Herramienta N°" + (i+1) + ": " + herramientas[i] + " | " + "$" + costo[i]);
            }
            System.out.print("\tEscriba lo que desea llevar segun el numero del producto\nLLevar: ");
            indiceProducto = (byte) Integer.parseInt(Input.next());           
         }
         productoCosto = costo[indiceProducto-1];
         indiceProducto--;
         System.out.print("Cuanto desea llevar: "); //cantidad de producto
         cantidadProductos = Integer.parseInt(Input.next());
         while(cantidadProductos < 1){ //error al insertar datos a la cantidad de productos
            System.out.println("No puede llevar " + cantidadProductos + " de " + herramientas[indiceProducto]);
            System.out.print("Cuanto desea llevar: ");
            cantidadProductos = Integer.parseInt(Input.next());
         }
         productoCosto *= cantidadProductos;
         dineroAux -= productoCosto;
         if(dineroAux < productoCosto){ //operacion de cantidad de productos y restar dinero
            System.out.println("\tNo queda suficiente dinero\n\t\tVuelva mas tarde");
            break;
         }else{
            dinero -= productoCosto;
         }
         System.out.println("Salir: 1: SI | 2: NO"); //salir
         opc = (byte) Integer.parseInt(Input.next());
         while(opc < 1 || opc > 2){ //error opciones SI o NO de salir del bucle
            System.out.println("\t\tNo ha seleccionado de manera correcta. . .");
            System.out.println("Salir: 1: SI | 2: NO");
            opc = (byte) Integer.parseInt(Input.next());
         }
         if(opc == 1){ //aceptar salir del bucle
            estadoCompra = false;
         }
      }
   }
   public static void Decoraciones(){ //menu opcion 3
      int costo[] = {4, 20, 30};
      String decoraciones[] = {"Jarron", "Mueble", "Planta de plastico"};     
      while(estadoCompra == true){
         for(int i = 0; i < decoraciones.length; i++){ //imprimir decoraciones
            System.out.println("Decoracion N°" + (i+1) + ": " + decoraciones[i] + " | " + "$" + costo[i]);
         }
         System.out.print("\tEscriba lo que desea llevar segun el numero del producto\nLLevar: "); //seleccionar producto
         indiceProducto = (byte) Integer.parseInt(Input.next());         
         while(indiceProducto < 1 || indiceProducto > 3){ //error al insertar datos
            System.out.println("\t\tNo ha seleccionado de manera correcta. . .");
            for(int i = 0; i < decoraciones.length; i++){ //imprimir decoraciones
               System.out.println("Decoracion N°" + (i+1) + ": " + decoraciones[i] + " | " + "$" + costo[i]);
            }
            System.out.print("\tEscriba lo que desea llevar segun el numero del producto\nLLevar: ");
            indiceProducto = (byte) Integer.parseInt(Input.next());           
         }
         productoCosto = costo[indiceProducto-1];
         indiceProducto--;
         System.out.print("Cuanto desea llevar: "); //cantidad de producto
         cantidadProductos = Integer.parseInt(Input.next());
         while(cantidadProductos < 1){ //error al insertar datos a la cantidad de productos
            System.out.println("No puede llevar " + cantidadProductos + " de " + decoraciones[indiceProducto]);
            System.out.print("Cuanto desea llevar: ");
            cantidadProductos = Integer.parseInt(Input.next());
         }
         productoCosto *= cantidadProductos;
         dineroAux -= productoCosto;
         if(dineroAux < productoCosto){ //operacion de cantidad de productos y restar dinero
            System.out.println("\tNo queda suficiente dinero\n\t\tVuelva mas tarde");
            break;
         }else{
            dinero -= productoCosto;
         }
         System.out.println("Salir: 1: SI | 2: NO"); //salir
         opc = (byte) Integer.parseInt(Input.next());
         while(opc < 1 || opc > 2){ //error opciones SI o NO de salir del bucle
            System.out.println("\t\tNo ha seleccionado de manera correcta. . .");
            System.out.println("Salir: 1: SI | 2: NO");
            opc = (byte) Integer.parseInt(Input.next());
         }
         if(opc == 1){ //aceptar salir del bucle
            estadoCompra = false;
         }
      }
   }
}

5
Buenas. Estoy utilizando el Thread.sleep() para parar la consola en una fracción de tiempo marcada en milisegundos. Tengo una duda, al escribir a secas "Thread.sleep(X)" me sale el siguiente error:

Código: [Seleccionar]
error: unreported exception InterruptedException; must be caught or declared to be thrown

Sé que al lado de la clase main hay que colocar lo siguiente:

Código: [Seleccionar]
public static void main(String[] args) throws InterruptedException

Pero, ¿por qué debe estar eso ahí?; investigue acerca de "throws", (resulta que existe "throw" y "throws"), y según lo que entendí, es algo para poder manejar errores en Java durante la ejecución de un programa, pero no logró relacionar estos conceptos, ¿qué está pasando?

6
Buenas, espero que se encuentren bien. Tengo una duda con un código, para ser más exactos, un algoritmo; en sí, quiero una "confirmación" de lo que pienso que pasa:

Código: [Seleccionar]
for(int j = 0; j < Array.length-1; j++){
   for(int i = 0; i < Array.length-1; i++){
      if (Array[i] > Array[i+1]){
      aux = Array[i];
      Array[i] = Array[i+1];
      Array[i+1] = aux;
   }
}

Al principio, lo hice con un solo bucle for(), pero vi que no funciona del todo, ya que me hace un "orden", pero no uno en donde se organicen de menor a mayor, entonces probé con otro bucle, y ahora si funciona, por lo que entiendo, es necesario tener for() anidados, es decir, dentro del bucle for(), hay otro, este hace un orden "superficial", el cual es perfeccionado por el que está afuera, ¿pero qué pasa realmente?

7
¡Muy buenas a todos!

Últimamente he estado buscando ejercicios para poder mejorar mi análisis y habilidades para programar, para busco páginas que me puedan ofrecer distintos ejercicios. En una de esas mismas, en la categoría de bucles, en un ejercicio dice lo siguiente:

Citar
Definir un array bidimensional para representar una agenda semanal, donde se contemplen los 7 días de la semana y las 24 horas de cada día. Utilizar bucles for anidados para inicializar la agenda a: "No tengo planes.". Añadir "planes" a la agenda y mostrar el resultado por pantalla.


Y esto fue lo que hice:

Código: [Seleccionar]
import java.util.Scanner;

class Agenda{
   public static void main(String args[]){
      int AgendaDatos[][] = new int[7][24], hora = 12, OP = 0, HorasColumnas = 0, DiasFilas = 0, IndiceDia = 0;
      String DiasSemana[] = new String[7], DiasDatos[] = new String[168], Formato = "A.M";
      DiasSemana[0] = "Lunes";
      DiasSemana[1] = "Martes";
      DiasSemana[2] = "Miercoles";
      DiasSemana[3] = "Jueves";
      DiasSemana[4] = "Viernes";
      DiasSemana[5] = "Sabado";
      DiasSemana[6] = "Domingo";
      boolean prog = true;
      Scanner InputInt = new Scanner(System.in);
      Scanner InputStr = new Scanner(System.in);
     
     
      for(int i = 0; i < 168; i++){
         DiasDatos[i] = "(Vacio)";
      }
      while(prog == true){
         System.out.println("\t\t\t--- Agenda ---");
         System.out.println("Que desea hacer: 1: Ver mi agenda | 2: Agregar algo a la agenda | 3: Salir");
         OP = InputInt.nextInt();
         while(OP < 1 || OP > 3){
            System.out.println("No ha seleccionado de manera correcta. . .");
            System.out.println("Que desea hacer: 1: Ver mi agenda | 2: Agregar algo a la agenda | 3: Salir");
            OP = InputInt.nextInt();
         }
         switch(OP){
            case 1: //mostrar agenda
               System.out.println("1: Lunes | 2: Martes | 3: Miercoles | 4: Jueves | 5: Viernes | 6: Sabado | 7: Domingo");
               System.out.print("Dia: ");
               IndiceDia = InputInt.nextInt();
               while(IndiceDia < 1 || IndiceDia > 7){
                  System.out.println("No ha seleccionado correctamente. . .");
                  System.out.println("1: Lunes | 2: Martes | 3: Miercoles | 4: Jueves | 5: Viernes | 6: Sabado | 7: Domingo");
                  System.out.print("Dia: ");
                  IndiceDia = InputInt.nextInt();
               }
               switch(IndiceDia){
                  case 1: //lunes
                  for(int j = 0; j < 24; j++){
                     System.out.println("El dia " + DiasSemana[IndiceDia-1] + " a las " + hora + " " + Formato + ": " + DiasDatos[j]);                       
                     hora++;
                     if (hora == 13){
                        hora = 1;
                     }
                     if (Formato.equals("A.M") && hora == 12){
                        Formato = "P.M";
                     }else if (Formato.equals("P.M") && hora == 12){
                        Formato = "A.M";
                     }
                  }
                  break;
                 
                  case 2: //martes
                  for(int j = 24; j < 48; j++){
                     System.out.println("El dia " + DiasSemana[IndiceDia-1] + " a las " + hora + " " + Formato + ": " + DiasDatos[j]);                       
                     hora++;
                     if (hora == 13){
                        hora = 1;
                     }
                     if (Formato.equals("A.M") && hora == 12){
                        Formato = "P.M";
                     }else if (Formato.equals("P.M") && hora == 12){
                        Formato = "A.M";
                     }                     
                  }
                  break;
                 
                  case 3: //miercoles
                  for(int j = 48; j < 72; j++){
                     System.out.println("El dia " + DiasSemana[IndiceDia-1] + " a las " + hora + " " + Formato + ": " + DiasDatos[j]);                       
                     hora++;
                     if (hora == 13){
                        hora = 1;
                     }
                     if (Formato.equals("A.M") && hora == 12){
                        Formato = "P.M";
                     }else if (Formato.equals("P.M") && hora == 12){
                        Formato = "A.M";
                     }
                  }
                  break;
                 
                  case 4: //jueves
                  for(int j = 72; j < 96; j++){
                     System.out.println("El dia " + DiasSemana[IndiceDia-1] + " a las " + hora + " " + Formato + ": " + DiasDatos[j]);                       
                     hora++;
                     if (hora == 13){
                        hora = 1;
                     }
                     if (Formato.equals("A.M") && hora == 12){
                        Formato = "P.M";
                     }else if (Formato.equals("P.M") && hora == 12){
                        Formato = "A.M";
                     }
                  }
                  break;
                                       
                  case 5: //viernes
                  for(int j = 96; j < 120; j++){
                        System.out.println("El dia " + DiasSemana[IndiceDia-1] + " a las " + hora + " " + Formato + ": " + DiasDatos[j]);                       
                        hora++;
                     if (hora == 13){
                        hora = 1;
                     }
                     if (Formato.equals("A.M") && hora == 12){
                        Formato = "P.M";
                     }else if (Formato.equals("P.M") && hora == 12){
                        Formato = "A.M";
                     }
                  }
                  break;
                 
                  case 6: //sabado
                  for(int j = 120; j < 144; j++){
                     System.out.println("El dia " + DiasSemana[IndiceDia-1] + " a las " + hora + " " + Formato + ": " + DiasDatos[j]);
                     hora++;
                     if (hora == 13){
                        hora = 1;
                     }
                     if (Formato.equals("A.M") && hora == 12){
                        Formato = "P.M";
                     }else if (Formato.equals("P.M") && hora == 12){
                        Formato = "A.M";
                     }
                  }
                  break;
                 
                  case 7: //domingo
                  for(int j = 144; j < 168; j++){
                     System.out.println("El dia " + DiasSemana[IndiceDia-1] + " a las " + hora + " " + Formato + ": " + DiasDatos[j]);                       
                     hora++;
                     if (hora == 13){
                        hora = 1;
                     }
                     if (Formato.equals("A.M") && hora == 12){
                        Formato = "P.M";
                     }else if (Formato.equals("P.M") && hora == 12){
                        Formato = "A.M";
                     }
                  }
                  break;
               }
            break;
           
            case 2: //agregar algo a la agenda
               System.out.println("1: Lunes | 2: Martes | 3: Miercoles | 4: Jueves | 5: Viernes | 6: Sabado | 7: Domingo");
               System.out.print("Dia: ");
               IndiceDia = InputInt.nextInt();
               while(IndiceDia < 1 || IndiceDia > 7){
                  System.out.println("No ha seleccionado de manera correcta. . .");
                  System.out.println("1: Lunes | 2: Martes | 3: Miercoles | 4: Jueves | 5: Viernes | 6: Sabado | 7: Domingo");
                  System.out.print("Dia: ");
                  IndiceDia = InputInt.nextInt();
               }
               switch(IndiceDia){
                  case 1: //lunes
                  for(int j = 0; j < 24; j++){
                     System.out.println("El dia " + DiasSemana[IndiceDia-1] + " a las " + hora + " " + Formato + ": " + DiasDatos[j]);
                     DiasDatos[j] = InputStr.nextLine();
                     if (DiasDatos[j].equals("")){
                        DiasDatos[j] = "(Vacio)";
                     }
                     hora++;
                     if (hora == 13){
                        hora = 1;
                     }
                     if (Formato.equals("A.M") && hora == 12){
                        Formato = "P.M";
                     }else if (Formato.equals("P.M") && hora == 12){
                        Formato = "A.M";
                     }
                  }
                  break;
                 
                  case 2: //martes
                  for(int j = 24; j < 48; j++){
                     System.out.println("El dia " + DiasSemana[IndiceDia-1] + " a las " + hora + " " + Formato + ": " + DiasDatos[j]);                       
                     DiasDatos[j] = InputStr.nextLine();
                     if (DiasDatos[j].equals("")){
                        DiasDatos[j] = "(Vacio)";
                     }
                     hora++;
                     if (hora == 13){
                        hora = 1;
                     }
                     if (Formato.equals("A.M") && hora == 12){
                        Formato = "P.M";
                     }else if (Formato.equals("P.M") && hora == 12){
                        Formato = "A.M";
                     }                     
                  }
                  break;
                 
                  case 3: //miercoles
                  for(int j = 48; j < 72; j++){
                     System.out.println("El dia " + DiasSemana[IndiceDia-1] + " a las " + hora + " " + Formato + ": " + DiasDatos[j]);
                     DiasDatos[j] = InputStr.nextLine();
                     if (DiasDatos[j].equals("")){
                        DiasDatos[j] = "(Vacio)";
                     }
                     hora++;
                     if (hora == 13){
                        hora = 1;
                     }
                     if (Formato.equals("A.M") && hora == 12){
                        Formato = "P.M";
                     }else if (Formato.equals("P.M") && hora == 12){
                        Formato = "A.M";
                     }
                  }
                  break;
                 
                  case 4: //jueves
                  for(int j = 72; j < 96; j++){
                     System.out.println("El dia " + DiasSemana[IndiceDia-1] + " a las " + hora + " " + Formato + ": " + DiasDatos[j]);                       
                     DiasDatos[j] = InputStr.nextLine();
                     if (DiasDatos[j].equals("")){
                        DiasDatos[j] = "(Vacio)";
                     }
                     hora++;
                     if (hora == 13){
                        hora = 1;
                     }
                     if (Formato.equals("A.M") && hora == 12){
                        Formato = "P.M";
                     }else if (Formato.equals("P.M") && hora == 12){
                        Formato = "A.M";
                     }
                  }
                  break;
                                       
                  case 5: //viernes
                  for(int j = 96; j < 120; j++){
                     System.out.println("El dia " + DiasSemana[IndiceDia-1] + " a las " + hora + " " + Formato + ": " + DiasDatos[j]);
                     DiasDatos[j] = InputStr.nextLine();
                     if (DiasDatos[j].equals("")){
                        DiasDatos[j] = "(Vacio)";
                     }
                        hora++;
                     if (hora == 13){
                        hora = 1;
                     }
                     if (Formato.equals("A.M") && hora == 12){
                        Formato = "P.M";
                     }else if (Formato.equals("P.M") && hora == 12){
                        Formato = "A.M";
                     }
                  }
                  break;
                 
                  case 6: //sabado
                  for(int j = 120; j < 144; j++){
                     System.out.println("El dia " + DiasSemana[IndiceDia-1] + " a las " + hora + " " + Formato + ": " + DiasDatos[j]);
                     DiasDatos[j] = InputStr.nextLine();
                     if (DiasDatos[j].equals("")){
                        DiasDatos[j] = "(Vacio)";
                     }
                     hora++;
                     if (hora == 13){
                        hora = 1;
                     }
                     if (Formato.equals("A.M") && hora == 12){
                        Formato = "P.M";
                     }else if (Formato.equals("P.M") && hora == 12){
                        Formato = "A.M";
                     }
                  }
                  break;
                 
                  case 7: //domingo
                  for(int j = 144; j < 168; j++){
                     System.out.println("El dia " + DiasSemana[IndiceDia-1] + " a las " + hora + " " + Formato + ": " + DiasDatos[j]);
                     DiasDatos[j] = InputStr.nextLine();
                     hora++;
                     if (DiasDatos[j].equals("")){
                        DiasDatos[j] = "(Vacio)";
                     }
                     if (hora == 13){
                        hora = 1;
                     }
                     if (Formato.equals("A.M") && hora == 12){
                        Formato = "P.M";
                     }else if (Formato.equals("P.M") && hora == 12){
                        Formato = "A.M";
                     }
                  }
                  break;
               }               
            break;
               
            case 3: //salir
               prog = false;
               System.out.println("Usted ha salido de su agenda. . .");
            break;           
         }
      }
   }
}
¿Cómo creen que está el código?, ¿necesita mejorar en algo?, ¿recomendacioens?
Además, ¿cómo lo harían ustedes?
(En caso de que quieran saber la página en donde estoy actualmente trabajando con ejercicios Java, es esta: https://www.arkaitzgarro.com/java/capitulo-20.html.)

8
Buenas, espero que se encuentren bien. Me he estado preocupando por mantener un código más limpio y optimizado utilizando de momento la "estructura" de programar de arriba hacía abajo, sin utilizar el POO de Java.

De antemano decir que soy un "principiante", así que lamento el posible derrame de sangre en sus ojos.

Código: [Seleccionar]
import java.util.Scanner;
import java.util.Random;

public class Programa_empresa{
   public static void main(String args[]){
      Random CodeAlfaNumRand = new Random();
      Scanner Input = new Scanner(System.in);
      int ArticuloLitro[] = new int[3], ValorArticulo[] = new int[3], CodeAlfaNumArray = 0, Amplifiart = 0, OPc_1 = 0, ContadorBucle = 0, FacturasMayores = 0;
      ArticuloLitro[0] = 5; //5 Litros
      ArticuloLitro[1] = 15; //15 Litros
      ArticuloLitro[2] = 25; //25 Litros
      ValorArticulo[0] = 150; //valor articulos
      ValorArticulo[1] = 300;
      ValorArticulo[2] = 425;
      //caracteres para el codigo del articulo
      char CodeAlfaNumChar[] = new char[12];
      CodeAlfaNumChar[0] = 'A';
      CodeAlfaNumChar[1] = 'B';
      CodeAlfaNumChar[2] = 'C';
      CodeAlfaNumChar[3] = 'D';
      CodeAlfaNumChar[4] = 'E';
      CodeAlfaNumChar[5] = 'F';
      CodeAlfaNumChar[6] = 'G';
      CodeAlfaNumChar[7] = '0';
      CodeAlfaNumChar[8] = '1';
      CodeAlfaNumChar[9] = '2';
      CodeAlfaNumChar[10] = '3';
      CodeAlfaNumChar[11] = '4';
      char CodeAlfaNum[] = new char[6]; //cantidad de elementos del codigo alfanumerico     
     
      while(ContadorBucle <= 5){
         //declarar el codigo alfanumerico
         for(int i = 0; i < CodeAlfaNum.length; i++){
            CodeAlfaNumArray = CodeAlfaNumRand.nextInt(12);
            CodeAlfaNum[i] = CodeAlfaNumChar[CodeAlfaNumArray];
         }
         System.out.println("\t--- FARMACIA ---\nCual producto desea llevar:");
         System.out.println("1: Desinfectante " + ArticuloLitro[0] + "L | Valor: " + ValorArticulo[0]);
         System.out.println("2: Desinfectante " + ArticuloLitro[1] + "L | Valor: " + ValorArticulo[1]);
         System.out.println("3: Desinfectante " + ArticuloLitro[2] + "L | Valor: " + ValorArticulo[2]);
         OPc_1 = Input.nextInt();
         //si no selecciona correctamente
         while(OPc_1 < 1 || OPc_1 > 3){
            System.out.println("No ha seleccionado de manera correcta. . .");
            System.out.println("1: Desinfectante " + ArticuloLitro[0] + "L | Valor: " + ValorArticulo[0]);
            System.out.println("2: Desinfectante " + ArticuloLitro[1] + "L | Valor: " + ValorArticulo[1]);
            System.out.println("3: Desinfectante " + ArticuloLitro[2] + "L | Valor: " + ValorArticulo[2]);
            OPc_1 = Input.nextInt();
         }
         switch(OPc_1){
            case 1: //5 Litros
               System.out.print("Cuantos desea llevar: ");
               Amplifiart = Input.nextInt();           
               ValorArticulo[0] *= Amplifiart; //multiplicar el preico del producto
               ArticuloLitro[0] *= Amplifiart; //multiplicar cuantos litros hay en total
               System.out.println("\t--- FACTURA ---");
               System.out.print("Codigo del articulo: ");
                  for(int i = 0; i < CodeAlfaNum.length; i++){
                     System.out.print(CodeAlfaNum[i]);
                  }
               System.out.println("\nPrecio total: " + ValorArticulo[0]);
               System.out.println("Cantidad de litros comprados: " + ArticuloLitro[0]);
               if (ValorArticulo[0] > 600){
                  FacturasMayores++;               
               }
            break;
           
            case 2: //15 Litros
               System.out.print("Cuantos desea llevar: ");
               Amplifiart = Input.nextInt();           
               ValorArticulo[1] *= Amplifiart; //multiplicar el preico del producto
               ArticuloLitro[1] *= Amplifiart; //multiplicar cuantos litros hay en total
               System.out.println("\t--- FACTURA ---");
               System.out.print("Codigo del articulo: ");
                  for(int i = 0; i < CodeAlfaNum.length; i++){
                     System.out.print(CodeAlfaNum[i]);
                  }
               System.out.println("\nPrecio total: " + ValorArticulo[1]);
               System.out.println("Cantidad de litros comprados: " + ArticuloLitro[1]);
               if (ValorArticulo[1] > 600){
                  FacturasMayores++;               
               }           
            break;
           
            case 3: //25 Litros
               System.out.print("Cuantos desea llevar: ");
               Amplifiart = Input.nextInt();           
               ValorArticulo[2] *= Amplifiart; //multiplicar el preico del producto
               ArticuloLitro[2] *= Amplifiart; //multiplicar cuantos litros hay en total
               System.out.println("\t--- FACTURA ---");
               System.out.print("Codigo del articulo: ");
                  for(int i = 0; i < CodeAlfaNum.length; i++){
                     System.out.print(CodeAlfaNum[2]);
                  }
               System.out.println("\nPrecio total: " + ValorArticulo[2]);
               System.out.println("Cantidad de litros comprados: " + ArticuloLitro[2]);
               if (ValorArticulo[2] > 600){
                  FacturasMayores++;               
               }           
            break;           
         }
         ContadorBucle++;
      }
      if (FacturasMayores > 1){
         System.out.println("Hay " + FacturasMayores + " facturas que pasan de los $600");
      }else{
         System.out.println("Hay " + FacturasMayores + " factura que pasa de los $600");
      }
   }
}

9
Buenas, espero que se encuentren bien.

Como lo dice en el asunto, necesito un poco de orientación en cuanto a un código que me ha costado bastante ver como funciona e igualmente a programarlo:

Código: [Seleccionar]
if (Year_2 > Year || Year > Year_2){
    DateMinus = (Day - Day_2) - ((Month - Month_2) + 30) - (((Year - Year_2) * 365));
    if (DateMinus < 0){
        DateMinus *= -1;
    }
}else if (Year == Year_2){
    DateMinus = (Day - Day_2) - ((Month - Month_2) * 30);
}

Algo raro que he notado es que aveces se pasa de la fecha por unos días (16, por ejemplo) o algunas veces faltan, por lo que he visto, suele pasar cuando son fechas grandes en  momentos donde faltan días, y no he notado un "patrón" claro en el caso de que se pasen días.

Una cosa es que este es un ejercicio de programación que estoy siguiendo, y el anunciado aclara que se debe de suponer que todos los meses tienen 30 días, soy consiente de eso, pero no creo que esa sea la razón del porqué falten 15 días o incluso se pase por casi 34 días. Lamentablemente, me vi forzado a ver la respuesta del ejercicio, ya que no comprendía que pasaba, y según la fórmula, es esta:

Código: [Seleccionar]
total_dias = dia2-dia1 + 30*(mes2-mes1)+365*(año2-año1);
Por la gran decepción al ver la respuesta, y no verme capaz de hacerlo por mi parte, quise "crear" una nueva fórmula con base en lo que vi.

10
Buenas, espero que se encuentren bien.

Necesito ayuda para la comprensión de un código, realmente "entiendo" (nótese comillas) lo que está pasando... Pero no del todo:

Código: [Seleccionar]
     
//HorasTotrales es un objeto Scanner
Semanas = HorasTotales / 168;
Dias = HorasTotales%168 / 24;
Horas = HorasTotales%24;

¿Qué está pasando?, ¿por qué se usa el "%"? (¿se usa el resto para reducir valores para lo que son los días y horas? No entiendo), agradecería mucho si es que también me lo podrían explicar con detalle.

11
Buenas, espero que se encuentren bien.
(Detalles sobre el programa, por si necesitan esa información)
En mi último proyecto, intenté programar un registro de usuario, el trabajo de este es simple, después del registro, el usuario tiene que volver a colocar sus datos (Nombre y contraseña), para que después el programa los compare, en el caso de que los datos coincidan, se imprimirá un mensaje en la pantalla diciendo que el "registro" de la cuenta se haya creado de manera satisfactoria, acompañado con un mensaje con el nombre del usuario, de lo contrario, el programa preguntará si quieres crear una nueva cuenta, en el caso de que no, pues cierra el programa, en el caso de que sí, se activará un bolean.
(Aquí mi duda)
Bien, y para esto utilizaba obviamente una clase Scanner, para poder introducir datos por teclado, y todas las variables eran dependientes de solo un objeto Scanner (llamado "Input").
Todas estas acciones, dependían de una booleana, ya que con esta inicializaba un bucle do-while, y he aquí mi duda, al momento de que el programa iniciará todo iba normal, pero al momento de repetir el proceso mediante el do-while, por alguna razón, en la parte en donde se tenía que colocar un nombre, se saltaba, quedando un espacio en vacío, no tenía ni idea del porqué pasaba (incluso creí que era bug del IDE), pero resultaba que al momento de introducir el nombre del usuario, la variable String estaba ocupada, incluso si en algún momento del código especificaba  sobre dejarla vacía (Usuario = "") no funcionaba, pero en cuanto cambie de objeto Scanner se soluciono, ¿por qué pasa esto?, ¿qué me recomiendan para utilizar mejor la clase Scanner?

12
Buenas, espero que se encuentren bien.

Soy relativamente nuevo en programación, y el lenguaje que estoy aprendiendo es Java, y este es el primero que me lo estoy tomando enserio en el estudio.

Usualmente, me suelo poner en práctica teorías, simplemente repasar o mejorar un proyecto, y en este caso, intenté de hacer un sistema de banco, con las opciones: Ver dinero; Sacar dinero; Depositar; Salir.

Para no tener que volver a compilar el proyecto (y además para simular que estoy programando un banco...) hice un bucle para mantener el usuario una vez termine alguna acción, vuelva desde el principio (claro, una vez no elija la opción de "Salir"), pero me quede con la duda si es que realmente debería ser así, por ejemplo:

Código: [Seleccionar]
while(Variable == true){
    //hacer X acción
    if (X == true){
        Variable = false;
    }
}
De antemano, muchas gracias.
(Si quieren, puedo mostrar el código de mi "banco" también.)

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".