• 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.

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
3,591 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,152 wizyt
0 głosów
1 odpowiedź 1,213 wizyt

93,440 zapytań

142,432 odpowiedzi

322,679 komentarzy

62,802 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

...