BCB ( GUI ) i eksport tablicy do pliku

0
 fstream wynik("wynik.txt");
         for(int i=0; i<W; i++)
         {

           wynik<<tab2[i]<<""<<"\n\n";;
         }

Czy coś z tym kodem jest nie tak? Gdy mam w Editadch wpisane wartości i naciskam odpowiedni Button to pojawia mi się błąd.

Project Project1.exe raised exception class EInvalidOp with message 'Invalid floating point operation'. Process stopped.

Dodam, że jeżeli wezmę ten kod w komentarz, to jest ok.

0

Pytanie numer 1: JAKI ROZMIAR MA TABLICA tab2[] ?
Pytanie numer 2: czy zamykasz w ogóle ten plik po zapisie ?
Pytanie numer 3: co daje wpisanie do pliku pustego stringa wg Ciebie ? :> Mowa o:

wynik<<"";
0

Czy tablica jest tablicą liczb zmiennoprzecinkowych?
Jeżeli tak to wywala dla tego że jakaś wartość w tablice jest INF lub NAN.

0
 //Obliczamy Refleksy

x=StrToFloat(Edit2->Text)/StrToFloat(Edit6->Text);
y=StrToFloat(Edit3->Text)/StrToFloat(Edit7->Text);
z=StrToFloat(Edit4->Text)/StrToFloat(Edit8->Text);
lambda=StrToFloat(Edit1->Text);
x1=lambda/x;

//Tutaj wczytujemy dane do analizy

    ifstream plik;
    plik.open("zloto.txt");

    if(plik.good()==true)
    {
        for(int i=0;i<W;i++)
        {
           for(int j=0;j<K;j++)
           {
              plik>>tab[i][j];
           }
        }
    plik.close();
    }
    else
    {
        ShowMessage("Nie mozna otworzyc pliku!");
        return;
    }
//Tutaj wyszukamy odpowiednie refleksy dla x, y, z
for(int i=0;i<W;i++)
{
for(int j=1;j<K;j++)
{
tab2[i]=tab[i][j]-x1;
}
}
//Sortowanie

for(int i=0;i<W;i++)
{
if(tab2[i]>tab2[i+1]) swap(tab2[i],tab2[i+1]);
}

        ofstream plik1;
        plik.open ("plik.txt");
        plik1<<tab2[0];
        plik1<<" ";
        plik1<<tab2[1];
        plik1.close();

Oto cały przycisk. Błąd mam dalej ten sam pomimo zmian.

0
x=StrToFloat(Edit2->Text)/StrToFloat(Edit6->Text);
y=StrToFloat(Edit3->Text)/StrToFloat(Edit7->Text);
z=StrToFloat(Edit4->Text)/StrToFloat(Edit8->Text);
lambda=StrToFloat(Edit1->Text);
x1=lambda/x;

// czy dobrze się skonwertowało
ShowMessage("x="+FloatToStr(x)+"; y="+FloatToStr(y)+"; z="+FloatToStr(z)+"; lambda="+FloatToStr(lambda)+"; x1="+FloatToStr(x1)+";");

    ifstream plik;
    plik.open("zloto.txt");
 
    if(plik) // wystarczy tak
    {
        for(int i=0;i<W;i++)
        {
           for(int j=0;j<K;j++)
           {
              if(!(plik>>tab[i][j])) ShowMessage("Błąd odczytu tab["+IntToStr(i)+"]["+IntToStr(j)+"]");
           }
        }
    plik.close();
    }
    else
    {
        ShowMessage("Nie mozna otworzyc pliku!");
        return;
    }
for(int i=0;i<W;i++)
{
//for(int j=1;j<K;j++) // bez sensu tylko ostatnie j coś zrobi
{
tab2[i]=tab[i][K-1]-x1;
}
}
 
for(int i=0;i<W;i++) // to nie posortuje tablicy
{
if(tab2[i]>tab2[i+1]) swap(tab2[i],tab2[i+1]);
}
 
        ofstream plik1; 
        plik.open ("plik.txt"); // otwierasz plik
        plik1<<tab2[0]; // piszesz do plik1
        plik1<<" ";
        plik1<<tab2[1];
        plik1.close();

Programowanie bez formatowania kodu to jak chodzenie ze spodniami spuszczonymi na kostki, da się ale bardzo niewygodne no i niezbyt przyzwoicie wygląda.

0

Po zmianach nadal mam ten sam błąd.

Działa... Pozdrawiam!

1 użytkowników online, w tym zalogowanych: 0, gości: 1