我必须用C ++编写一个程序,之前我还没有使用过这个laugauge。
我知道如何用Java或C#编写它,但我应该用C ++编写它!
代码应该读取文本文件(我执行此步骤),然后使用数组以特定格式打印输出(我现在不知道如何执行此步骤)
例如: 该文件包含以下内容:
Task distribution duration dependence
A Normal 2,10 -
B UNIF 2,7 A
代码将打印以下内容:
任务A是正态分布,持续时间在2到10之间。它不依赖于任何任务。任务B是统一分发等。
我想提一下,这不是提交给老师的作业或作业,而是我在一个研究项目中工作(在离开大学之前学习一些新东西),他们要求我们使用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();
}
}
}
}
}
}
}
有哪些实用程序或程序可以帮助转换代码?
答案 0 :(得分:0)
对于C ++,您应该关注的是使用文件流(最有可能std::ifstream
)进行读取,使用标准输出流(std::cout
)进行写入。鉴于缺乏细节,我可以告诉你的最好的事情是阅读C ++文件流和流格式。 Here's a tutorial我在网上找到了文件流,here's one for stream formatting。
答案 1 :(得分:0)
我建议使用两种路由之一,C ++流或C {名称printf
。
对于C ++流,请查看I/O Manipulators库,尤其是这些函数:
setw
setprecision
left
right
对于printf
技术,请查看format specifiers:
%d
%c
%s
我强烈建议使用空格而不是制表符。控制台没有标准的标签大小。
如果您正在处理GUI,我建议您使用表格小部件或使用字体指标来获得准确的对齐方式。您可以作弊并使用固定间距字体,但正确而费力的方法是计算每个字符的宽度,然后确定所需的间距。或者只是将文本放在固定的水平位置。