Informatică, întrebare adresată de sebi252002, 9 ani în urmă

Staţia meteorologică “Toaca” din Masivul Ceahlău a fost de câţiva ani automatizată. Înainte, urca zilnic meteorologul de serviciu pentru a culege valorile temperaturilor de peste zi, lucru destul de anevoios deoarece traseul este dificil. Acum toate informaţiile despre temperatură se centralizează automat la Bacău din 30 în 30 de minute. Un site preia un număr de nr valori şi face publică pe Internet o situaţie a mediei aritmetice a celor mai scăzute n valori distincte de temperatură şi a mediei aritmetice a celor mai ridicate p valori distincte de temperatură dintre cele nr.
Cerinţă

Cunoscându-se n, p, nr şi valorile temperaturilor, scrieţi un program care calculează partea întreagă a celor două medii aritmetice.
Date de intrare

Fişierul meteo.in conţine pe prima linie cele două valori pentru n şi p, pe a doua linie valoarea nr reprezentând numărul de valori preluate, iar pe următoarele nr linii câte o valoare de temperatură.
Date de ieşire

Fişierul meteo.out va conţine pe prima linie două valori naturale mn mp, separate printr-un spaţiu, ce reprezintă valoarea mediei aritmetice a celor n cele mai scăzute valori distincte (mn), respectiv valoarea mediei aritmetice a celor p cele mai ridicate valori distincte (mp).
Restricţii

• 0 < n < 30
• 0 < p < 30
• Valorile temperaturilor centralizate au valori între -50 şi 40, ele fiind valori întregi.
• În datele de test există cel puţin max(n, p) valori.
• max(n, p) ≤ nr < 100000
Exemple

meteo.in meteo.out Explicaţii
2 3
9
3
5
4
3
-1
-3
-3
0
1
-2 4
(-1-3)/2=-2
(3+4+5)/3=4




IMI DA 10 PCT DC?


nclude
#include
#include
#include
using namespace std;
int n,p,nr,i,v[100003],s=0,s2=0,e,r,t,x=0;
int main()
{
ifstream f ("meteo.in");
ofstream g("meteo.out");
f>>n>>p>>nr;
e=n;
r=p;
v[0]=99999;
for(i=1;i<=nr;i++)
{
f>>t;
if(t!=v[i-1])
{
x++;
v[x]=t;

}

}
sort(v+1,v+x+1);
for(i=1;i<=x;i++)
{
if(n!=0)
{
s=s+v[i];
n--;
}
else
break;
}
g<
for(i=x;i>=1;i--)
{
if(p!=0)
{
s2=s2+v[i];
p--;
}
else
break;
}
g< }


Calausx: cifra zero intra la valori pozitive sau negative?
sebi252002: nu conteaza
Calausx: eu pot sa ti-l fac în alt fel este ok?
ArMyFoRHeLL: Puteai pur si simplu sa calculezi mediile aritmetice intr-o variabila de tip float si la sfarsit il converteai la int( ii puneai la rezultat (int) la afisare)
ArMyFoRHeLL: fiecare medie intr-o variabila *
ArMyFoRHeLL: Ai luat problema de pe pbifno?
Calausx: e o problema pt ca zice ca trebuie sa iei valorile date o singura data adica poti avea gen -1 -3 -3 la valorile negative eu zic ca valorile trebuie bagate intr-un vector si eliminate duplicatele
sebi252002: e ok si altfel

Răspunsuri la întrebare

Răspuns de Utilizator anonim
1
#include<bits/stdc++.h>using namespace std;ifstream in("input.txt");ofstream out("output.txt");typedef long long ll;typedef string str;typedef char chr;#define save1 in.close()#define save2 out.close()#define bs bitset#define opt1 ios_base::sync_with_stdio(0)#define opt2 cin.tie(0)#define opt3 cout.tie(0)#define fi first#define se second#define vi vector<int>#define pii pair<int,int>#define pil pair<int,ll>#define pli pair<ll,int>#define pll pair<ll,ll>#define MP make_pair#define pb push_backdouble v[105];int main(){int n,a,b,i;double sum=0,a1=0;opt1;opt2;opt3;cin>>a>>b>>n;a1=a;--a;for(i=1;i<=n;++i)    cin>>v[i];sort(v+1,v+n+1);sum=v[1];i=2;while(a)    {if(v[i]!=v[i-1])      --a,sum+=v[i];    ++i;}cout<<floor(sum/a1)<<" ";i=n-1;a1=b;--b;sum=v[n];while(b)    {if(v[i]!=v[i+1])      sum+=v[i],--b;    --i;}cout<<floor(sum/a1);save1;save2;return 0;}

Utilizator anonim: CE hei
Alte întrebări interesante