Variabilele x, y, z, w și v sunt de tip întreg, iar v memorează inițial valoarea 0. Indicați o secvență echivalentă cu secvența de mai jos.
if (x==y && z==w) v=4; else if(x==y && z!=w) v=6; else v=8;
if (x!=y || z==w) v=8; else if(x==y || z!=w) v=6; else v=4;if (x==y || z==w) v=4; else if(x==y || z!=w) v=6; else if(x!=y || z!=w) v=8;if (x==y && z==w) v=4; else if(x==y && z!=w) v=6; else if(x!=y && z!=w) v=8;if(x!=y) v=8; else if(z==w) v=4; else v=6;
Secvența dată atribuie v=4 pentru x=y și z=w, v=6 pentru x=y și z=w, iar în rest, adică pentru x=y, v=8. Secvența if(x!=y) v=8; else if(z==w) v=4; else v=6; dă același rezultat: dacă x=y atunci 8; altfel, x=y, iar z=w dă 4, z=w dă 6. În secvența care începe cu x!=y || z==w, cazul x=y, z=w ar primi 8 în loc de 4; în cea care începe cu x==y || z==w, cazul x=y, z=w ar primi 4 în loc de 6; în cea cu ultimul else if(x!=y && z!=w), pentru x=y și z=w nicio condiție nu este îndeplinită și v rămâne 0, în loc de 8.Variabilele k și i sunt de tip întreg.Indicați câte valori distincte se vor afla pe coloana a 3-a a tabloului bidimensional pătratic A cu componente de tip întreg, având cel mult 10 linii și 10 coloane, dacă se citește valoarea 5. (indexarea este de la 1)
cin>>n;
for(k=(n+1)/2;k>=1;--k)
for(i=1;i<=n;++i)
A[i][k] = A[i][n-k+1]=k, A[k][i] = A[n-k+1][i]=k;
- 4
- 2
- 5
- 3
Pentru fiecare k, de la 3 la 1, se completează cu k coloanele k și n−k+1 și liniile k și n−k+1, adică un „cadru” cu valoarea k. Cadrele cu k mai mic se scriu mai târziu și le acoperă pe cele mai mari, deci A[i][j]=min(i,j,6−i,6−j). Pe coloana 3, pentru i=1,…,5 se obțin valorile 1,2,3,2,1, adică 3 valori distincte.Utilizând metoda backtracking, se generează în ordine crescătoare toate numerele naturale de 4 cifre alese din mulțimea {3,7,2,0,5,8} astfel încât cifrele de pe poziții alăturate să aibă parități diferite.Știind că primele 4 numere generate sunt, în această ordine, 2305, 2307, 2385, 2387, indicați care dintre următoarele secvențe reprezintă o secvență de numere generate unul după altul.
5087, 5237, 52387850, 7852, 83055237, 5238, 52707830, 7832, 7835
Un număr este generat doar dacă cifrele alăturate au parități diferite și dacă numerele apar în ordine crescătoare. Numărul 5087 are cifrele alăturate 0 și 8, ambele pare; 5237 are cifrele alăturate 3 și 7, ambele impare; 7835 are cifrele 3 și 5, ambele impare. Deci secvențele care conțin aceste numere nu pot fi generate. Secvența 7850, 7852, 8305 respectă regula la toate cele trei numere (7850: impar, par, impar, par; 7852; 8305: par, impar, par, impar) și este în ordine crescătoare, deci poate fi generată în această ordine.Subprogramul f este definit mai jos. Indicați ce se afișează în urma apelului f(4);.
void f(int x)
{
int i;
for(i=x;i>1;--i)
{
f(x-1);
cout<<i;
}
}
433222232432232242322323222432223322223222
f(1) nu afișează nimic (ciclul nu se execută). f(2): pentru i=2 apelează f(1) și afișează 2, deci afișează 2. f(3): pentru i=3 afișează f(2) și 3, apoi pentru i=2 afișează f(2) și 2: 2 3 2 2 = 2322. f(4): pentru i=4,3,2 afișează de fiecare dată f(3) urmat de i: 2322+4, 2322+3, 2322+2, adică 232242322323222.Variabila i este de tip întreg, iar variabila s poate memora un șir de cel mult 20 de caractere. Indicați ce se afișează în urma executării secvenței de mai jos.
strcpy(s,"planor"+3);
cout<<strchr(s,'o')-s<<' ';
strncat(s,"platou",4);
s[4]=0;
for(int i=0;i<4;i++)
if(i%2) s[i]=s[0]+4*(2*i/3-1);
else s[i]=s[0]+i-1;
cout<<s;
1 minq1 jjjllat4 okps0rplat1 minq0at
"planor"+3 este șirul nor, deci s="nor", iar strchr(s,'o')-s este poziția lui o, adică 1. Apoi strncat adaugă plat, s="norplat", iar s[4]=0 îl taie la norp. În ciclu, s[0] se modifică la primul pas și rămâne apoi baza pentru ceilalți: i=0 dă 'n'-1='m'; i=1 dă 'm'-4='i'; i=2 dă 'm'+1='n'; i=3 dă 'm'+4='q'. Șirul este minq, iar afișarea completă este 1 minq.