Az első húsz kész
Készen van az első 20 feladat programozásból. Ezek inkább azért lettek kitalálva, hogy az ember kitapasztalja a programozói környezetet, minthogy valami hasznuk lett volna. Itt van mindjárt a huszadik (utolsó) feladat, amelyben az adott szám utáni legkisebb négyzetszámot kell megadni. Kezdjünk mindjárt egy while ciklussal, ahol mindig eggyel növeljük a bekért szám értékét. A ciklus addig fut, ameddig nem találunk négyzetszámot, ezt a talalt változó figyeli. Vegyük észre, hogy a négyzetszámoknak páratlan számú osztójuk van, és ha páratlan számú osztót talál, kilép a ciklusból, és kiírja a végeredményt. Ha a darab kettővel osztott maradéka 0, akkor megtaláltuk a legkisebb négyzetszámot. Nem tudom, miért, de működik. Nem vagyok jó programozó. A legnagyobb programozási teljesítményem a Halál a pszichiátrián volt. A módszerem: addig próbálgatom, míg a program helyes eredményt nem ad. Sajnos, fingom sincs a mögötte álló matematikáról, ezek a programok inkább próbálkozásból és ráérzésből születnek. Sőt, mire a végére értem a 20 feladatnak, fogalmam sincs már az elsőkről. Szerencsére, vizsgára lehet vinni a laptopot, és állítólag, ha megcsináltuk a feladatokat, abból össze lehet barkácsolni a vizsgakérdéseket is. Vagyis az azokra adott megoldásokat. Hát, remélem.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int j, szam, talalt, darab;
printf("Kerek egy egesz szamot: ");
scanf("%d", &szam);
talalt=0;
while (talalt==0)
{szam=szam+1;
darab=0;
for (j=1;j<szam;j++)
if (szam%j==0) darab++;
if (darab % 2 == 0) talalt=1;
}
printf("A hozza legkozelebb eso negyzetszam: %d", szam);
return 0;
}
Ide kívánkozik a 19-es is: 100-tól ezerig írassuk ki, amelyiknek a középső számjegye kisebb, mint az első számjegy. Végülis egy ciklust futtatunk 1000-ig, és ha a szám századrésze nagyobb, mint százzal osztva a maradék osztva 10-zel, akkor írassuk ki a számot. Egy for ciklus és egy elágazás. Hamar rájöttem. Itt azt kell észrevenni, hogy a számot százzal osztva evész a maradék az egész számok halmazán, tehát 888-at 100-zal osztva 8-at kapunk. 100-al osztva a maradék a tízesek helyiértékét adja meg, és ha ezt is leosztjuk 10-zel, megkapjuk magát a számjegyet. A 2-t összehasonlítjuk, és ha az első nagyobb, kiíratjuk.
#include <stdio.h>
#include <stdlib.h>
int main()
{ int i;
for (i=100;i<1000;i++)
if (i / 100 > i % 100 / 10) printf("%d, ", i);
return 0;
}
Deprecated: mb_strrpos(): Passing the encoding as third parameter is deprecated. Use an explicit zero offset in /home/yesokhu/madinhungary.org/inc/_ext/_url_rel2abs.php on line 157