В то время как цикл, новый оператор и некоторые другие

Я пытаюсь нарисовать таблицу LCS. И эта часть моего кода останавливается после первой итерации внутреннего цикла while fill_the_table() функция. Я не могу найти, что не так в моем коде. Кстати, я новичок в C ++ …

#include<iostream>
#include<fstream>
#include<string>

using namespace std;

#define U 1
#define L 2
#define UL 3

void fill_the_table(ifstream& file1, ifstream& file2, int **table, int **p){
table[0][0]=0;
p[0][0]=UL;
string line1, line2;
int i=1, j=1;

file1.clear();
file1.seekg(0, ios::beg);
file2.clear();
file2.seekg(0, ios::beg);

while(getline(file1, line1)){
table[0][j]=0;
p[0][j]=L;
while(getline(file2, line2)){
table[i][0]=0;
p[i][0]=L;
if(line1==line2){
table[i][j]=table[i-1][j-1]+1;
p[i][j]=UL;
i++;
}
else{
if(table[i-1][j]>table[i][j-1]){
table[i][j]=table[i-1][j];
p[i][j]=U;
}
else{
table[i][j]=table[i][j-1];
p[i][j]=L;
}
i++;
}
j++;
}
}
cout<<table[i][j];
return;
}void table(ifstream& file1, ifstream& file2){
int i=0, j=0;
string line1, line2;

while(getline(file1, line1)){
i++;
}
while(getline(file2, line2)){
j++;
}

int** table = new int* [i];
for(int a=0; a<i; a++){
table[a] = new int [j];
}
int** p = new int* [i];
for(int a=0; a<i; a++){
p[a] = new int [j];
}

fill_the_table(file1, file2, table, p);

for(int a=0; a<i; a++){
delete[] table[j];
}
delete table;

for(int a=0; a<i; a++){
delete[] p[j];
}
delete p;

return;
}

int main(int argc, char* argv[]){
ifstream file1(argv[1]);
ifstream file2(argv[2]);
table(file1, file2);

return 0;
}
  1. Могу ли я передать int** table а также int** p как я это прошел table() в fill_the_table()?
  2. Кто-то предлагает мне использовать vector<string> вместо чтения самих файлов, какой из них предпочтительнее?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]