Răspuns :
Răspuns:
Explicație:
#include <climits>
#include <iostream>
#include <stdlib.h>
#include <bits/stdc++.h>
#define MACS LONG_MIN
using namespace std;
int Maxime(int K, int N, vector<int> v)
{
// K reprezinta cate maxime vor fi luate in considerare
int i ;
int max2=MACS;
int vv[K];
int kk=K;
int position=1;
int j = 0 ;
//caut K maxime:
for(j = 0 ; j < kk ; j++)
{
i = 0;
max2 = MACS;
//gaseste maximul din vector
, se mai poate lucra la algoritm aici deoarece nu este cel mai optim algoritm de maxime.. sugerez bubblesort + findmax in aceeasi bucla sau o functiei deja implementata in C++ precum max(a, b, Functie_de_comparare) din libraria <algorithm>... in rest totul a fost lucrat cu grija si foarte optim, deoarece biblioteca din C++ care ofera lucrul cu vectori / pointeri / Structuri de Date este foarte bine realizata si ofera functii optime in general..
for(i = 0 ; i < v.size() ; i++)
{
if(max2 < v.at(i)){
max2 = v.at(i);
position = i ;
}
}
//dupa ce gasesc max sterg elem,
v.erase(v.begin()+position);
//repet de cate ori cere K
vv[j] = max2 ;
}
float s=0;
for(j = 0 ; j < K; j++)
{
s = s + vv[j];
//fac suma elem din vector
}
cout<<s/K<<endl;
}
int main()
{
int i , N , s=0 ;
N=5; // HARDKODED N schimbati dumneavoastra puteti da ca input
int K = 4; // HARDCODAT K
int LENQ=3; // LUNGIMEA DE ELEMENTE ALE LUI Q
int q[LENQ];
int arr[N + LENQ];
vector<int> VCT;
cout<<"insert q elems"<<endl;
for(i = 0 ; i < LENQ ; i ++)
{
cin>>q[i];
}
cout<<"insert arr:"<<endl;
for(i = 0 ; i < N ; i ++)
{
cin>>arr[i];
}
//s-au citit q , respectiv arr
//formez un vector in VCT:
//prima parte, cea cu arr:
for(i = 0 ; i < N ; i++)
{
VCT.push_back(arr[i]);
}
//verificam ca s-au bagat ok in vector : (just testing)
/* for(i= 0 ; i< N ; i++)
{
cout<<VCT.at(i);
}
cout<<endl;
*/
//incepem concatenarea cu Q :
int j = 0 ;
while(VCT.size() < N + LENQ)
{
VCT.push_back(q[j]);
j=j+1;
//s-a concatenat primul element, acum verificam maximele:
Maxime(K, N, VCT);
//repeta pentru celelalte elemente dupa ce s-au bagat in vectorul principal (vect principal contine intai ARR , apoi contine Q , asadar: vct(0) = arr(0) si vct(N) = q(0) si arr(N) = vct(N-1)
}
}
Am atasat si testele pentru a putea dovedi functionalitatea programului... Din pacate nu am avut in vedere si criteriul de 'optim' pentru algoritmul de maxim, dar cum am mai precizat, utilizand biblioteca <bits/stdc++.h> si <algorithm> obtinem un program optimal deoarece nu sunt memory leaks prea mari.. putem testa si cu valgrind memcheck faptul ca nu exista leakuri
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.