Se citesc din fisiere numerele naturale
Determinați un număr x astfel încât daca scădem din x pe rând fiecare număr citit atunci suma diferențelor Să fie 0
Se va afișa numărul determinat Sau -1 Dacă un astfel de număr nu există
Răspunsuri la întrebare
Rezolvam problema matematic :
Fie a[n] - sir de numere naturale
x - numar natural
Daca x are proprietatea respectiva atunci :
a[1]-x + a[2]-x + a[3] - x + ...... + a[n] - x = 0
a[1] + a[2] + a[3] + ... + a[n] - nx = 0
De aici scoatem x :
x = (a[1] + a[2] + ... + a[n]) / n
Altfel spus x este egal cu media aritmetica a numerelor date (daca acesta exista - este natural)
Ai mai jos algoritmul in C++ (testat) :
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("nr.txt");
int main(){
int suma=0, nr=0, v, ma;
//Citim numerele, le contorizam si calculam suma
while(f >> v){
suma+=v;
nr++;
}
//Calculam media
ma = suma/nr;
//Verificam daca numarul e natural
if(ma*nr==suma){
//Afisam media
cout << ma;
}
//altfel afisam -1
else cout << -1;
}