Program pobiera z pliku "promienie.txt" trzy promienie kół - każdy w kolejnej linii. Następnie oblicza owych pole i zapisuje je w pliku "wyniki.txt".
Dlaczego, jeśli deklaruję tablicę dynamiczną o 2 elementach, to program działa nawet przy ich większej ilości? (np. gdy w notatniku jest 5 linii, czyli 5 promieni).
Czy wówczas nie powinien wyskakiwać jakiś błąd krytyczny? W końcu wchodzę w przestrzeń pamięci, gdzie może być zadeklarowana jakaś inna zmienna.
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
fstream p1,p2;
int s=0;
p1.open("promienie.txt", ios::in);
if(p1.good()==false) exit(0);
p2.open("wynik.txt", ios::out);
if(p2.good()==false) exit(0);
int *x = new int[2];
while(!p1.eof())
{
p1>>x[s];
s++;
}
for(int i=0; i<s; i++)
{
p2<<i+1<<" pole: "<<M_PI*x[i]*x[i]<<endl;
}
delete [] x;
p1.close();
p2.close();
return 0;
}
Przykładowa zawartość pliku "promienie.txt":
23
5
2
4
6