Kezdőoldal » Számítástechnika » Programozás » A szám négyzetszám-e?

A szám négyzetszám-e?

Figyelt kérdés

Valamiért nem működik a program. Mindenre azt írja, hogy négyzetszám. Mi lehet a hiba.


#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()

{

int szam, i, jelzo;

jelzo = 0;

printf("Adj meg egy egesz szamot!");

scanf("%d", &szam);

for (i = 2; i < szam; i = i + 1)

if (i*i == szam)

{

jelzo = 1;

}


if (jelzo = 1)

{

printf("Negyzet szam");

}

else

{

printf("Nem negyzet szam");

}

system("pause");

return 0;

}



2018. szept. 22. 16:23
1 2
 11/14 anonim ***** válasza:
Ha olyan hiperhatékony akarok lenni, akkor egyetlen egyszer kipörgetem az összes ábrázolható (vagy szóba jövő) négyzetszámot egy böhöm vektorba, és B-fában tárolom. :)
2018. szept. 23. 14:31
Hasznos számodra ez a válasz?
 12/14 anonim ***** válasza:

"Egyébként ahhoz neked nem kell ciklus, hogy eldöntsd, hogy egész-e a négyzetgyöke."

"Amúgy igen, meg lehet ciklus nélkül is csinálni egy pici trükközéssel, de a ciklus használata nevezhetőa legkézenfekvőbb megközelítésnek. Nem veszít vele sok időt, a gyökkeresés N függvényében logaritmikus."


Ciklus van az sqrt implementációjában is. Ha már futási idő elemzést csinálunk, akkor ebben a formában N függvényében lineáris idejű, ha végigmegy N-ig, vagy N/2-ig. Ha megállna ha a ciklusváltozó négyzete pont N vagy ha ilyen nincs és túlment rajta akkor lenne gyökös idejű.

Ha sqrt-vel csinálja az logaritmikus idejű (ordóba).

De rég foglalkoztam már a jó öreg c-vel ...

Én megoldásom : [link]


"Ha olyan hiperhatékony akarok lenni, akkor egyetlen egyszer kipörgetem az összes ábrázolható (vagy szóba jövő) négyzetszámot egy böhöm vektorba, és B-fában tárolom. :)"


Nem biztos hogy olyan "hiperhatékony" lenne az, csak bizonyos premisszák esetében.

Ha gyakorlati szempontból vizsgálom a futási időt, akkor figyelembe veszem hogy hányszor használja. Ha kevésszer akkor nem feltétlen térül meg az az plusz idő ami idő alatt legenerálni az összes szóba jöhető négyzetszámot és berakni egy B fába. Továbbá mindig be kell olvasni futtatás kezdetekkor ami plusz overhead ... Nem beszélve arról ha olyan prog. nyelv lenne ahol szinte bármekkora lehet egy integer, gyakorlatilag fizikai korlát ami a korlátozó tényező, na ott próbáld legenerálni az összes négyzetszámot és tárolni is.

2018. szept. 24. 14:54
Hasznos számodra ez a válasz?
 13/14 anonim ***** válasza:

Elszoktam a c buta primitív számkezelésétől. Egy korrekció.

Túlcsordulás miatti védelem ha 32 bites az int az aktuálisan lefordított kódban: [link]

2018. szept. 24. 15:38
Hasznos számodra ez a válasz?
 14/14 anonim ***** válasza:

Hülye vagyok.

Erről beszéltem : [link]

2018. szept. 24. 15:42
Hasznos számodra ez a válasz?
1 2

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

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!