Pràctica 17 de C#: Gestió de Vectors i Fitxers
Pràctica 17: Manipulació de Vectors i Fitxers en C#
using System;
using System.IO;
class Practica17
{
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 label, int[] v)
{
StreamWriter sw = new StreamWriter(path, true);
sw.WriteLine("\r\n{0}: {1}", label, StringVector(v));
sw.Close();
}
static string StringVector(int[] v)
{
string vector = "[ ";
for (int i = 0; i < v.Length; i++)
{
vector += string.Format("{0} ", v[i]);
}
vector += "]";
return vector;
}
static bool Existe(int[] v, int x)
{
for (int i = 0; i < v.Length; i++)
{
if (v[i] == x) return true;
}
return false;
}
static int[] Interseccion(int[] v1, int[] v2)
{
int[] vaux = new int[v1.Length];
int k = 0;
for (int i = 0; i < v1.Length; i++)
{
if (Existe(v2, v1[i]))
{
vaux[k++] = v1[i];
}
}
int[] v3 = new int[k];
for (int i = 0; i < k; i++) v3[i] = vaux[i];
return v3;
}
static void Main()
{
string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
string carpeta = desktop + @"\MisDatos\";
string fileVector1 = @"vector1.txt";
string fileVector2 = @"vector2.txt";
string fileSalida = @"salida1.txt";
string pathSalida = carpeta + fileSalida; int[] vector1 = LeerVectorEntero(carpeta + fileVector1);
int[] vector2 = LeerVectorEntero(carpeta + fileVector2); int[] vector3 = Interseccion(vector1, vector2); Console.WriteLine("vector v1: {0}", StringVector(vector1));
Console.WriteLine("Elementos comunes con:");
Console.WriteLine("vector v2: {0}", StringVector(vector2));
Console.WriteLine(" = ");
Console.WriteLine("vector v3: {0}", StringVector(vector3));
AñadirAFichero(pathSalida,
"vector1: ", vector1);
AñadirAFichero(pathSalida, "vector2: ", vector2);
AñadirAFichero(pathSalida, "vector3: ", vector3); Console.ReadLine();
}
}