#opl
#opl
Вопрос:
У меня есть .txt
файл, я хочу прочитать его и преобразовать в экземпляр, чтобы кортежи могли его прочитать
Мой текстовый файл содержит:
day 7h 20h
care amy baba
care baba bintou
Я хочу прочитать текстовый файл и получить следующие данные:
day = <7.20>
care = [<"amy", "baba">
<"bintou", "baba">
]
Сценарий выглядит следующим образом:
// Reads the content of a file and returns its content as a string
function file_to_string(files) {
var f = new IloOplInputFile(files);
if (f.exists) {
// writeln("Reading file : ", fichier );
var s = "";
var indent = "";
var tab = new Array();
while (!f.eof) {
s = s f.readline() "n";
s = s.split(" ");
}
write(s);
f.close(); // Fermeture fichier instance
}
else
writeln("nWARNING : the file ", files, " doesn't exist");
return s;
}
Ответ №1:
Вы должны определить соответствующие кортежи и создать из них (пустые) наборы. Затем вы можете использовать функцию add набора кортежей, чтобы добавить новые кортежи в набор. Этот .mod
файл
tuple day {
int field1;
int field2;
}
{day} days = {};
tuple care {
string field1;
string field2;
}
{care} cares = {};
execute {
var f = new IloOplInputFile("readtuple.data");
while (!f.eof) {
var s = f.readline();
var fields = s.split(" ");
if ( fields.length < 2 )
// empty or invalid line
continue;
if ( fields[0] == "day" )
days.add(Opl.atoi(fields[1]), Opl.atoi(fields[2]));
else if ( fields[0] == "care" )
cares.add(fields[1], fields[2]);
else {
// invalid line
}
}
f.close();
}
execute {
writeln(days);
writeln(cares);
}
Выдает этот вывод с вашими данными:
{<7 20>}
{<"amy" "baba"> <"baba" "bintou">}