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

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;
}


AntiEaglesDavids: bineinteles ca nu e buna
AntiEaglesDavids: hai ca am sa-ti dau yo o rezolvare mai usurica
sacalu50: binee ^^
artur99: Totuși, dacă la al tău ai inversa c1 cu c2 la ultimul for, ar putea ieși ceva, cred :))
artur99: Sau dacă ai pune break în for-urile de identificare
AntiEaglesDavids: break vere, ai auzit de BREAK?
artur99: Da, dă refresh, cred că nu ți-a apărut comm-ul nr 2 :))
AntiEaglesDavids: da brainly e cam incet in zilele astea :))

Răspunsuri la întrebare

Răspuns de AntiEaglesDavids
1
#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;
}



sacalu50: Multumesc antieaglesdavids,mi ai fost de ajutor ,sper sa o faci in continuare ,pup :))
artur99: Vezi că nu se pune spațiu înainte, ci după virgulă
AntiEaglesDavids: cum adica dupa executie? :))
AntiEaglesDavids: trebuie sa faci curat cand nu mai ai nevoie de ele
AntiEaglesDavids: lol
artur99: :))))
AntiEaglesDavids: vere, vere ce inseamna sa stii php vere..
AntiEaglesDavids: eu dc nu am primit multumesc?? doar merge codu!!!
artur99: =))
sacalu50: Ti-am multumit mai sus :))
Răspuns de artur99
3
#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;
}

AntiEaglesDavids: ai folosi -1 ca mini :(
Alte întrebări interesante