Kérjünk be egy egész számot a felhasználótól. Adjuk meg a szám 5-tel vett osztási maradékát a % operátor használata nélkül?
Nyelvtől függetlenül:
Fogsz egy elöltesztelős ciklust (while általában).
Ennek a feltétele az, hogy a bekért szám (legyen X) nagyobb vagy egyenlő, mint 5.
A ciklus belsejében pedig annyit csinálsz, hogy az X-ből kivonsz 5-öt.
Ha vége a ciklusnak (azaz ha már nem teljesül a feltétel), akkor az X-ben lesz az osztási maradék.
Arra viszont figyelj, hogy negatív szám esetén máshogy kell csinálni. Azt hiszem, így:
- feltétel: -5 -nél kisebb vagy egyenlő
- ciklus mag: X-hez hozzáadsz 5-öt
---
Ezt megoldhatod így szebben is:
X: bekért szám
M: maradék
Elágazás: ha X < 0, akkor M := -X (értékadás!)
különben: M := X
Ciklus: amíg M >= 5, addig M := M - 5
Elágazás: ha X < 0, akkor M := -M
Kiíratod M-et, ez a maradék.
Mivel % operátort használ, így valamilyen C variáns nyelv lesz. Az iskolákban most nagyon szeretik a C# nyelvet, így:
--------------------------------------
using System;
namespace oszt5
{
class Program
{
public static void Main(string[] args)
{
int szam,maradek;
Console.WriteLine("Kérek egy egész számot: ");
szam=int.Parse(Console.ReadLine());
maradek=szam;
while (maradek>4) maradek-=5;
Console.WriteLine();
Console.WriteLine("Maradék a % operátorral: "+szam%5);
Console.WriteLine("Maradék a % operátor nélkül: "+maradek);
Console.WriteLine();
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
-----------------------------------
:-)
Milyen szemetek ezek a tanárok, egyszer csak dogát iratnak valamiből, amit le sem adtak! Nekik ugye az a jó, ha a diákjaik sorra megbuknak, ugye?
Ez bizony pont olyan jegy lesz, amit egy nemtörődöm alak érdemel. Majd jövőre jobban odafigyelsz erre a tárgya is...
A visszaszámolós megoldás eddig a legjobb, de...
Mi van ha a megadott szám negatív?
#4, #8: A -1-gyel való szorzás helytelen, mivel pl. -1-nek az 5-ös maradéka 4 és nem pedig 1.
Egy hatékonyabb módszer:
a % b = a - floor(a / b) * b
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!