rafalski
(rafalski)
3 Listopad 2008 20:25
#1
Witam!
Mam problem ze wczytaniem napisu z pliku, próbowałem w ten sposób:
#include
#include
using namespace std;
int main()
{
string s1;
int ** L,i,j,m,n;
FILE *in;
in=fopen("dane.txt","r");
getline(in, s1);
};
ale nie kompiluje
nr47
(Sawyer47)
3 Listopad 2008 20:38
#2
Mieszasz C z C++, to nie zadziała, bo std::getline z string przyjmuje obiekt istream. Użyj raczej klas [io]fstream, zobacz tu: http://www.cppreference.com/wiki/io/start
rafalski
(rafalski)
3 Listopad 2008 21:09
#3
Przepraszam ale zbaraniałem do reszty. Chcę przerobić ten program, by dane pobierał z pliku a nie ze standardowego wejścia i nie wiem jak.
#include
#include
using namespace std;
int main()
{
string s1,s2,sLCS;
int ** L,i,j,m,n;
getline(cin,s1);
getline(cin,s2);
m = s1.length();
n = s2.length();
// tworzymy dynamicznie tablicę L
L = new int * [m + 1];
for(i = 0; i <= m; i++) L[i] = new int[n + 1];
// obliczamy tablicę L
for(i = 0; i <= m; i++) L[i][0] = 0;
for(j = 0; j <= n; j++) L[0][j] = 0;
for(i = 0; i < m; i++)
for(j = 0; j < n; j++)
if(s1[i] == s2[j])
L[i + 1][j + 1] = 1 + L[i][j];
else
L[i + 1][j + 1] = max(L[i + 1][j],L[i][j + 1]);
// wyznaczamy LCS
sLCS = ""; i = m - 1; j = n - 1;
while((i >= 0) && (j >= 0))
if(s1[i] == s2[j])
{
sLCS = s1[i] + sLCS;
i--; j--;
}
else if(L[i + 1][j] > L[i][j + 1]) j--;
else i--;
cout << sLCS << " : " << L[m][n] << endl;
getchar();
return 0;
}
nr47
(Sawyer47)
4 Listopad 2008 13:15
#4
Użyj obiektu klasy fstream - http://www.cppreference.com/wiki/io/start i tyle, jak już pisałem std::getline z string przyjmuje obiekt klasy istream i string.