Аналіз алгоритму
Прочитаємо вхідні числа та знайдемо їх суму.
Реалізація алгоритму
Оголосимо робочий масив.
double m[100];
Читаємо вхідний масив.
scanf("%d",&n); for(i = 0; i < n; i++) scanf("%lf",&m[i]);
Знаходимо суму усіх чисел масиву.
s = 0; for(i = 0; i < n; i++) s = s + m[i];
Виводимо шукану суму.
printf("%.1lf\n",s);
Реалізація алгоритму – цикл
#include <stdio.h> int i, n; double s, val; int main(void) { scanf("%d",&n); s = 0; for(i = 0; i < n; i++) { scanf("%lf",&val); s = s + val; } printf("%.1lf\n",s); return 0; }
Реалізація алгоритму – вектор
#include <cstdio> #include <vector> using namespace std; int i, n; double s; vector<double> m; int main(void) { scanf("%d", &n); // allocate memory for vector, resize it m.resize(n); // read array for (i = 0; i < n; i++) scanf("%lf", &m[i]); // find the sum of array elements s = 0; for (i = 0; i < n; i++) s = s + m[i]; // print the answer printf("%.1lf\n", s); return 0; }
Реалізація алгоритму – динамічне виділення пам'яті, malloc
#include <stdio.h> #include <malloc.h> int i, n; double s, *m; int main(void) { scanf("%d", &n); m = (double *)malloc(n * sizeof(double)); for (i = 0; i < n; i++) // read array scanf("%lf", &m[i]); s = 0; // find the sum of array elements for (i = 0; i < n; i++) s = s + m[i]; free(m); printf("%.1lf\n", s); // print the answer return 0; }
Реалізація алгоритму – динамічне виділення пам'яті, calloc
#include <stdio.h> #include <malloc.h> int i, n; double s, *m; int main(void) { scanf("%d", &n); m = (double *)calloc(n, sizeof(double)); for (i = 0; i < n; i++) // read array scanf("%lf", &m[i]); s = 0; // find the sum of array elements for (i = 0; i < n; i++) s = s + m[i]; free(m); printf("%.1lf\n", s); // print the answer return 0; }
Реалізація алгоритму – динамічне виділення пам'яті, new
#include <stdio.h> int i, n; double s; double *m; int main(void) { scanf("%d",&n); // allocate memory for array m = new double[n]; // read array for(i = 0; i < n; i++) scanf("%lf",m+i); // m + i = &m[i] // find the sum of array elements s = 0; for(i = 0; i < n; i++) s = s + m[i]; // print the answer printf("%.1lf\n",s); // deallocate the array memory delete[] m; return 0; }
Реалізація алгоритму – використання файлів
При роботі з файлами в системі e-olymp використовуються:
input.txt
– вхідний файл;output.txt
– вихідний файл;
При відправленні рішень з файлами слід вибрати опцію “Рішення використовує файли для читання та запису”.
#include <stdio.h> int i, n; double s, m[100]; int main(void) { freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); scanf("%d",&n); // read array for(i = 0; i < n; i++) scanf("%lf",&m[i]); // find the sum of array elements s = 0; for(i = 0; i < n; i++) s = s + m[i]; // print the answer printf("%.1lf\n",s); return 0; }
Реалізація алгоритму - STL
Використаємо функцію accumulate
.
#include <cstdio> #include <numeric> using namespace std; int i, n; double s, *m; int main(void) { scanf("%d",&n); m = new double[n]; for(i = 0; i < n; i++) scanf("%lf",&m[i]); s = accumulate(m,m+n,0.0); printf("%.1lf\n",s); return 0; }
Java реалізація
public class Main { public static void main(String[] args) { Scanner con = new Scanner(System.in); con.useLocale(Locale.US); int n = con.nextInt(); double sum = 0; for (int i = 0; i < n; i++) { double val = con.nextDouble(); sum += val; } System.out.printf("%.1f",sum); con.close(); } }
Java реалізація – власний клас
import java.util.*; class Array { private double[] m; private int size; public Array(int n) { size = n; m = new double[n]; } public void set(int i, double value) { m[i] = value; } public double getSum() { double s = 0; for(int i = 0; i < size; i++) s = s + m[i]; return s; } } public class Main { public static void main(String[] args) { Scanner con = new Scanner(System.in); con.useLocale(Locale.US); int n = con.nextInt(); Array a = new Array(n); for (int i = 0; i < n; i++) a.set(i,con.nextDouble()); System.out.printf("%.1f",a.getSum()); con.close(); } }
Python реалізація
n = int(input()) m = list(map(float,input().split())) print(sum(m))