Pràctica 12 en C#: lectura, escriptura i estadístiques de vectors d'enters

Matemáticas3,41 KB

Pràctica 12: Lectura i escriptura de fitxers amb vectors en C#

Aquesta pràctica implementa una classe anomenada Practica12 que llegeix un fitxer de text amb valors enters, els emmagatzema en un vector, calcula el màxim, el mínim, la suma i la mitjana, i escriu els resultats en un fitxer de sortida.

Mètodes principals

  • ContarLineas(string path): compta el nombre de línies d'un fitxer.
  • LeerVectorEntero(string path): llegeix cada línia del fitxer i la converteix en un enter dins d'un vector.
  • AñadirAFichero(string path, string texto): afegeix text al final d'un fitxer.
  • StringArray(int[] v): retorna una representació en text del vector.
  • MaxMinSuma(int[] v, out int max, out int min, out int suma): calcula el màxim, el mínim i la suma del vector.
  • Main(): demana els noms dels fitxers d'entrada i sortida, executa els càlculs i mostra i desa els resultats.

Codi

class Practica12
{
    static int ContarLineas(string path)
    {
        StreamReader sr = new StreamReader(path);
        int contador = 0;
        while (sr.ReadLine() != null) contador++;
        sr.Close();
        return contador;
    }

    static int[] LeerVectorEntero(string path)
    {
        int[] v = new int[ContarLineas(path)];
        StreamReader sr = new StreamReader(path);
        int i = 0;
        string input;
        while ((input = sr.ReadLine()) != null)
        {
            v[i] = Convert.ToInt32(input);
            i++;
        }
        sr.Close();
        return v;
    }

    static void AñadirAFichero(string path, string texto)
    {
        StreamWriter sw = new StreamWriter(path, true);
        sw.WriteLine("\r\n{0}", texto);
        sw.Close();
    }

    static string StringArray(int[] v)
    {
        string vector = "[ ";
        for (int i = 0; i < v.Length; i++)
        {
            vector += string.Format("{0} ", v[i]);
        }
        vector += "]";
        return vector;
    }

    static void MaxMinSuma(int[] v, out int max, out int min, out int suma)
    {
        suma = 0;
        max = v[0];
        min = v[0];
        for (int i = 0; i < v.Length; i++)
        {
            suma += v[i];
            if (v[i] > max) max = v[i];
            else if (v[i] < min) min = v[i];
        }
    }

    static void Main()
    {
        string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
        string carpeta = desktop + @"\MisDatos\";
        Console.Write("Nombre del fichero de entrada? ");
        string entrada = Console.ReadLine();
        Console.Write("Nombre del fichero de salida? ");
        string salida = Console.ReadLine();
        int[] vector1 = LeerVectorEntero(carpeta + entrada);
        int suma, maximo, minimo;
        MaxMinSuma(vector1, out maximo, out minimo, out suma);
        double media = Convert.ToDouble(suma) / vector1.Length;
        Console.WriteLine(StringArray(vector1));
        Console.WriteLine("suma= {0} media= {1:F2} maximo= {2} minimo= {3}", suma, media, maximo, minimo);
        string pathSalida = carpeta + salida;
        AñadirAFichero(pathSalida, StringArray(vector1));
        AñadirAFichero(pathSalida, string.Format("suma= {0} media= {1:F2} maximo= {2} minimo= {3}", suma, media, maximo, minimo));
        Console.ReadLine();
    }
}

Descargar

PDF Word HTML