#include<fstream> // Για τη χρήση αρχείων
#include<cmath> // Για τη χρήση της sqrt
using namespace std;
ifstream fin("numbers.txt"); // Δημιουργία ροής ανάγνωσης
ofstream fout("squares.txt"); // Δημιουργία ροής εγγραφής
int cnt = 0; // Καθολική μεταβλητή για το πλήθος των ακεραίων
void fill(int nums[]){ // Συνάρτηση καταχώρισης ακεραίων
while(!fin.eof()){ // στον πίνακα από το αρχείο numbers.txt
fin >> nums[cnt]; // Διαβάζει και καταχωρίζει έναν ακέραιο
cnt++; // Αύξηση του μετρητή
}
}
bool square(int n){ // Συνάρτηση για εντοπισμό τέλειου τετραγώνου
int x = (int)(sqrt(n) + 0.5);
if (x*x == n)
return true; // Επιστρέφει true αν έχουμε τέλειο τετράγωνο
return false;
}
void print(int nums[]){ // Συνάρτηση καταχώρισης στο squares.txt
for(int i=0; i<cnt; i++)
if(square(nums[i])) // Κλήση συνάρτησης εντοπισμού
fout << nums[i] << " ";
}
int main() {
int numbers[100]; // Καθορισμός μεγέθους με βάση το μέγιστο
fill(numbers); // Συνάρτηση ανάγνωσης αρχείου
print(numbers); // Συνάρτηση εγγραφής σε αρχείο η οποία
// καλεί εσωτερικά τη συνάρτηση square
return 0;
}