[ Príspevkov: 2 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.09.20
Prihlásený: 27.01.21
Príspevky: 16
Témy: 6 | 6
NapísalOffline : 22.12.2020 16:42 | priklad v C++, delitele, prvocisla :)

Ahojte, prosim o pomoc s tymto prikladom. Spravil som ho po svojom, ale chcel by som ho spravit podla zadania, co sa mi akosi nedari. Zvlast pre tuto vetu:
Citácia:
Použite podobný algoritmus ako Eratostenovo sito, iba namiesto poľa logických hodnôt použite pole hodnôt typu int,
A obvzlast pre slovo:
Citácia:
iba

Mozno sa az moc zaoberam podrobnostami, ale o tom to je, ci? Inak chapem to dobre, ze pole logickych hodnot su tie booly?

Tu je zadanie:

V tomto príklade využijeme podobný postup ako Eratostenovo sito, aby sme pre každé číslo z rozsahu 2 až n zistili, koľkými rôznymi prvočíslami je deliteľné. Napríklad číslo 12 má delitele 1, 2, 3, 4, 6, a 12. Z toho iba 2 a 3 sú prvočísla, je teda deliteľné dvomi rôznymi prvočíslami. Na vstupe je číslo n, pričom platí, že 2 ≤ n ≤ 1000. Pre každé číslo od 2 po n vypíšte na výstup počet jeho prvočísených deliteľov vo formáte podľa príkladu.

Algoritmus:
Použite podobný algoritmus ako Eratostenovo sito, iba namiesto poľa logických hodnôt použite pole hodnôt typu int, v ktorom si pre každé číslo i pamätáte, koľko ste doteraz našli jeho prvočíselných deliteľov. Keď potom nejaké číslo vyhlásite za prvočíslo, namiesto “škrtania” jeho násobkov im zvýšte počítadlo prvočíselných deliteľov o 1.
Programy, ktoré použijú iný postup, nezískajú plný počet bodov.
Príklad vstupu: 30
Príklad výstupu: 2:1 3:1 4:1 5:1 6:2 7:1 8:1 9:1 10:2 11:1 12:2 13:1 14:2 15:2 16:117:1 18:2 19:1 20:2 21:2 22:2 23:1 24:2 25:1 26:2 27:1 28:2 29:1 30:3

Tu je Eratostenovo sito:
Kód:
#include <iostream>
using namespace std;

int main() {
    const int n = 30;
    bool a[n + 1];

    for (int i = 2; i <= n; i++) {
        a[i] = true;
    }
    for (int i = 2; i <= n; i++) {
        if (a[i]) {
            cout << i << " ";
            for (int j = 2 * i; j <= n; j = j + i) {
                a[j] = false;
            }
        }
    }
    cout << endl;
}

vystup: 2 3 5 7 11 13 17 19 23 29, cize naslo vsetky prvocisla od 2 po n.

A moj program, ktory pracuje, ale spravil som ho inak ako je pisane v zadani:

Kód:
#include <iostream>
using namespace std;

int main()
{
    int n;

    cout << "Zadajte cislo 'n' od 2 po 1000: ";
    cin >> n;

    while (n < 2 || n > 1000)
    {
       cout << "Zadali ste nespravne cislo 'n'! " << endl;
       cout << "Zadajte znovu cislo 'n' od 2 po 1000: ";
       cin >> n;
    }

    bool a[n + 1];
    int pole[n + 1] = {0};

    for (int i = 2; i <= n; i++)
    {
        a[i] = true;
    }
    for (int i = 2; i <= n; i++)
    {
        if (a[i])
        {
           for (int k = 2; k <= n; k++)
           {
              if (k % i == 0)
              {
                     pole[k] += 1;
              }
           }

            for (int j = 2 * i; j <= n; j = j + i)
            {
                a[j] = false;
            }
        }
        cout << i << " : " << pole[i] << "  ";
    }
    cout << endl;

    return 0;
}


Dakujem za rady, som zaciatocnik.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.09.20
Prihlásený: 27.01.21
Príspevky: 16
Témy: 6 | 6
Napísal autor témyOffline : 28.12.2020 12:29 | priklad v C++, delitele, prvocisla :)

Ahojte, takze nikto nepise, tak som na to pozrel este sam a myslim, ze som sa posunul blizsie.
Splnil som toto zadanie:
Citácia:
keď potom nejaké číslo vyhlásite za prvočíslo, namiesto “škrtania” jeho násobkov im zvýšte počítadlo prvočíselných deliteľov o 1.

Teda este mi chyba splnit:
Citácia:
keď potom nejaké číslo vyhlásite za prvočíslo

Pozeral som si to a ono to naozaj funguje, ked v tom prvom 'for' cykle dam nie 'i' od 2 po n, ale len prvocisla od 2 po n. Skusal som to cez nejaku podmienku, ale akosi to nejde.
Myslim, ze to zadanie je celkom matuce, pretoze neviem, ako moc sa ma ten program podobat na eratostenovo sito a co si mozem spravit podla seba.

Kód:
#include <iostream>
using namespace std;

int main()
{
    const int n = 30;
    int a[n + 1] = {0};


    for (int i = 2; i <= n; i++)
    {
         
            a[i] += 1;
            for (int j = 2 * i; j <= n; j = j + i)
            {
                a[j] += 1;
            }

            cout << i << " : " << a[i] << "  ";
    }
    cout << endl;
    return 0;
}


// Spojený príspevok 28.12.2020 17:26

Tak som to spravil podla zadania, myslim. Aj ked teda tu podmienku na prvocisla som si nasiel na internete.
Inak cital som si pravidla a ja nie som student a nerobim ulohy do skoly, aj ked je pravda, ze tieto ulohy, ktore som nasiel su na internete pre studentov skoly a preto by zase asi nebolo uplne dobre aby to tu maly uz vypracovane, takze ak chcete v pohode tuto temu zmazte. To necham na Vas.
Spravil som si nejake kurzy C++ a teraz sa ucim aj vdaka roznym uloham, ktore najdem na internete. Ako som uz pisal som zaciatocnik a obcas, ked si neviem rady, tak som to dal sem.

Kód:
#include <iostream>
using namespace std;

int main()
{
   int n;
   cout << "Zadajte cislo 'n'od 2 do 1000: ";
   cin >> n;

   while (n < 2 || n > 1000)
   {
      cout << "Zadali ste nespravne cislo 'n'! ";
      cout << "Zadajte znovu cislo 'n' od 2 do 1000: ";
      cin >> n;
   }

    int a[n + 1] = {0};

    for (int i = 2; i <= n; i++)
    {
       for (int k = 2; k <= i; k++)
       {
            if (!(i % k) && (i != k)) {break;}
            if (k == i)
            {
               a[i] += 1;
            for (int j = 2 * i; j <= n; j = j + i)
            {
                a[j] += 1;
            }
            }
       }
            cout << i << " : " << a[i] << "  ";
    }
    cout << endl;
    return 0;
}


 [ Príspevkov: 2 ] 


priklad v C++, delitele, prvocisla :)



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

priklad v C++

v Assembler, C, C++, Pascal, Java

4

101

06.12.2020 14:26

Jur_3

V tomto fóre nie sú ďalšie neprečítané témy.

zadanie v C++ priklad na elektrotechniku, pomozte mi pliiis

v Assembler, C, C++, Pascal, Java

4

1485

09.06.2006 14:40

Harlequin

V tomto fóre nie sú ďalšie neprečítané témy.

prvocisla

v Assembler, C, C++, Pascal, Java

10

5358

16.01.2011 16:31

Lukasito

V tomto fóre nie sú ďalšie neprečítané témy.

delitele cisla

v Assembler, C, C++, Pascal, Java

3

1757

18.11.2006 10:17

audiotrack

V tomto fóre nie sú ďalšie neprečítané témy.

Priklad

v Assembler, C, C++, Pascal, Java

1

1100

17.03.2008 16:27

HT

V tomto fóre nie sú ďalšie neprečítané témy.

Príklad

v PHP, ASP

22

1057

08.11.2007 15:33

pitrik1

V tomto fóre nie sú ďalšie neprečítané témy.

Príklad

[ Choď na stránku:Choď na stránku: 1, 2 ]

v Vzdelanie, štúdium, škola

50

2732

20.11.2007 16:28

nZL

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie.

Priklad Delphi

v Delphi, Visual Basic

3

316

25.01.2017 8:46

focko

V tomto fóre nie sú ďalšie neprečítané témy.

Delphi - príklad

v Delphi, Visual Basic

2

588

07.11.2010 23:16

majso

V tomto fóre nie sú ďalšie neprečítané témy.

Java Príklad

v Assembler, C, C++, Pascal, Java

9

523

21.04.2012 15:51

nBXXL

V tomto fóre nie sú ďalšie neprečítané témy.

priklad z fyziky

v Vzdelanie, štúdium, škola

8

1134

15.03.2008 15:19

petos

V tomto fóre nie sú ďalšie neprečítané témy.

Príklad z Fyziky

v Vzdelanie, štúdium, škola

3

271

13.12.2014 19:29

Daron

V tomto fóre nie sú ďalšie neprečítané témy.

Priklad z fyziky

v Vzdelanie, štúdium, škola

18

1378

06.05.2008 22:07

molotow

V tomto fóre nie sú ďalšie neprečítané témy.

Príklad z fyziky

v Vzdelanie, štúdium, škola

4

216

14.05.2013 22:10

InVader

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie.

Priklad pre hlavicky

v Vzdelanie, štúdium, škola

17

714

09.05.2010 18:08

eXistenZ

V tomto fóre nie sú ďalšie neprečítané témy.

Theveninova veta - priklad

v Elektronika

2

3535

03.01.2008 18:42

sike9



© 2005 - 2021 PCforum, edited by JanoF