сортировка строк в файле по N-ному слову C#
Добавлено: 26 дек 2009, 19:47
Привет, помогите написать следующую программу:
Исходный текстовый файл содержащий табличные данные (разделители-пробелы).Отсортировать по значениям N-ного столбца методом вставки по возрастанию(принцип сравнения-лексико-орфографический(как в словаре))
вот тут сам пытался
Исходный текстовый файл содержащий табличные данные (разделители-пробелы).Отсортировать по значениям N-ного столбца методом вставки по возрастанию(принцип сравнения-лексико-орфографический(как в словаре))
вот тут сам пытался
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
class SortNTower
{
public string SearchWord(int num, string str)//поиск n-ного элемента в строке
{
int nCount = 0;
int i;
string str1 = "";
bool WasSpace = true;
bool NotSpace = false;
int j = 0;
int u = 1;
for (i = 0; i < str.Length; i++)
{
if (str[i] != ' ' && str[i] != '\t')
{
NotSpace = true;
if (WasSpace)
{
WasSpace = false;
nCount++;
if (num == nCount)
{
j = i;
if (i == str.Length - 1)
str1 = str.Substring(j);
}
}
else
{
if (nCount == num)
{
u++;
if (i == str.Length - 1)
str1 = str.Substring(j, u);
}
else
continue;
}
}
else
{
WasSpace = true;
if (NotSpace)
{
NotSpace = false;
if (nCount == num)
{
str1 = str.Substring(j, u);
break;
}
else continue;
}
else
continue;
}
}
return str1;
}
public bool sravnenie(string strX, string str2)
{
int iLen = 0;
bool menshe=false;
int i;
if (strX.Length > str2.Length)
iLen = str2.Length;
else
iLen = strX.Length;
for (i = 0; i < iLen; i++)
{
if (strX[i] < str2[i])
menshe = true;
else
menshe = false;
}
return menshe;
}
public void ShowFile()//показ файла
{
int i = 0;
StreamReader sr = File.OpenText(@"F:\data.txt"); //открываем фаил
string s;
//int nCount = 0;
s = sr.ReadLine(); //читается первая строка из фаила. Если фаил пустои то s = null
while (s != null)
{
Console.WriteLine(s);
s = sr.ReadLine();
i++;
}
// sr.Close();
}
public int AmountOfStr()
{
int i = 0;
StreamReader sr = File.OpenText(@"F:\data.txt"); //открываем фаил
string s;
//int nCount = 0;
s = sr.ReadLine(); //читается первая строка из фаила. Если фаил пустои то s = null
while (s != null)
{
s = sr.ReadLine();
i++;
}
return i;
}//подсчёт количества строк в файле
}
namespace _privet
{
class Program
{
static void Main(string[] args)
{
SortNTower now = new SortNTower();
Console.WriteLine("Исходный файл: ");
now.ShowFile();
Console.WriteLine("Введите номер столбца, по которому отсортировать файл: ");
int iStr = now.AmountOfStr();
Console.WriteLine("Количество строк в файле = "+iStr);
int N=int.Parse(Console.ReadLine());
int i=0;
string strX;//
string str2;
StreamReader sr = File.OpenText(@"F:\data.txt"); //открываем файл
string X;
X= sr.ReadLine();
strX = now.SearchWord(N, X);
while (X!= null)
{
X = sr.ReadLine();
i++;
}
Console.WriteLine(strX);
Console.ReadLine();
}
}
}