• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Napisz program, wypisujacy wszystkie liczby doskonale do podanej liczby.

0 głosów
3,588 wizyt
pytanie zadane 17 stycznia 2016 w C i C++ przez Madar Obywatel (1,560 p.)
#include <iostream>

using namespace std;
int how;int j,i,suma;
int main()
{
    cout << "Podaj liczbe do sprawdzenia: ";
    cin >> how;

    for (i=0; i<=how; i++)
    {
        suma=0;
        for (j=0; j<=i; j++)
        {
           if (i % j==0)
           {
           suma=suma+i;
           }
        
           if (suma==i)
           {
               cout<<i;
           }
        }

    }

    return 0;
}

 

Powyzszy kod powinien wypisywac wszystkie liczby doskonale do podanej liczby. Jednak przy odpaleniu programu otrzymuje komunikat od Windowsa "Program przestał działac". Potrafi ktos wytlumaczyc, gdzie jest blad?
komentarz 13 kwietnia 2017 przez niezalogowany

Mała uwaga , kod wstawiasz w odpowiedni sposób. [TUTAJ JAK]

 

2 odpowiedzi

+1 głos
odpowiedź 17 stycznia 2016 przez Radfler VIP (101,030 p.)

Na pierwszy rzut oka: dla j równego 0 próbujesz wykonać takie obliczenie:

if (i % j==0) {
  // ...
}

Dzielenie przez zero? To nie wchodzi w grę...

komentarz 17 stycznia 2016 przez Munvik Dyskutant (9,350 p.)
j nie jest koniecznie liczbą równej 0, tam może siedzieć każda liczba typu int
komentarz 17 stycznia 2016 przez Radfler VIP (101,030 p.)
for (j=0; j<=i; j++)
{
    if (i % j==0)
    {
        suma=suma+i;
    }
        
    if (suma==i)
    {
        cout<<i;
    }
}

Dla pierwszego obiegu tej pętli j jest równe 0, więc po wykonaniu modulo program sygnalizuje SIGFPE.

komentarz 17 stycznia 2016 przez Munvik Dyskutant (9,350 p.)
Racja, mój błąd :)
komentarz 4 grudnia 2020 przez wotoxito Nowicjusz (100 p.)

@Radfler,  umiałbys napisac program ktory wyznacza wszystie trzycyfrowe liczby doskonałe.

liczba doskonała to liczba równa sumie swych dzielników różnych od niej samej np 28=1+2+4+7+14 ??

0 głosów
odpowiedź 17 stycznia 2016 przez Madar Obywatel (1,560 p.)
Dodam iz uzywam kompilatora code blocks, i przy uzyciu komendy if (i % j==0) wywala program. Czy taki zapis jest dozwolony? Jesli nie to jak go zastapic?

Podobne pytania

0 głosów
1 odpowiedź 1,151 wizyt
0 głosów
1 odpowiedź 1,212 wizyt

93,424 zapytań

142,421 odpowiedzi

322,646 komentarzy

62,785 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...