bool processOne() { char currentLine[100]; totalCities = 0; int currentCity = 0; int currentDelta; int indexMin; int minDelta; while(true) { gets(currentLine); if(currentLine[0] == '#') { return false; } else if(currentLine[0] == 'e') { break; } parseCity(currentLine, cities[totalCities++]); deltas[currentCity][TOTAL] = 0; minDelta = 1000; for(int i=0; i<totalCities; i++) { int currentDelta = delta(cities[currentCity], cities[i]); deltas[currentCity][i] = deltas[i][currentCity] = currentDelta; deltas[currentCity][TOTAL] += currentDelta; deltas[i][TOTAL] += currentDelta; if(deltas[i][TOTAL] < minDelta) { minDelta = deltas[i][TOTAL]; indexMin = i+1; } } currentCity++; } printf("%d\n", indexMin); return true; }
void Importer::fillAddress() { parseCity(blankLine); parseLocality(blankLine); parseStreet(blankLine); }
void Importer::parse() { QFile file(inputFile); if (!file.open(QFile::ReadOnly)) return; QTextStream in(&file); in.setCodec("IBM 866"); numberDoc = 1; while (!in.atEnd()) { QString line; in.readLine(); // шапка in.readLine(); // in.readLine(); in.readLine(); // Код формы по КНД 1151078 parsePriznak(in.readLine()); // Признак parseTitle(in.readLine()); // Строка с датой и номером справки in.readLine(); // in.readLine(); // п. 1 parseINNCPP(in.readLine()); // п. 1.1 parseOrgname(in.readLine()); // п. 1.2 if (params[QString::number(numberDoc) + "_Orgname"].isEmpty()) parseOrgname(in.readLine(), 1); in.readLine(); parseOKATOTEL(in.readLine()); // п. 1.3 п. 1.4 in.readLine(); // п. 2 parseINN(in.readLine()); // п. 2.1 in.readLine(); parseFIOTBN(in.readLine()); // п. 2.2 parseStatusDrGr(in.readLine()); // п. 2.3 - п. 2.5 parseCodeDocSeriesNum(in.readLine()); // п. 2.6 - п. 2.7 in.readLine(); // п. 2.8 parseIndexRegCode(in.readLine()); fillAddress(); line = in.readLine(); while (!line.contains(WINtoUnicode("Дом"))) { if (line.contains(WINtoUnicode("Город"))) parseCity(line); else if (line.contains(WINtoUnicode("Улица"))) parseStreet(line); else if (line.contains(WINtoUnicode("Населенный пункт"))) parseLocality(line); line = in.readLine(); } parseHomeFlat(line); in.readLine(); fillPara29(); line = in.readLine(); if (line.left(3) == "2.9") { parseCoutryCode(line); parseAddress(in.readLine()); in.readLine(); line = in.readLine(); } parseTax(line); // п. 3 in.readLine(); in.readLine(); in.readLine(); in.readLine(); in.readLine(); line = in.readLine(); QChar sym(0x2514); int incomeTableRowsCount = 1; while (line[0] != sym) { parseIncomeTable(QString::number(incomeTableRowsCount++), line); line = in.readLine(); } addParametr("incomeTableRowsCount", QString::number(incomeTableRowsCount)); in.readLine(); fillPara4(); line = in.readLine(); // п. 4 while (line.left(3) != " 5.") { QString para = line.left(3); if (para == "") { } else if (para == "4. ") { } else if (para == "4.1") { in.readLine(); line = in.readLine(); parseTaxDeductions(line); } else if (para == "4.2") { parsePara42(line); } else if ((para == "4.3") || (para == "4.4")) { parsePara43_44(line); } else if (para == "4.5") { parsePara45(line); } else if (para == "4.6") { parsePara46(line); } line = in.readLine(); } //in.readLine(); // п. 5 fillPara5(); line = in.readLine(); while (line[0] != sym) { QString para = line.mid(1, 4); if (para == "5.1.") parseAmountIncome(line); // п. 5.1 else if (para == "5.2.") parseTaxableAmountIncome(line); // п. 5.2 else if (para == "5.3.") parseAmountOfTaxCalculated(line); // п. 5.3 else if (para == "5.4.") parseAmountOfTaxWithheld(line); // п. 5.4 else if (para == "5.5.") parsePara55Sum(line); // п. 5.5 else if (para == "5.6.") parsePara56Sum(line); // п. 5.6 else if (para == "5.7.") parsePara57Sum(line); // п. 5.7 else if (para == "5.8.") parsePara58Sum(line); // п. 5.8 else if (para == "5.9.") parsePara59Sum(line); // п. 5.9 else if (para == "5.10") parsePara510Sum(line); // п. 5.10 line = in.readLine(); } in.readLine(); in.readLine(); parseBottom(in.readLine()); QChar pageBreak(0x0C); line = in.readLine(); while (!in.atEnd() && line != pageBreak) line = in.readLine(); numberDoc++; } file.close(); }