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