zadanie z kwadratami liczb naturalnych

0

Witam. Mam takie o to zadanie:
Podać z klawiatury ciąg dowolnych liczb naturalnych zakończony zerem. Obliczyć liczbę elementów tego ciągu spełniających następujące warunki:
a. są kwadratami liczb naturalnych'
b. element ciągu jest mniejszy od poprzedniego.

Ad. 1a.
moim pomyslem jest sprawdzenie warunku n nalezy do naturalnych poprzez pierwiastek i modul z liczny pierwiastkowanej na zasadzie

x = sqrt(n)
r = x%1.0

if (r == 0) to jest to liczba naturalna

jednakze mam problem z typami danych int double..

tutaj jest caly kod

#include <cstdlib>
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int n, reszta, ilosc=0;
    cout << "Podaj liczbę naturalną: ";
    cin >> n;
    
    if (n>0)
    {
            while (n!=0)
            {
                  double zmienna=sqrt(n);
                  reszta=zmienna%1;
                  if (reszta==0) ilosc++;
            }
            cout << "Liczba " << n << " posiada " << ilosc << "  liczb ktore są kwadratami liczb naturalnych.\n";
    }
    
    else
    {
        cout << "To nie jest liczba naturalna." << endl;
    }
    
system("PAUSE");
return EXIT_SUCCESS;
}

Ad.2 w ogóle nie mam pomyslu jak sie do tego zabrac;/

Prosze was o pomoc ;)

dodanie znaczników <code class="cpp"> oraz `` - fp

0

Zacznij od: "Podać z klawiatury ciąg dowolnych liczb naturalnych zakończony zerem."
Bo nawet tego nie zrealizowałeś.

0

Ad.1 Operator % zwraca reszte z dzielenia liczby calkowitej przez liczbe calkowita, a to co Ty chcesz sie dowiedziec jest czymś innym. Mozesz np uzyskac to tak:

 
reszta=zmienna-(int)zmienna;

Ad.2 Hint: Pomysl nad dodaniem do programu jeszcze jednej zmiennej oprocz n do przechowywania wczytywanych liczb i w jaki sposob mozesz jej uzyc

1 użytkowników online, w tym zalogowanych: 0, gości: 1