Pereiti prie turinio

FPS 3 uždaviniai


Rekomenduojami pranešimai

Sveiki, būtų šaunu jei atsirastų žmonių kurie galėtų padėti man.

 

Turiu tokią problemą reikia suprogramuoti 4 uždavinukus, bet bėda tame, kad aš nebuvau mokykloje 1 savaitę ir praleidau pora pamokų, tad neišmokai pora temų, 1 uždavinį šiaip netaip suprogramavau tad beliko kiti 3

 

 

1. Yra tokių įdomių naturaliūjų skaičių kurie lygūs savo skaitmenų kubu sumai pvz: 370 33+73+03=370. Reikia sudaryti programą jiems rasti, ir kiek jų yra? tik triženkliai skaičiai.

 

2. Reikia rasti skaičių kurie tenkitų ligybę (a+b+c+d)4=abcd. Kiek jų turi būti?

 

3.Į banką nunešiau k pinigų. Bankas teikia palūkanų normą p procentų. Ar per x metų mano indėlis padvigubės?

Redagavo zigmasas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

1 uzdavinys:

program Bevarde3;
type masyvas=array[1..999] of integer;
var i, x, y, t, s, kiekis : integer;
M : masyvas;
begin
kiekis:=0;
WriteLn('Idomus skaiciai');
for i:=1 to 999 do begin
s:=i;
while s > 0 do begin
t:=s mod 10;
x:=x + t * t * t;
s:=s div 10;
end;
if x = i then begin
	kiekis:=kiekis + 1;
	M[kiekis]:=i;
end;
x:=0;

end;
WriteLn('Tokie skaiciai: ');
for i:=1 to kiekis do
WriteLn(M[i]);
WriteLn('Is viso tokius skaiciu: ', kiekis);
ReadLn;
end.

Analogiska antras uzdavinys:

program Bevarde3;
type masyvas=array[1..999] of integer;
var i, x, y, t, s, kiekis : integer;
M : masyvas;
begin
kiekis:=0;
WriteLn('Idomus skaiciai');
for i:=100 to 9999 do begin
s:=i;
while s > 0 do begin
t:=s mod 10;
x:=x + t;
s:=s div 10;
end;
if (x * x * x * x) = i then begin
	kiekis:=kiekis + 1;
	M[kiekis]:=i;
end;
x:=0;

end;
WriteLn('Tokie skaiciai: ');
for i:=1 to kiekis do
WriteLn(M[i]);
WriteLn('Is viso tokius skaiciu: ', kiekis);
ReadLn;
end.

Jei netingesiu isspresiu ir 3, gan lengvas pamastyk ir pats :)

Redagavo night1
Nuoroda į pranešimą
Dalintis kituose puslapiuose
1 uzdavinys:

program Bevarde3;
type masyvas=array[1..999] of integer;
var i, x, y, t, s, kiekis : integer;
M : masyvas;
begin
kiekis:=0;
WriteLn('Idomus skaiciai');
for i:=1 to 999 do begin
s:=i;
while s > 0 do begin
t:=s mod 10;
x:=x + t * t * t;
s:=s div 10;
end;
if x = i then begin
	kiekis:=kiekis + 1;
	M[kiekis]:=i;
end;
x:=0;

end;
WriteLn('Tokie skaiciai: ');
for i:=1 to kiekis do
WriteLn(M[i]);
WriteLn('Is viso tokius skaiciu: ', kiekis);
ReadLn;
end.

Analogiska antras uzdavinys:

program Bevarde3;
type masyvas=array[1..999] of integer;
var i, x, y, t, s, kiekis : integer;
M : masyvas;
begin
kiekis:=0;
WriteLn('Idomus skaiciai');
for i:=100 to 9999 do begin
s:=i;
while s > 0 do begin
t:=s mod 10;
x:=x + t;
s:=s div 10;
end;
if (x * x * x * x) = i then begin
	kiekis:=kiekis + 1;
	M[kiekis]:=i;
end;
x:=0;

end;
WriteLn('Tokie skaiciai: ');
for i:=1 to kiekis do
WriteLn(M[i]);
WriteLn('Is viso tokius skaiciu: ', kiekis);
ReadLn;
end.

Jei netingesiu isspresiu ir 3, gan lengvas pamastyk ir pats :)

Jei jau spausdint tuos skaičius, tai šiuose uždavinuose geriau iškart if'e spausdint, nes manau masyvų dar tikrai neėjo ir efektyviau negu įrašinėt ir poto imti iš masyvo vėl :).

Redagavo oxopo
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Čia trečias. Jei sąlygą teisingai supratau. :) Mokamos paprastosios palūkanos, kas vieni metai.

program Bevardė14;
var sum,k,p:real;
i,x:integer;
begin
Readln(k);
Readln(p);
Readln(x);
sum:=k;
for i:=1 to x do
 sum:=sum+k*p/100;
if sum>=2*k then
  Writeln('Dvigubės')
 else
  Writeln('Nedvigubės');
Readln;
end.

 

EDIT:

oxopo teisingai sąko, reik optimizuot programą, o ne į tiesiai per aplinkui važiuot. :)

Pirmasis.

program Bevardė15;
uses math;
var i,s,z:longint;
sk:real;
begin
 for i:=100 to 999 do
  begin
s:=i;
while s>0 do
 begin
  sk:=sk+power((s mod 10),3);
  s:=s div 10;
 end;
if sk=i then
 begin
  Writeln(i);
  inc(z);
 end;
sk:=0;
  end;
 Writeln('Išviso tokių skaičių:',z);
 Readln;
end.

Antrasis. Nors sąlygą iš pradžių šiek tiek suklaidino, manyčiau taip:

program Bevardė18;
var i,s,sk,a:longint;
begin
 for i:=1000 to 9000 do
  begin
s:=i;
sk:=0;
while s>0 do
 begin
  sk:=sk+s mod 10;
  s:= s div 10;
 end;
if sk*sk*sk*sk=i then
 begin
  Writeln(i);
  inc(a);
 end;
 end;
 WriteLn('Išviso tokių skaičių:',a);
 Readln;
end.

Redagavo PixeLz
Nuoroda į pranešimą
Dalintis kituose puslapiuose
O kaip reikėtų padaryti 1,2 programas naudojant tik (if ir for)?

 

Kadangi žinom, kad pirmam skaičius triženklis, o antram keturženklis tai tiesiog pakeisk while ciklus į for.:

1.

while s>0 do
begin
  sk:=sk+power((s mod 10),3);
  s:=s div 10;
end;

Pakeisk į

for a:=1 to 3 do
 begin
  sk:=sk+power((s mod 10),3);
  s:=s div 10;
 end;

 

2.

while s>0 do
 begin
  sk:=sk+s mod 10;
  s:= s div 10;
 end;

Pakeisk į

for z:=1 to 4 do
  begin
   sk:=sk+s mod 10;
   s:=s div 10;
  end;

Ir nepamiršk pridėt papildomus kintamuosius. :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...