Перевод с 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); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д