👤
a fost răspuns

Help.
Cerinţa:
Se citește un vector cu n elemente, numere naturale. Să se determine suma valorilor elementelor cuprinse între primul și ultimul element par al vectorului, inclusiv acestea.
Si rezolvarea mea care bineinteles nu e buna
#include

using namespace std;

int main()
{int v[20],n,c1,c2,i,s;
cin>>n;
s=0;
c1=0;
c2=0;
for(i=1;i<=n;i++)
cin>>v[i];
for(i=1;i<=n;i++)
if(v[i]%2==0)
c1=i;
for(i=n;i>=1;i--)
if(v[i]%2==0)
c2=i;
if((c1==c2)&&(c1%2!=0))
cout<<"Nu exista";
else

for(i=c1;i<=c2;i++)
s=s+v[i];
cout<

return 0;
}


Răspuns :

#include <iostream>

int main()
{
    static const int32_t TEMP = -1;
    uint32_t * n = new uint32_t;
    int32_t * st = new int32_t(TEMP);
    int32_t * dr = new int32_t(TEMP);
    std::cin >> (*n);
    int32_t * v = new (std::nothrow) int [*n];

    int32_t * suma = new int32_t(0);
    for(size_t it = 0u; it != static_cast<size_t>(*n); ++it) {
        std::cin >> v[it];
        if((~v[it] & 1) && *st == TEMP)
            *st = static_cast<int32_t>(it);
        if(~v[it] & 1)
            *dr = static_cast<int32_t>(it);
    }

    if(*st == *dr && *st == TEMP)
        std::cout << "Nu exista\n";
    else {
        for(size_t it = *st; it <= static_cast<size_t>(*dr); ++it)
            *suma += v[it];
        std::cout << *suma << '\n';
    }

    delete n;
    delete st;
    delete dr;
    delete suma;
    delete[] v;
    // by AntiEaglesDavids the Bossman
    return 0;
}


#include <iostream>
using namespace std;

int main(){
    int i,s=-1,e,v[100],n,sum=0;
    cin>>n;
    for(i=0;i<n;i++){
        cin>>v[i];
        if(v[i]%2==0){
            if(s==-1)s=i;
            e=i;
        }
    }
    for(i=s;i<=e;i++)sum+=v[i];
    cout<<sum;
}