Desde hace tiempo en este sobre cálculo del volumenes de tubos para agua, al escribir valores, debe usar por ejemplo la coma. Cada dato introducido también se escucha la voz en Windows, a si que a subir el altavoz del PC.
0,05
Y no el punto como indica abajo haciendo de coma.
0.05
Para hacer los cálculos bien, no hay que introducir un punto, solo la coma. Por comodidad y no confundir a la gente que use este programa, quiero hacer de alguna manera que si pulsas el punto, se convierta automáticamente en la coma.
¿Es posible hacerlo?
No se me ocurre como hacer estas cosas.
Dejo el código completo.
Código C#:
Código
using System; using System.Speech.Recognition; // No olvidar. Micro. using System.Speech.Synthesis; // No olvidar. Altavoz. // No olvidar añadir en "Referencias" Speech en el "Explorador de soluciones". namespace Calculo_cilindo_voz_Consola_03 { class Program { static void Main(string[] args) { #region Configuración ventana. // Título de la ventana. Console.Title = "Cálculo litros de un depósito - By Meta. Electrónica PIC"; // Tamaño de la ventana, x, y. // Tamaño de la ventana, x, y. const int anchoX = 60; const int altoY = 16; Console.SetWindowSize(anchoX, altoY); // Color de fondo. Console.BackgroundColor = ConsoleColor.Black; // Color de las letras. Console.ForegroundColor = ConsoleColor.Gray; // Limpiar pantalla y dejarlo todo en color de fondo. Console.Clear(); // Visible el cursor. Console.CursorVisible = false; #endregion #region Variables. // Variables. const double Pi = 3.14; float PI = Convert.ToSingle(Pi); float radio, altura, volumen, litros, nivelAgua, resultadoPorcentaje, resultadoLitros, volumenLitros, mitadBarra, cantidadTubosLitros, totalLitros; float cantidadTubos; #endregion do { try { // Inicializar una nueva instancia de SpeechSynthesizer. { #region Introducción de datos en la pantalla. // Configure la salida de audio. altavoz.SetOutputToDefaultAudioDevice(); // Velocidad de la voz. altavoz.Rate = -2; // Valores entre -10 a 10. // Volumen de la voz. altavoz.Volume = 100; // Valores entre 0 y 100. // Limpiar pantalla. Console.Clear(); // Cursor visible. Console.CursorVisible = true; // Introducción de datos. Console.Write("Introduce el radio en m.: "); altavoz.Speak("Introduce el radio en metros."); radio = float.Parse(Console.ReadLine()); Console.Write("Introduce la altura del tubo en m.: "); altavoz.Speak("Introduce la altura del tubo en metros."); altura = float.Parse(Console.ReadLine()); Console.Write("Introduce altura del agua. Máximo es de {0} m.: ", altura); altavoz.Speak("Introduce altura del agua. Máximo es de " + altura + "metros."); nivelAgua = float.Parse(Console.ReadLine()); Console.Write("Introduce cantidad de tubos: "); altavoz.Speak("Introduce cantidad de tubos."); cantidadTubos = int.Parse(Console.ReadLine()); #endregion #region Cálculos. // Cálculo volumen. volumen = PI * (radio * radio) * altura; // Cálculo litros. litros = volumen * 1000; // Cálculo porcentaje en % del litro de agua. resultadoPorcentaje = nivelAgua * (100 / altura); // Cálculo litros de agua. volumenLitros = PI * (radio * radio) * nivelAgua; resultadoLitros = volumenLitros * 1000; // Cálculo litros por cantidad de tubos cantidadTubosLitros = cantidadTubos * resultadoLitros; // Cálculo cantidad de litros con total de tubos. totalLitros = litros * cantidadTubos; #endregion #region Dibujado barra de progreso. // Posición. Console.SetCursorPosition(0, 4); // Dibujo de la barra. Console.WriteLine(); Console.WriteLine("0 % 50 % 100 %"); Console.WriteLine("┌────────────────────────┬───────────────────────┐"); // Mitad de la barra para que no sea muy grande en la pantalla. mitadBarra = resultadoPorcentaje / 2; if (resultadoPorcentaje <= 15) { Console.ForegroundColor = ConsoleColor.Red; } else if (resultadoPorcentaje <= 40) { Console.ForegroundColor = ConsoleColor.Yellow; } else if (resultadoPorcentaje <= 100) { Console.ForegroundColor = ConsoleColor.Green; } if (mitadBarra > 50) { mitadBarra = 50; } Console.SetCursorPosition(0, 7); // Rellenar la barra. for (int i = 1; i <= mitadBarra; i++) { Console.Write("█"); } Console.ForegroundColor = ConsoleColor.Gray; // Si llega mayor a 100 se pone el # en rojo. if (resultadoPorcentaje > 100) { Console.ForegroundColor = ConsoleColor.Red; Console.Write("#"); Console.ForegroundColor = ConsoleColor.Gray; } #endregion #region Mostrar textos en pantalla. // Cursor invisible. Console.CursorVisible = false; // Pisición del texto a mostrar. Console.SetCursorPosition(0, 9); // Muestra porcentaje del depósito. Console.ForegroundColor = ConsoleColor.Gray; Console.Write("\nPorcentaje: "); Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine(resultadoPorcentaje.ToString("N2") + " %."); altavoz.Speak("Cantidad de agua que hay en el depósito es de " + //resultadoPorcentaje.ToString("N2") + "%."); resultadoPorcentaje + "%."); // Muestra cantidad de agua que hay actualmente y el total. Console.ForegroundColor = ConsoleColor.Gray; Console.Write("\nLitros de agua: "); Console.ForegroundColor = ConsoleColor.Cyan; Console.Write(resultadoLitros.ToString("N2")); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine(" / " + litros.ToString("N2") + " L. total de un tubo."); altavoz.Speak("Cantidad de litros de agua en un tubo de " + resultadoLitros.ToString("N2") + "de " + litros.ToString("N2") + " litros total de un tubo."); // Cantidad de tubos sin contar la base conectada, solo tubos independiente. Console.ForegroundColor = ConsoleColor.Gray; Console.Write("\nCantidad de Litros total por " + cantidadTubos + " tubos: "); Console.ForegroundColor = ConsoleColor.Cyan; Console.Write(cantidadTubosLitros.ToString("N2")); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine(" / " + totalLitros.ToString("N2") + " L."); altavoz.Speak("Cantidad de litros en total por " + cantidadTubos.ToString("N2") + " tubos: " + cantidadTubosLitros.ToString("N2") + " de " + totalLitros.ToString("N2") + " litros."); #endregion } } catch (FormatException) { Console.BackgroundColor = ConsoleColor.Gray; Console.ForegroundColor = ConsoleColor.Red; Console.Clear(); Console.SetCursorPosition(8, 5); Console.Write(@"La cadena de entrada no tiene el formato correcto. Solo debes introducir números y comas."); Console.CursorVisible = false; Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.Gray; } // Pulse cualquier tecla para continuar. Console.ReadKey(); } while (true); } } }
Saludos.