eMatematikas
Kategorijos +Nauja tema Prisijungti        

Pirminių skaičių grąžinimas masyvu


Labas vakaras, turiu tokį uždavinį (įsivaizduokit ,kad faile duota skaičių eilė ,kuriuos man reikia patikrinti ar kuris nors iš jų yra pirminis, jei tas skaičius yra pirminis tuomet aš jį turiu įdėti į masyvą ir jį išspausdinti, tą patį padaryti ir su likusiais skaičiais (t.y. nepirminiai) juos sudėti į kitą masyvą ir taip pat atspausdinti. Tikiuosi aiškiai parašiau,

Čia mano sprendimas, kuriame aš išsiaiškinu ar tas skaičius yra pirminis ,bet nesugalvoju ,kaip man juos sudėti į masyvą:

#include <iostream>
#include <fstream>

using namespace std;

bool ar_pirminis(int n);

int main()
{
    int n, a[20], pirm[20], nepirm[20];
    ifstream in ("duom.txt");
    in >> n;
    for (int i=0; i<n; i++)
    {
        in >> a[i];
    }
    for (int i=0; i<n; i++)
    {
        ar_pirminis(a[i]);
    }

    return 0;
}

bool ar_pirminis(int n)
{
    int dalikliuKiekis=0;
    for (int i=1; i<n; i++)
    {
        if (n % i == 0)
        {
            dalikliuKiekis++;
        }
    }
    if (dalikliuKiekis < 2) return true;
        else return false;
}

0

Šitame cikle:
for (int i=0; i<n; i++)
{
}
vietoje: ar_pirminis(a[i]);rašome:
if (ar_pirminis(a[i]))
{
  pirm[pirm_kiek]=a[i];
  pirm_kiek++;
}
else
{
  nepirm[nepirm_kiek]=a[i];
  nepirm_kiek++;
}
čia sukurti du papildomi kintamieji skaičiuoti pirminių ir nepirminių skaičių kiekį, pradines reikšmes jie turi 0.
Vėliau jei norime vykdome išvedimą:for(int i=0;i<pirm_kiek;i++) cout << pirm[i] << " ";
cout << endl;
for(int i=0;i<nepirm_kiek;i++) cout << nepirm[i] << " ";

1

Ačiū, viskas aiškiai paaiškinta bei viskas sklandžiai veikia!

0

Norėdami rašyti žinutes privalote prisijungti!