Задача: посчитать среднее арифметическое дробных чисел, получаемых из файла data.txt, записать результат в файл average.txt.
Решение на D:
import std.stdio, std.file, std.conv : to;
void main(){
string input = "data.txt";
string output = "average.txt";
// Если файл с данными существует
if(exists(input)){
File file1, file2;
file1.open(input, "r");
// Инициализируем дин.массив типа float для считанных чисел
float[] tmp;
// Строка для накопления елементов строки файла
string acc;
// Считываем файл построчно
foreach(str; file1.byLine){
// Разбиваем строки по элементам
foreach(elem; str){
// Накопляем элемент во временную строку
if(elem != ' ') acc ~= elem;
else{
// Добавляем элемент в массив из временной строки
tmp ~= to!float(acc);
// Обнуляем временную строку
acc = "";
}
}
}
// Добавляем последний элемент в массив
tmp ~= to!float(acc);
file1.close;
float avg;
float s = 0;
for(int i; i < tmp.length; i++){
// Подсчет суммы всех элементов
s = s + tmp[i];
// Подсчет среднего
avg = s / tmp.length;
}
file2.open(output, "w");
// Запись рез-та в файл
file2.writeln(avg);
file2.close;
// Вывод рез-та в консоль
writeln(avg);
}
else{
// Если нет файла с данными, пишем об этом
// в выходной файл и в консоль
string avg = "The data file not found!";
File file2;
file2.open(output, "w");
file2.writeln(avg);
file2.close;
writeln(avg);
}
}