Buna ziua,as avea nevoie de ajutor la 2 probleme de C++ .am raspunsurile corecte la ele dar nu inteleg cum dau …un ajutor ,imi explicate va rog cat mai rapid ?
4. Ce valori vor avea variabilele a, b si c în urma rularii urmatoarei secvente de instructiuni?
int a, b, c, y=5, x=1;
x=y;
y=x++;
x=y;
a=++x;
b=y++;
c=x+y;
a) 6 2 4; b) -1 1 1; c) 5 7 12; d) 5 4 2; e) 6 5 0;
Raspuns corect: e)
5.Pentru care dintre seturile de valori ale variabilelor x,y,z de mai jos expresia
(x<y) < ((z!=x) < ((z-y)<x)) are valoarea 1 ? (2variante)
a) x=3, y=5, z=4 b) x=4, y=3, z=4 c) x=3, y=4, z=3 d) x=5, y=4, z=3 e) x=5, y=5, z=5
Raspuns corect : b) ; e).
Inainte sa iti raspund la intrebare, trebuie niste teorie.
In c++, operatorul ++, dupa cum vezi poate fi plasat pe ambele parti ala unei variabile si desi pare ca nu conteaza unde il plasezi, este o mica diferenta:
1. ++ inaintea variabilei(prefix):
Pentru structura a=++b, se vor intampla, pe rand urmatoarele lucruri:
-b va fi incrementat
-lui a ii va fi data valoarea lui b(dupa ce a fost incrementat)
2. ++ dupa variabila(sufix):
Pentru structura a=b++, se vor intampla, pe rand urmatoarele lucruri:
-lui a ii va fi data valoarea lui b(neincrementat)
-b va fi incrementat
Ce am explicat mai sus este valabil si pentru operatorul –.
Acum, pentru exericitiul 4:
int a, b, c, y=5, x=1;
x=y; (x=5)
y=x++;(y=5 , x=x+1, x=6)
x=y;(x=5)
a=++x;(x=x+1, x=6, a=6)
b=y++;(b=5, y=y+1, y=6)
c=x+y; (c=x+y=6+6=12)
Raspuns corect: a=6,b=5,c=12(aparent, nici unul dintre raspunsurile tale nu este corect)
Acum, mai multa teorie:
La fel cum lui ii poti atribui valoarea , la fel ii poti atribui si valoarea , numai ca operatia poate avea doar doua rezultate: 1 pentru adevarat si 0 pentru fals.
Ex: daca ar fi sa scriu ceva de genul: , programul va afisa 1.
Tradus in termenii problemei tale:
– (x<y) va avea o valoare (1 sau 0), sa ii zicem
– (z!=x) va avea o valoarea (1 sau 0), sa ii zicem
– (z-y)<x va avea o valoare (1 sau 0), sa ii zicem
– (z!=x)<((z-y)<x) va avea o valoare (1 sau 0), sa ii zicem
– (x<y) < ((z!=x) < ((z-y)<x)) va aveao valoare (1 sau 0), sa ii ziecem
Tie problema iti cere ca valoarea lui e sa fie 1, adica:
dar
Multumesc mult de tot.M-ati salvat,maine am test.Va urez o seara frumoasa.(Raspunsurile erau de la niste exercitii rezolvate date de profesoara🙂 ) )
Asta pare informatica destul de serioasa, spre deosebire de ce fac eu la liceu😀
Esti la liceu ? Am vazut te priecepi foarte bine la informatica.
Fiecare cu talentele lui🙂
classius: Sunt foarte fericit ca am mai gasit inca un pasionat de informatica pe aici. Iti propun o problema simpla😆
Ai intr-un fisier 10000 de numere, dintre care cel putin unul impar. Afla pen-ultimul numar impar din fisier.
Pai in primul rand daca e un singur numar impar in fisier, nu va exista un pen-ultim numar impar.
Daca exista mai mult de un numar impar as putea sa introduc toate numerele impare, pe masura ce le citesc intr-un vector(din STL) si sa afisez v[v.size()-2] sau as putea sa folosesc doua variabile, care vor reprezenta ultimul si pen-ultimul numar impar citit si pe masura ce citesc numere, daca am gasit un numar impar pen-ultimul = ultimu si ultimul=noul numar impar.
In caz ca nu e vreo capcana pe la mijloc sau interpretez eu gresit, nu pare a fi prea grea problema.
Corect!
Am uitat eu sa precizez in enunt ca problema trebuie rezolvata eficient, caz in care solutia a doua pe care ai prezentat-o este cea corecta. Bravo!
Problema am intalnit-o la o varianta de bac si a fost prima care mi-a venit in minte.
Inca una:
Se considera urmatorul algoritm:
Este algoritmul de sortare cunoscut sub numele de quicksort, cu o complexitate de O(n logn) in medie.
Ce optimizare se poate aduce algoritmului din punct de vedere al timpului de executie?
Daca e vorba de optimizarea algoritmului, ai putea sa il transformi in introsort (( o aplicatie simpla a cautarii binare)
^Foarte corect! Eu vroiam sa aud doar faza cu xor-ul, dar si celelalte observatii sunt foarte corecte!
Legat de problema ta, cred ca ar merge urmatoarea idee: aflu aria totala ocupata de vehicule (inmultesc toate cele 3 numere citite) apoi iterez pana intalnesc primul patrat perfect. Imediat ce am intalnit un patrat perfect, afisez radical din acest patrat si inchid programul.
Cum ar fi cu cautarea binara?
Vehiculele nu sunt divizibile. Pentru h=4,w=1,n=1, ai obtine aria 4 acesta fiind si primul patrat perfect mai mare decat 4, deci ai avea un teren de latura 2, dar ai un vehicul cu lungimea 4.
In legatura cu cautarea binara, ideea generala este:
„Cate vehicule pot aseza intr-un patrat cu latura ?”
Si il cauti binar pe . Cand gasesti latura unui patrat in care incap cel putin vehicule, cauti una mai mica. Cand gasesti latura unui patrat in care nu incap vehicule, cauti una mai mare.
Ramane sa vezi cum calculezi cate vehicule poti aseza intr-un patrat cu latura .