Mam problem z odczytem z pliku, który umieściłem w załączniku. Z pliku wycinam 3 współrzędne i umieszczam je w tablicy dwuwymiarowej. Kiedy umieszczam je zgodnie z nrlinii, tj. od indeksu nr 2 wszystko działa. Chcę jednak, aby dane z pliku były umieszczone w tablicy od indeksu nr 0. Program kompiluje się, ale po chwili automatycznie przestaje działać.
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <ctime>
#include <cmath>
#include <iomanip>
#include <cstring>
using namespace std;
void readPDB(double r[][3])
{
fstream plik;
int nrlinii = 1, liczbaatomow;
string str, nazwapliku;
cout << "Podaj nazwe pliku PDB z polozeniami atomow wraz z rozszerzeniem: " << endl;
cin >> nazwapliku;
cout << "Podaj liczbe atomow: " << endl;
cin >> liczbaatomow;
plik.open(nazwapliku.c_str(), ios::in);
if(plik == NULL)
perror ("NIE MOGE OTWORZYC PLIKU, BY POBRAC DANE!");
while(getline(plik, str))
{
string x, y, z;
if(nrlinii!=1 && nrlinii!=(liczbaatomow+2))
{
x=str.substr(31, 7);
y=str.substr(39, 7);
z=str.substr(47, 7);
const char* tempX = x.c_str();
double xd = atof(tempX);
const char* tempY = y.c_str();
double yd = atof(tempY);
const char* tempZ = z.c_str();
double zd = atof(tempZ);
int nr=nrlinii-2;
r[nr][0] = xd;
r[nr][1] = yd;
r[nr][2] = zd;
}
nrlinii++;
}
plik.close();
}
int main()
{
double r[][3]={};
readPDB(r); //wczytanie pliku pdb
for(int i=0;i<10;i++)
cout << r[i][0] << " " << r[i][1] << " " << r[i][2] << endl;
return 0;
}
- AR_10at.pdb (1 KB) - ściągnięć: 131
double foo[3][2] {};