Í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 ?
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.
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:
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.
„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.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!