zacznij od delta==0 zamiast delta=0 (nie wiem jakiego IDE i kompilatora używasz, ale to powinno być wyłapane przez środowisko), przy pierwiastkach pewnie też będzie błąd, bo jest dzielenie całkowitoliczbowe (w C++ int/int daje int a nie double)
Formalnie w C++ jest to prawidłowe, ale nowoczesne kompilatory (GCC z -Wall na pewno) generują ostrzeżenie, gdyż niezwykle rzadko jest to operacja, którą rzeczywiście chcemy wykonać.
Zależy od ustawień projektu, GCC o tym nie informuje standardowo, ale można włączyć te ostrzeżenie poprzez -Wall (najprościej). clang informuje i bez tego, nawet całkiem ładnie:
razi@acerMint ~ $ clang test.cpp
test.cpp:21:8: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
if(id=32){
~~^~~
test.cpp:21:8: note: place parentheses around the assignment to silence this warning
if(id=32){
^
( )
test.cpp:21:8: note: use '==' to turn this assignment into an equality comparison
if(id=32){
^
==
1 warning generated.
Ignoruje to gdy wsadzi się te wyrażenie do nawiasów.