Witam!
Mam do napisania pewien program i go napisałem. Ale działa tylko co drugi raz :( Niewiem gdzie mam błąd. Jak ktoś byłby na tyle uprzejmy, sprawdzić.
Pozdrawiam!
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
struct zespolona
{
float re,im;
};
void utworz_plik()
{
zespolona a;
char znak;
int i = 0;
ofstream zesp("zesp.bin",ios::binary);
do
{
cout << "Liczba " << i+1 << ":" << endl << endl;
cout << "Podaj Re:" << endl;
cin >> a.re;
cout << "Podaj Im:" << endl;
cin >> a.im;
zesp.write((char *)&a, sizeof(zespolona));
cout << "[T] lub [t] - aby podac kolejna liczbe" << endl;
cin >> znak;
i++;
}
while (znak == 't' || znak == 'T');
}
int main()
{
zespolona b;
float c;
fstream zesp("zesp.bin", ios::in|ios::binary);
fstream modul("modul.txt", ios::out);
cout << endl << endl;
cout << "Witaj w programie!" << endl << endl;
cout << "-program wczytuje liczby zespolone do pliku zesp.bin" << endl;
cout << "-program odczytuje liczby zespolone z pliku zesp.bin" << endl;
cout << "-program zapisuje moduly tych liczb do pliku modul.txt" << endl << endl;
utworz_plik();
while(!zesp.eof())
{
zesp.read((char *)&b, sizeof(zespolona));
if(zesp.good())
{
c = sqrt((b.re)*(b.re) + (b.im)*(b.im));
modul << c << endl << endl;
}
}
zesp.close();
modul.close();
return 0;
}