Pascal. Osztható e egy szám 3-mal?
Ez ugyan egyszerű, de vannak megkötések:
A számnak 3 vagy több jegyűnek kell lennie.
És a programhoz a 3-mal oszthatósági szabályt kell alkalmazni, tehát egy bekért szám számjegyeinek összegét kell elosztani 3-mal, nem maga a számot. Sikerült is, viszont csak 4 számjegyig működőképes. Ötlet, mivel tudnám bármennyi számjegyű számról megállapítani?
Jelenleg itt tartok:
program project1;
uses crt;
var j,k,l,m,i:longint;
begin
Writeln('Kerem a szamot');
readln(i);
if i < 99 then begin
writeln('A szam kisebb 100-nal!');
readln;
halt;
end;
j:=i mod 10;
i:=i div 10;
k:=i mod 10;
i:=i div 10;
l:=i mod 10;
i:=i div 10;
m:=i mod 10;
if ((j+k+l+m) mod 3)=0 then writeln ('A szam oszthato 3-mal')
else writeln ('A szam NEM oszthato 3-mal');
readln;
end.
pl.
for f:=1 to n
n helyére egy a bekért szám számjegyeinek a darab száma kellene hogy legyen
de hogyan számolom meg hány számjegy van? vagy menjen el 1 től 100 ig oszt csőh, max fölösbe fut egy picit?
meg nem is nagyon értem hogy mit és hogy kellene ciklusba rakni
x legyen a szám. Csináld addig, amíg x nem egyjegyű: x értéke legyen a számjegyeinek összege.
Ha végzett a ciklus nézd meg, hogy x 3-e, 6-e, 9-e. Így gyakorlatilag csak összeadás, és összehasonlítás műveleteket használsz.
Erre a legegyszerűbb módszer:
-Jegyzed meg a szám utolsó számjegyét (ami gyakorlatilag a tizes maradék)
-Ezt a számjegyet hagyd el a számból (tízzel osztás)
-Ismételd addig, amíg a számod nem nulla.
Tengor ötletét sikerült megcsinálnom:
program harom;
uses crt;
var j,k,l,m,i:longint;
begin
Writeln('Kerem a szamot');
readln(i);
if i < 99 then begin
writeln('A szam kisebb 100-nal!');
readln;
halt;
end;
repeat
i:=i div 10;
until i<10 ;
if i=9 then writeln('A szam oszthato 3-mal!')
else if i=6 then writeln('A szam oszthato 3-mal!')
else if i=3 then writeln('A szam oszthato 3-mal!')
else writeln('A szam NEM oszthato 3-mal!');
readln;
end.
viszont ez nem az oszhatósági szabályt használja, muszály lenne a számjegyek összegét megszereznem.
Megpróbálom Wampa ötletét is.
Régen tanultam a pascalt, remélem, hogy még nem kopott meg a tudásom:
Program feladat1;
var szam: longint;
var osszeg: integer;
begin
write('szam: ');
Readln(szam);
osszeg := 0;
if(szam div 100 <> 0) then begin
while(szam <> 0) do begin
osszeg := osszeg + szam mod 10;
szam := szam div 10;
end;
writeln('a szamjegyek osszege: ', osszeg);
if(osszeg mod 3 = 0) then
writeln('oszthato 3-al')
else
writeln('nem oszthato 3-al');
end else
writeln('nincs argumentum');
readln();
end.
Köszönöm Wampa!!!
Így sikerült! :)
Itt a végeredmény:
program harom3;
uses crt;
var k,i:longint;
begin
Writeln('Kerem a szamot');
readln(i);
if i < 99 then begin
writeln('A szam kisebb 100-nal!');
readln;
halt;
end;
k:=0;
repeat
k:=k+(i mod 10);
i:=i div 10;
until i<1;
writeln(k);
if (k mod 3)=0 then writeln('A szam oszthato 3-mal!')
else writeln('A szam NEM oszthato 3-mal!');
readln;
end.
hjam1029
Neked is köszi, hasonlót dobtál össze mint én, de elkéstél ;)
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!