int main(int argc, char* argv[]) {{ /* if (argc != 2) { cerr << "Uso: acm archivo_entrada"; return -1; } // abrir el archivo de entrada ifstream is(argv[1], ios::in|ios::nocreate); */ ifstream is("input.txt"); if (!is) { cerr << "No se puede abrir el archivo\n"; return -1; } // abrir el archivo de salida ofstream os("salida.txt"); if (!os) { cerr << "No se puede abrir el archivo\n"; return -1; } CString linea; char *p_linea = linea.GetBuffer(MAX_LEN); // recorrer el archivo de entrada is.getline(p_linea, MAX_LEN); // leer la linea while (!is.eof() && (p_linea[0] != FIN_INPUT)) { linea.ReleaseBuffer(); CAdn adn(linea); linea = adn.Proteina(); p_linea = linea.GetBuffer(MAX_LEN); os.write(p_linea, strlen(p_linea)); os.put('\n'); is.getline(p_linea, MAX_LEN); // leer la linea } linea.ReleaseBuffer(); os.close(); is.close(); } // verificar si hay lagunas de memoria (hay lagunas por el simple hecho de declarar un cstring) if (_CrtDumpMemoryLeaks()) { cerr << "Hay lagunas de memoria\n"; _getch(); } else { cerr << "OK: No hay lagunas de memoria\n"; _getch(); } return 0; }
app * mk_magic_sets::adorn_literal(app * lit, const var_idx_set & bound_vars) { SASSERT(!m_extentional.contains(lit->get_decl())); func_decl * old_pred = lit->get_decl(); SASSERT(m.is_bool(old_pred->get_range())); adornment_desc adn(old_pred); adn.m_adornment.populate(lit, bound_vars); adornment_map::entry * e = m_adorned_preds.insert_if_not_there2(adn, nullptr); func_decl * new_pred = e->get_data().m_value; if (new_pred==nullptr) { std::string suffix = "ad_"+adn.m_adornment.to_string(); new_pred = m_context.mk_fresh_head_predicate( old_pred->get_name(), symbol(suffix.c_str()), old_pred->get_arity(), old_pred->get_domain(), old_pred); m_pinned.push_back(new_pred); e->get_data().m_value = new_pred; m_todo.push_back(adn); m_adornments.insert(new_pred, adn.m_adornment); } app * res = m.mk_app(new_pred, lit->get_args()); m_pinned.push_back(res); return res; }