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 pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!