ho fatto un compito per casa, ecco la dichiarazione del problema:C# file di I/O Efficienza
Il vostro programma dovrebbe funzionare come segue:
- chiedere all'utente di dare un nome di file. Ottieni il nome del file e salvalo.
- Apre il file.
- Dal file leggere una temperatura e una velocità del vento. Entrambi i valori devono essere memorizzati in variabili dichiarate doppie. Il file è un file di testo. Ogni riga del file contiene una temperatura e un valore della velocità del vento.
calcolare il fattore wind chill utilizzando un metodo programmatore scritta, e visualizzare il risultato nella forma:
Per T = temperatura da file e v = velocità del vento da file vento indice freddo = risultato calcolato gradi Fahrenheit .
Mostra tutti i numeri con due cifre dopo il punto decimale. (Ricorda: nessun numero magico!)
Ripetere questi passaggi finché non si incontra la fine del file.
ho completato l'incarico, il mio codice è al di sotto, mi stavo chiedendo se ci fosse un modo per renderlo più efficiente, o se ci sono alcuni modi diversi e creativi per ottenere questo problema, ho già girato questo e ottenuto 50/50, ma sono solo curioso di sapere come alcuni di voi programmatori avanzati e qualificati si avvicinerebbero a questo problema.
using System;
using System.IO;
class Program
{
// declare constants to use in wind chill factor equation - no magic numbers
const double FIRST_EQUATION_NUMBER = 35.74;
const double SECOND_EQUATION_NUMBER = 0.6215;
const double THIRD_EQUATION_NUMBER = 35.75;
const double FOURTH_EQUATION_NUMBER = 0.4275;
const double EQUATION_EXPONENT = 0.16;
const int DEGREE_SYMBOL_NUMBER = 176;
static void Main()
{
// declare and initialize some variables
string filePath = "";
string line = "";
double temperature = 0.0;
double windSpeed = 0.0;
double windChillFactor = 0.0;
char degreeSymbol = (char)DEGREE_SYMBOL_NUMBER;
// ask user for a file path
Console.Write("Please enter a valid file path: ");
filePath = Console.ReadLine();
// create a new instance of the StreamReader class
StreamReader windChillDoc = new StreamReader(@filePath);
// start the read loop
do
{
// read in a line and save it as a string variable
line = windChillDoc.ReadLine();
// is resulting string empty? If not, continue execution
if (line != null)
{
string[] values = line.Split();
temperature = double.Parse(values[0]);
windSpeed = double.Parse(values[1]);
windChillFactor = WindChillCalc(temperature, windSpeed);
Console.WriteLine("\nFor a temperature {0:f2} F{1}", temperature, degreeSymbol);
Console.WriteLine("and a wind velocity {0:f2}mph", windSpeed);
Console.WriteLine("The wind chill factor = {0:f2}{1}\n", windChillFactor, degreeSymbol);
}
} while (line != null);
windChillDoc.Close();
Console.WriteLine("\nReached the end of the file, press enter to exit this program");
Console.ReadLine();
}//End Main()
/// <summary>
/// The WindChillCalc Method
/// Evaluates a wind chill factor at a given temperature and windspeed
/// </summary>
/// <param name="temperature">A given temperature</param>
/// <param name="ws">A given windspeed</param>
/// <returns>The calculated wind chill factor, as a double</returns>
static double WindChillCalc(double temperature, double ws)
{
double wci = 0.0;
wci = FIRST_EQUATION_NUMBER + (SECOND_EQUATION_NUMBER * temperature) - (THIRD_EQUATION_NUMBER * (Math.Pow(ws, EQUATION_EXPONENT))) + (FOURTH_EQUATION_NUMBER * temperature * (Math.Pow(ws, EQUATION_EXPONENT)));
return wci;
}
}//End class Program
Sentiti libero di dirmi cosa ne pensi.
Quando si ha una funzione che restituisce un risultato calcolato in base a un'equazione impostata, è utile avere l'equazione scritta nel riepilogo della funzione. –