Informatică, întrebare adresată de mili69, 9 ani în urmă

Se citește un șir de numere întregi pana cand se introduce de doua ori consecutiv aceeași valoare. Sa se afișeze câte pătrate perfecte sunt in șir.
Ex: 13 9 56 400 8 17 25 25
Conține 4 pătrate perfecte (9, 400, 25, 25)
.
Am încercat ceva dar nu imi da bine cand o verific. Cred ca am greșit cand l-am copiat pe n in m, sau la condiția de la while.

Anexe:

stassahul: Iti trebuie neaparat prin void sa o faci?
stassahul: Sau se poate si fara el?
stassahul: Oh, gata am inteles
mili69: E ok si fara

Răspunsuri la întrebare

Răspuns de stassahul
2
Trebuie m=n, sa pui in while si tias recomanda daca scrii cout dupa un void, mai bine coutu sal scrii in void, sau mai bine sa nu folosesti de loc void.

#include <bits/stdc++.h>

using namespace std;

int n,m=1000000000,nr;

void pp(int n, int nr)
{
    nr=0;
    cin >> n;
    while(m!=n)
    {
        m=n;
        if(int(sqrt(m))==sqrt(m))
            nr++;
        cin >> n;
    }
    cout << nr;
}

int main()
{

    pp(n,nr);

    return 0;

}




mili69: Nu mi-l numără pe ultimul, adică pe ala care e de doua ori mi-l numără doar o data
stassahul: Pai nici nu ar trebui sal numere, pentru ca deobicei numerele care termina programul nu se memoreaza, in fine daca iti trebuie mai pune un control dupa while, inainte de cout
stassahul: #include <bits/stdc++.h>

using namespace std;

int n,m=1000000000,nr;

void pp(int n, int nr)
{
nr=0;
cin >> n;
while(m!=n)
{
m=n;
if(int(sqrt(m))==sqrt(m))
nr++;
cin >> n;
}
if(int(sqrt(m))==sqrt(m))
nr++;
cout << nr;
}

int main()
{

pp(n,nr);

return 0;

}
stassahul: Nu stai, astai rau
stassahul: #include <bits/stdc++.h>

using namespace std;

int n,m=1000000000,nr;

void pp(int n, int nr)
{
nr=0;
cin >> n;
while(m!=n)
{
m=n;
if(int(sqrt(m))==sqrt(m))
nr++;
cin >> n;
}
if(int(sqrt(n))==sqrt(n))
nr++;
cout << nr;
}

int main()
{

pp(n,nr);

return 0;

}
stassahul: Acestai bun
mili69: Am înțeles, mersiiii mult
Alte întrebări interesante