Răspuns :
Algoritmul respectiv aduna o valoare de 3 la fiecare iteratie impara(cand i este impar se duce pe ramura de altfel si este intotdeauna 3) si scade o valoare de 4 la fiecare iteratie para. Stim asta pentru ca pe iteratiile pare j=3 devine j=7-3=4 iar pe urmatoarea iteratie impara cand j porneste cu valoarea 4 va deveni j=7-4=3. deci din nou devine valoarea 3 pentru urmatoarea iteratie impara.
Astfel pentru fiecare pereche de iteratii de tipul (impar,par) facem operatiile: a=a-3+4=a-1. deci se scade o unitate pentru fiecare unitate para.
Pentru n par, avem n/2 perechi(adica numere de la 1 la n) a=a-n/2.
Daca n este impar, atunci vor fi (n-1) perechi si mai ramane pentru valoarea de iteratie impara n se mai aduna un 3, deci a=a-(n-1)/2+3
a) a=12,n=10, daca n este par, atunci a devine a=12-10/2=12-5=7
b)vedem ca pornim cu a=32 si trebuie sa ajungem la 34. Daca n ar fi par, atunci am obtine o valoare mai mica pentru ca doar scadem o valoare. Deci stim ca n este impar, si atunci formula este
a=32-(n-1)/2+3=34 adica (n-1)/2=1 adica n=3.
c)
#include <iostream>
using namespace std;
int main(){
int a,n,i,j;
cin>>a>>n;
j=3;
for(i=1;i<=n;i++){
if(i%2==0){
a=a-j;
}
else{
a=a+j;
}
j=7-j;
}
cout<<a;
return 0;
}
d) Am scris mai sus care este algoritmul general
Fara structura repetitiva ar fi atunci
[x/y] este catul impartirii lui x la y
citeste a,n;
daca n%2=0 atunci
a=a-[n/2];
altfel
a=a-[(n-1)/2]+3;
scrie a
Astfel pentru fiecare pereche de iteratii de tipul (impar,par) facem operatiile: a=a-3+4=a-1. deci se scade o unitate pentru fiecare unitate para.
Pentru n par, avem n/2 perechi(adica numere de la 1 la n) a=a-n/2.
Daca n este impar, atunci vor fi (n-1) perechi si mai ramane pentru valoarea de iteratie impara n se mai aduna un 3, deci a=a-(n-1)/2+3
a) a=12,n=10, daca n este par, atunci a devine a=12-10/2=12-5=7
b)vedem ca pornim cu a=32 si trebuie sa ajungem la 34. Daca n ar fi par, atunci am obtine o valoare mai mica pentru ca doar scadem o valoare. Deci stim ca n este impar, si atunci formula este
a=32-(n-1)/2+3=34 adica (n-1)/2=1 adica n=3.
c)
#include <iostream>
using namespace std;
int main(){
int a,n,i,j;
cin>>a>>n;
j=3;
for(i=1;i<=n;i++){
if(i%2==0){
a=a-j;
}
else{
a=a+j;
}
j=7-j;
}
cout<<a;
return 0;
}
d) Am scris mai sus care este algoritmul general
Fara structura repetitiva ar fi atunci
[x/y] este catul impartirii lui x la y
citeste a,n;
daca n%2=0 atunci
a=a-[n/2];
altfel
a=a-[(n-1)/2]+3;
scrie a