2010-05-14 2 views
0

Мне нужно написать программу на C++, и я раньше не использовал этот laugauge.Прочитать файл и распечатать его в определенном формате. C++

Я знаю, как написать его на Java или C#, но я должен написать его на C++!

Код должен прочитать текстовый файл (я делаю этот шаг), а затем распечатать вывод в определенном формате, используя массив (я сейчас не как сделать этот шаг)

Например: файл имеет следующее:

Task   distribution    duration    dependence 
A    Normal     2,10      - 
B    UNIF     2,7      A 

код выведет следующее:

задача а является нормальным распределением, и это продолжительность от 2 до 10. это не зависит от какой-либо задачи. Задача Б UNIF распределения и т.д.


Я хочу отметить, что это не домашнее задание или задание, который будет представлен к учителю, но я работаю в исследовательском проекте (что-то дополнительно, чтобы узнать что-то новое, прежде чем оставляя университет), и они просят нас использовать C++, который, как мне показалось, трудно изучать (у меня есть другие курсы со степенями, которые я должен рассмотреть, а не делать исследования).


Я пишу код в C# и я искал утилиты для преобразования из C# на C++, но он не работает!

http://www.tangiblesoftwaresolutions.com/Product_Details/Instant_CPlusPlus_CSharp_Edition.html

Это мой код в C#, и она работает правильно.

class Program 
{ 
    static List<string []> allTasks = new List<string []>(); 
    static List<TaskInfo> Tasks = new List<TaskInfo>(); 

    static void Main(string[] args) 
    { 
     string line; 
     string[] info = null; 
     StreamReader sr = new StreamReader("C:\\Users\\7bah Jno0ney\\Documents\\Visual Studio 2008\\Projects\\Example1_C++\\Tasks.txt"); 
     string fLine = sr.ReadLine(); 
     while ((line = sr.ReadLine()) != null) 
     { 
      line = line.Replace("\r", ""); 
      info = line.Split(' '); 
      allTasks.Add(info); 
     } 
     for (int i = 0; i < allTasks.Count; i++) 
     { 
      for (int j = 0; j < allTasks[i].Length; j++) 
      { 
       allTasks[i][j] = allTasks[i][j].Replace("\r", ""); 
       allTasks[i][j] = allTasks[i][j].Replace(" ", ""); 
      } 
      TaskInfo task = new TaskInfo(allTasks[i][0], allTasks[i][1], allTasks[i][2], allTasks[i][3]); 
      Tasks.Add(task); 
     } 

     Console.WriteLine("You have " + Tasks.Count + " Tasks."); 
     Console.WriteLine(); 
     for (int i = 0; i < Tasks.Count; i++) 
     { 
      if (Tasks[i].getTaskDep() == null || Tasks[i].getTaskDep() == "-") 
      { 
       Console.WriteLine("The first task in the project is the task " + Tasks[i].getTaskName() +". " + 
        "The task distribution is " + Tasks[i].getTaskDis() + " and its duration is " + Tasks[i].getTaskDur() + "." + " Finally, it doesn't has any dependence"); 
       Console.WriteLine(); 
      } 
      else 
      { 
       string name = Tasks[i].getTaskName(); 
       string dep = Tasks[i].getTaskDep(); 
       if(dep.Contains(",")) 
       { 
        string[] depends = dep.Split(','); 
        Console.Write("Task " + Tasks[i].getTaskName() + " has " + Tasks[i].getTaskDis() + 
         " distribution and its duration is " + Tasks[i].getTaskDur() + ". "); 
        Console.Write("This task depends on " + depends.Length + " tasks."); 
        for (int d = 0; d < depends.Length; d++) 
        { 
         int num = d + 1; 
         Console.Write(" The " + num + " depended task is " + depends[d] + ". "); 
        } 
        Console.WriteLine(); 
        Console.WriteLine(); 
       } 
       else 
       { 
        foreach (TaskInfo ti in Tasks) 
        { 
         if((ti.getTaskName() == name) && (ti.getTaskDep() == dep)){ 
          Console.WriteLine("This Task is the " + i + 
           " task and its distribution is " + Tasks[i].getTaskDis() + 
           ". It is duration is " + Tasks[i].getTaskDur() + 
           " and it depends on the task " + ti.getTaskDep()); 
          Console.WriteLine(); 
         } 
        } 
       } 
      } 
     } 
    } 
} 

Каковы некоторые утилиты или программы, которые помогут преобразовать код?

+1

вы можете разместить свой код C#, а затем кто-то может помочь вам преобразовать его в C++ –

+1

Говоря «Я делаю этот шаг», вы имеете в виду, что у вас есть код, написанный для этого? Если это так, вы можете включить этот код в свой вопрос? Постскриптум Удалите «конкретный» тег, он не имеет смысла. –

ответ

0

Для C++ вероятно, что вы должны смотреть на использование потока файлов (std::ifstream скорее всего) для чтения, а стандартный поток вывода (std::cout) для записи. Учитывая отсутствие деталей, лучшее, что я могу вам сказать после этого, - прочитать в потоках файлов C++ и форматировании потока. Here's a tutorial Я нашел онлайн для файловых потоков и here's one for stream formatting.

0

Я рекомендую использовать один из двух маршрутов, потоки C++ или printf славы C.

Для потоков C++, загляните на I/O Manipulators библиотеке, особенно эти функции:
setw
setprecision
left
right

для printf техники, смотрите на format specifiers:
%d
%c
%s

Я настоятельно рекомендую использовать пробелы вместо вкладок. Для консолей нет стандартного размера вкладок.

Если вы имеете дело с графическим интерфейсом, я рекомендую использовать виджет таблицы или использовать метрики шрифта для получения точного выравнивания. Вы можете обмануть и использовать шрифт с фиксированным шагом, но правильный и кропотливый метод - рассчитать ширину каждого символа, а затем определить необходимый интервал. Или просто поместите текст в фиксированное горизонтальное положение.

Смежные вопросы