Variabilele x, y, z memorează numere naturale, nenule și distincte două câte două.Indicați care dintre următoarele expresii C++ are valoarea 1 dacă și numai dacă numărul memorat în variabila z este fie multiplu de x și de y, fie este divizor al lui x și al lui y.
!(z%x || z%y) && x%z==0 && z%y==0(z%x + z%y==0) || !(x%z || y%z)(x%z==0 || y%z==0) && y%x==0 && z%y==0z%(x*y)==0 && (x*y)%z==0
Cerința este: (z multiplu al lui x și al lui y) SAU (z divide pe x și pe y). În (z%x + z%y==0) || !(x%z || y%z), prima parte este adevărată doar când ambele resturi sunt 0, adică z este multiplu al ambelor numere, iar !(x%z || y%z) este adevărată doar când ambele resturi sunt 0, adică z divide ambele numere; || reunește exact cele două cazuri. Expresia !(z%x || z%y) && x%z==0 && z%y==0 cere simultan ambele situații, ceea ce pentru numere distincte nu se poate întâmpla niciodată; (x%z==0 || y%z==0) && y%x==0 && z%y==0 impune în plus un lanț de divizibilitate între numere; iar z%(x*y)==0 && (x*y)%z==0 cere ca z să fie chiar produsul x⋅y, un caz particular.Se consideră secvența de program C++ cu variabilele întregi i, j, x și s. Indicați ce valoare are numărul x astfel încât la executarea acestei secvențe de program șirul numerelor afișate să conțină numărul 1 de patru ori.
s=0; i=1;
do
{
if(i+s<=x)
{
s+=i;
for(j=1;j<=i;j++)
cout<<j<<" ";
i++;
}
else s=x;
}while(s<x);
2716114
Fiecare trecere prin ramura if afișează șirul 1,2,…,i, deci exact un 1; numărul de 1 afișați este numărul de treceri prin if. Trecerile succesive au i=1,2,3,4,… și, după ele, s=1,3,6,10,…. Pentru exact patru treceri trebuie ca a patra să fie posibilă (4+6=10≤x) și a cincea nu (5+10=15>x), adică 10≤x≤14; atunci se execută s=x, iar ciclul se oprește. Dintre variante doar x=11 se află în acest interval: pentru x=27 se fac 6 treceri, pentru x=16 cinci, iar pentru x=4 doar două.Pentru tablourile unidimensionale x care are 3 elemente și y care are 4 elemente, se aplică operațiile următoare:- interclasarea tablourilor x și y prin care se obține tabloul z,
- căutarea binară a valorii c în tabloul z.Știind că valoarea c a fost găsită în tabloul z la a treia comparație, indicați varianta utilizată.
x=(5,9,24), y=(2,14,7,10), c=7x=(5,7,14), y=(2,9,10,24), c=5x=(2,7,14), y=(5,10,9,24), c=10x=(2,7,14), y=(5,9,10,24), c=24
Tabloul z are 7 elemente, iar căutarea binară începe cu elementul din mijloc, de pe poziția 4. Pentru x=(2,7,14), y=(5,9,10,24), c=24, z=(2,5,7,9,10,14,24): se compară cu 9 (poziția 4), apoi cu 14 (poziția 6), apoi cu 24 (poziția 7): găsit la a treia comparație. Pentru x=(5,7,14), y=(2,9,10,24), c=5, același z dă comparațiile cu 9 și apoi cu 5, deci a doua comparație. La x=(2,7,14), y=(5,10,9,24), c=10, y nu este sortat, iar 10 se află chiar în poziția de mijloc a lui z (prima comparație). La x=(5,9,24), y=(2,14,7,10), c=7, y nu este sortat, z nu rezultă sortat și valoarea 7 nu este găsită prin căutare binară.Se consideră următoarea secvență de program. Indicați coloanele care nu conțin elemente egale cu trei la executarea acestei secvențe de program.
int i,j,n=8,a[11][11];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i%3+j/3==4)
a[i][j]=6;
else
a[i][j]=i/3+j%3;
1,3,53,61,2,73,6,8
Condiția i%3+j/3==4 pune valoarea 6, iar în rest a[i][j]=i/3+j%3, unde i/3∈{0,1,2} pentru i≤8. Pentru j=3 și j=6 avem j%3=0, deci valoarea este i/3≤2 (sau 6 când if-ul se aplică): nu apare niciodată 3. Pentru celelalte coloane, j%3∈{1,2} și există un i cu i/3=3−j%3 pentru care if-ul nu se aplică, de exemplu a[6][1]=2+1=3, a[3][2]=1+2=3, a[3][8]=1+2=3. Coloanele fără 3 sunt 3 și 6.Indicați ce se va afișa pe ecran în urma executării următoarei secvențe de program.
char s[25]="general";
int i=0,n=strlen(s);
while(i<n)
if(strchr("aeiou",s[i])!=0)
{
for(int k=1;k<3;k++)
{
n++;
for(int j=n;j>i;j--)
s[j]=s[j-1];
}
s[i+1]='i';
s[i+2]=s[i-1];
i=i+3;
}
else i++;
cout<<s;
geinialigeigneimrairlgeieneieraialgeigneinrairl
Pentru fiecare vocală găsită în poziția i, ciclul interior de 2 ori deplasează către dreapta tot ce urmează după s[i], deci se fac două locuri libere; în ele se scriu i și litera dinaintea vocalei (s[i-1]), iar i sare cu 3 poziții. general: prima vocală este e (poziția 1), între ea și g se obține geigneral; apoi i ajunge la 4 (n, nu vocală) și la 5 (e), de unde geigneinral; următoarea vocală este a, precedată de r, ceea ce dă geigneinrairl. Se afișează geigneinrairl.