Informatică, întrebare adresată de Utilizator anonim, 9 ani în urmă

ce-i greșit la algoritmul ăsta? ( Asta e 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.) Trebuie să-l încarc pe pbinfo. Am făcut asta și primesc doar 80 de puncte.
#include
using namespace std;
int main ()
{
int S, n, A[1000], i, a, b;
S=a=b=0;
cin>> n;
for ( i=1; i<=n; i++)

cin>> A[i];

for ( i=1; i<=n; i++)
{


if(A[i]%2==0)

a=i;
}


for( i=n; i>=1; i--)

{


if( A[i]%2== 0)
b=i;
}

for (i=b; i<=a; i++)
S= S+ A[i];
if( S>0)
cout<< S;
if (S==0)
cout<< "NU EXISTA";



return 0;
}


emyvegas: scrie asa: ok=0;
emyvegas: for(i=0;i<=n&&(!(ok));i++)
emyvegas: if a[i]%2==0
emyvegas: a=i;ok=1;
emyvegas: si la celalalt lafel dar cu un "ok1"
Utilizator anonim: pff, stai să încerc
Utilizator anonim: aa, stai
Utilizator anonim: m făcut și așa
Utilizator anonim: 20
Utilizator anonim: am făcut și așa. Luam 20 de puncte.

Răspunsuri la întrebare

Răspuns de artur99
4
#include <iostream>
using namespace std;
int main ()
{
int S, n, A[1005], i, a, b;
S=a=b=0;
cin>> n;
for ( i=1; i<=n; i++)

cin>> A[i];

for ( i=1; i<=n; i++)
{


if(A[i]%2==0)

a=i;
}


for( i=n; i>=1; i--)

{


if( A[i]%2== 0)
b=i;
}

for (i=b; i<=a; i++)
S= S+ A[i];
if(a!=b)
cout<< S;
else
cout<< "NU EXISTA";



return 0;
}




//Am editat răspunsul :)) Acum e programul tău - corectat - scoate 100 pe pbinfo

Utilizator anonim: danke sau cum s-o scrie.
artur99: "Ți-am zis eu!" :))) npc
Utilizator anonim: Tho, păi știu că am scris un if asemănător, cu a și b și chestii și nu a mers. Mă disperă acest site. :))
Utilizator anonim: Arturo, cum îți dau puntele? =))) Nu mai nimeresc.
Utilizator anonim: punctele*****
artur99: :))))) Care puncte? :)) Păi odată ce am răspuns mi s-au dat deja
artur99: cred
artur99: :)))))))0
Utilizator anonim: nu, pot pune un răspuns câștigător. Asta nu reușeam.
artur99: aaaa :)) ok, mersi
Răspuns de emyvegas
1
De fapt greseala este ca dupa ce parcurgi primul sir de la 1 la n si cauti primul element par ai uitat sa ii dai "break" si al cel impar lafel. Sau daca nu vrei sa folosesti break pleci cu un "ok=0" si il negi in for si e tot lafel ca break

artur99: Nu e numaidecât asta problema :))) tocmai de asta a<b :)) dacă ar pune break, a ar fi : b
artur99: *dacă ar pune break, a ar fi > decât b
Utilizator anonim: a> b. Dac[ pun break a<b. ^ ^
Utilizator anonim: dacă*
artur99: aa, da, le-am văzut invers :))
Utilizator anonim: *feeling evil at Malefica' s place*
Alte întrebări interesante