Перевод с C++ на C#. Вывод текста в колонках
Формулировка задачи:
Помогите пожалуйста. Код написал на плюсах, не знаком с шарпом, учу, но пока не достаточно знаний.
Условие задачи - прочитать текст из файла, разделить на две колонны по 50 строк и каждый раз на новую страницу отправлять каждые 50 строк. Кстати, если можно подравняйте, пожалуйста, слова.. Ибо получается примерно так:
pervoe slovo
dva 4toto
Пробовал переводчики, в них нет такого понятия как fstream и т.д., да и многовато разного...
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <iterator>
#include <locale.h>
#include <cstdlib>
using namespace std;
const char fnamein[]="f.doc";
int main()
{
setlocale(LC_ALL,"Rus");
size_t count=0; //Число символов в файле
char S; //для подсчета символов
freopen("f1.txt","w",stdout);
/*Просто считаем число символов*/
ifstream f(fnamein);
while (!f.eof())
{
f.get(S);
count++;
}
f.close();
/*Добавляем текст в переменную*/
char *S2=new char [count]; //Выделяем память по определенному числу символов
for (int i=0;i<count;i++) S2[i]=NULL; //Очищаем строку от хлама
ifstream f2(fnamein); //создаем поток для работы с файлом
int i=0; //курсор на текущий символ (как номер буквы в слове)
while (!f2.eof()) //Проходим по файлу
{
f2.get(S2[i]); //Записываем символ за символом
i++; //передвинули курсор для записи следующего символа
}
f2.close(); //закончили работу с файлом
// cout<<S2<<endl; //Теперь переменная char[] содержит текст из файла
stringstream ss(S2);
vector <string> vstr;
int a=1;
string temp;
// слова из строки S2 - в вектор слов
int sch=0;
i=0;
while (ss >> temp)
vstr.push_back(temp);
// вывод слов из вектора
// copy(vstr.begin(), vstr.end(), std::ostream_iterator<string>(cout, "\n"));
cout<<"Страница 1:\n";
for (int q = 1; q<= vstr.size()/100; q++)
{
if (i>=50) cout<<"\n\n\n\n\n\n\n\n\n\nСтраница: "<<a<<endl;
while (sch<50) {
cout<<vstr[i]<<" "<<vstr[i+50]<<endl; sch++;
i++;
} sch=0; a++;
i=i+50;
}
delete []S2; //освобождаем память
/**************************************/
return 0;
}
Кто может помочь?
Апаю
Решение задачи: «Перевод с C++ на C#. Вывод текста в колонках»
textual
Листинг программы
class Program
{
static void Main(string[] args)
{
if (args.Length < 1)
return;
string path = args[0];
List<string> words = new List<string>();
char[] separators = new char[] { ' ', '-', ',' };
using (StreamReader reader = new StreamReader(path))
{
string str;
while (!reader.EndOfStream)
{
str = reader.ReadLine();
words.AddRange(str.Split(separators, StringSplitOptions.RemoveEmptyEntries));
}
}
Func<List<string>, int, string> getWord = (list, index) =>
{
return (index < list.Count) ? list[index] : String.Empty;
};
for (int shift = 0; shift < words.Count; shift += 100)
{
for (int index = 0; index < 50; index++)
{
//string str = String.Format("{0,-10} {2} {1,-10} {3}",
// getWord(words, shift + index),
// getWord(words, shift + index + 50),
// shift + index,
// shift + index + 50);
string str = String.Format("{0,-50}{1,-50}",
getWord(words, shift + index),
getWord(words, shift + index + 50));
Console.WriteLine(str);
}
}
}
}