Kezdőoldal » Számítástechnika » Programok » Írjunk programot, mely beolvas...

Írjunk programot, mely beolvas egy egész számot, majd eldönti, hogy tökéletes szám-e! (Az a tökéletes szám, amely egyenlő a nála kisebb osztói összegével. Pl. 6 = 1+2+3 28 = 1+2+4+7+14) Hogyan lehet át írni a megoldásomat C nyelveben ?

Figyelt kérdés

Ez az én megoldásom :


#include<iostream>

using namespace std;


bool isPerfect(long long int n)

{


long long int sum = 1;


for (long long int i=2; i*i<=n; i++)

{

if (n%i==0)

{

if(i*i!=n)

sum = sum + i + n/i;

else

sum=sum+i;

}

}


if (sum == n && n != 1)

return true;


return false;

}


int main()

{

cout << "A tökeletes szám ami 100\n";

for (int n =6; n<100; n++)

if (isPerfect(n))

cout << n << " a tökéletes szám\n";


return 0;

}



de jó lenne C nyelvben és ehez kéne segítség.



2020. nov. 15. 20:24
 1/3 tabaki ***** válasza:

Hát, bocs, ha több okból is feltételezem, hogy ez egyáltalán nem a te megoldásod. Ezek közül kettő, hogy egyrészt nem a feladatot követi, másrészt meg elég idétlen az eredmény kiírása.

Az átírást megcsináltam neked, de előtte volna még egy-két megjegyzésem:

A programozás-kérdéseidet inkább a Programozás rovatban tedd föl, ott hamarabb eljut az értők szeme elé.

Ne csak másolgass, hanem ténylegesen is foglalkozz a kóddal. Ha megpróbáltad volna értelmezni, azt láttad volna, hogy a jelentéktelen különbségek a C legalapfokúbb ismerete alapján könnyen korrigálhatók.

Viszonylag hosszabb kódot (ez már számítson annak) ne itt tegyél közzé, és kivált ne a kérdésben (akkor minden egyes oldalon hosszas vándorlás lejutni a válaszokig), hanem erre szolgáló kódmegosztó oldalon, amely megőrzi az indentálást, és jó esetben még a nyelv szintaktikájának megfelelően színezi is a kódot, ami megkönnyíti a formai hibák felismerését. Ilyen oldal például ez:

[link]

2020. nov. 15. 21:22
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:

Nem kell sokat módosítani (kb. 4 sort):

1. Ugye eleve az első sorban az iostream helyett kell az stdio.h könyvtár (a későbbi printf-hez).

2. Névtereket nem használunk, így a 2. sorban szereplő using namespace std; sem kell.

3. Viszont ha logikai típusú (bool) értékekkel akarunk dolgozni, szükségünk lesz az stdbool.h könyvtárra.

4. A cout-os sorokat ki kell cserélni printf-esekre.

2020. nov. 15. 21:26
Hasznos számodra ez a válasz?
 3/3 tabaki ***** válasza:

„szükségünk lesz az stdbool.h könyvtárra”


Gondolom, egy komolyabb programban jelentősége is van ennek a korrektebb megoldásnak, de ezt itt megspóroltam azzal, hogy a c a nulla/nem nulla értékeket hamis/igaz értékként is elfogadja. Ha nem tenné, akkor se lenne bonyolult:

if (isPerfect(n) == 1)

stb.

2020. nov. 15. 22:03
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!