Pereiti prie turinio

Padekit ispresti sias paskalio uzduotis


Rekomenduojami pranešimai

Nelabai ikertu taigi jei kazkiek sugebesit tai bent viena padekit ispresti. Aciu

1. Tobuluoju skaičiu vadinams natūralusis skaičius, lygus visų savo daliklių, mažesnių už jį patį, sumai. Pvz.: 28 = 1 + 2 + 4 + 7 + 14.

Sudarykite programą, kuri patikrintų, ar duotas skaičius yra tobulas.

 

2. Natūralųjį skaičių parašius atbulai, gali atsitikti, kad mažesnysis skaičius bus didesniojo daliklis. Pvz.: 2178 yra 8712 daliklis.

Parašykite programą, patikrinančią, ar duotas skaičius turi tokią savybę.

 

3. Kiekvieną sudėtinį skaičių galima išskaidyti pirminių skaičių sandauga. Pvz.: 20=2*2*5. Išskaidykite duotą sudėtinį skaičių N pirminių skaičių sandauga.

 

4. Duotas natūralus skaičius n. Sudarykite programą, kuri surastų skaičių, gautą iš pradinio skaičiaus, prieš jį prirašius veidrodiškai atspindėtus skaitmenis. Pvz.: n = 123, tai atsakymas 321123.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Visos programos nerasysiu, parasysiu tik esme arba kaip skaiciuoti.

 

2. Natūralųjį skaičių parašius atbulai, gali atsitikti, kad mažesnysis skaičius bus didesniojo daliklis. Pvz.: 2178 yra 8712 daliklis.

Parašykite programą, patikrinančią, ar duotas skaičius turi tokią savybę.

 

 

Reikia duota skaiciu pasirasyti atbulai, pagal pavyzdi butu: 8*1000+7*100+1*10+2*1

 

Tada salyginis sakinys, kuris tikrina ar duotas skaicius dalijasi is gauto be liekanos:

 

If duotas skaicius mod gautas skaicius = 0

 

then yra daliklis

 

else nera daliklis;

 

 

 

 

4. Duotas natūralus skaičius n. Sudarykite programą, kuri surastų skaičių, gautą iš pradinio skaičiaus, prieš jį prirašius veidrodiškai atspindėtus skaitmenis. Pvz.: n = 123, tai atsakymas 321123.

 

Cia labai panasi į antrą programą. Isvesti abu skaicius be jokio tarpo ir gausis taip :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose
Visos programos nerasysiu, parasysiu tik esme arba kaip skaiciuoti.

 

 

 

 

Reikia duota skaiciu pasirasyti atbulai, pagal pavyzdi butu: 8*1000+7*100+1*10+2*1

 

Tada salyginis sakinys, kuris tikrina ar duotas skaicius dalijasi is gauto be liekanos:

 

If duotas skaicius mod gautas skaicius = 0

 

then yra daliklis

 

else nera daliklis;

 

 

 

 

 

 

Cia labai panasi į antrą programą. Isvesti abu skaicius be jokio tarpo ir gausis taip :)

 

Aciu labai

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kadangi su pascal'iu neprogramuoju, gali būti sintaksės klaidų, bet pati logika puikiai veikia C#. Aišku, vis tiek bandžiau parašyti pascal'iu. :D

Mano siūlomas sprendimas būtų be rekursijos panaudojant keletą while ciklų:

program pirminiuskaiciusandauga;
Type
TA = array of integer; {mums reikalingas dinaminis masyvas,
						nes nezinome kiek skaiciu
						gali sudaryti atsakyma, didziausia galima skaiciu zinosime
						po to, kai vartotojas ives skaiciu skaiciavimui}
var
i : integer;
pirminiuskaiciumasyvas : TA;
ivestasskaicius : integer; {vartotojo ivestas skaicius}
darbinisskaicius : integer; {skaicius, kuri mazinsime iki tol, kol jis taps lygus vienetui} 
skaiciavimupabaiga : integer; {gali buti ir Boolean tipo, reikalingas, kad zinotume, ar dar vykdyti cikla}
daliklis : integer; {skaicius, kuri naudosime daliklio radimui}
indeksas : integer; {skaicius tam, kad zinotume, kiek i rezultatu masyva jau iraseme reiksmiu}
begin
readln(ivestasskaicius);
SetLength(pirminiuskaiciumasyvas, ivestasskaicius); {nustatome maksimalu galima rezultatu masyvo ilgi}
darbinisskaicius:=ivestasskaicius;
skaiciavimupabaiga:=0; {kai darbinisskaicius taps vienu, sia reiksme pakeisim i 1. Cia galima naudoti taip pat true ir false}
daliklis:=2; {ieskomas daliklis. Cia neatsizvelgiama i atveji, jei vartotojas ives skaiciu 1, reiketu papildomo tikrinimo}
indeksas:=0;
while pabaiga <> 1 do
	begin
		daliklis=2;
		while darbinisskaicius mod daliklis <> 0 do
			begin
				daliklis:=daliklis+1;
			end;
		pirminiuskaiciumasyvas[indeksas]:=daliklis;
		indeksas:=indeksas+1;
		darbinisskaicius:=darbinisskaicius/daliklis;
		if darbinisskaicius = 1
			pabaiga:=1;
	end;
write('jusu ivestas skaicius ', ivestasskaicius);
writeln(' issiskaido i pirminius skaicius:');
i:=0;
while i < indeksas {cia galima naudoti ir for - maziau kodo butu}
	begin
		writeln(pirminiuskaiciumasyvas[indeksas]);
		i:=i+1;
	end;
readln; {sito nezinau, ar reikia}
end.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Rekursijos prisiminimui :D pasprendziau :D

program Noname46;
type Tpirm= array of integer;
var ind:integer;  //Kiek radom pirminiu skaiciu
{-----------PIRMINIAI-----------------}
function pirminai_sk(sk:integer):Tpirm;
var i, i2 : integer;
 pirm : boolean;
begin
setlength(pirminai_sk,sk);
ind := 1;
for i := 2 to sk do
  begin
  pirm := true;
  for i2 := 2 to  i-1 do
 if i mod i2 = 0 then pirm := false;
  if pirm then
 begin
 pirminai_sk[ind] := i;
 ind := ind + 1;
 end;
end;
ind := ind - 1;
end;
{-----------PIRMINIAI-----------------}
{-----------KINTAMIEJI----------------}
type TSand = array [1..100] of integer;
var pirm_sk: Tpirm;	 //Pirminiai skaiciai
skaicius,		   //Skaicius kuri turime gauti sudaugine
n,N2,			   //Kelis skaitmenis reikia sudauginti
i:integer;
sandaugos,ats : TSand;
{-----------KINTAMIEJI----------------}
{----------DAUGINIMAS-----------------}
procedure dauginimas (N, skaicius : integer; pirminiai:TPirm; sandaugos : TSand);
var i,i2,san : integer;
begin
if N > 0 then
  begin
  for i:=1 to ind do
 begin
 sandaugos[n] := i;
 dauginimas(n-1,skaicius,pirminiai,sandaugos);
 end;
  end;
san :=1;
for i2:=1 to n2 do
 san:=san * pirminiai[sandaugos[i2]];
 if san = skaicius then  ats := sandaugos;
end;
{----------DAUGINIMAS-----------------}
begin
 readln(skaicius);  //Koki skaiciu turime gauti
 readln(n);		 //kelis skaicius dauginsime
 N2 := N;		   //atsarginis kintamasis (reikalingas dauginimas() procedurai
 pirm_sk := pirminai_sk(skaicius);   //Randame visus pirminius skaicius iki pasirinkto skaiciaus
 dauginimas(n,skaicius,pirm_sk,sandaugos);

 for i:=1 to N do
 write(pirm_sk[ats[i]],'  ');

 Readln;
end.

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.

×
×
  • Sukurti naują...

Svarbi informacija

Informuojame, kad šiame puslapyje naudojami slapukai (angl. cookies). Sutikdami, paspauskite mygtuką „Sutinku“ arba naršykite toliau. Savo duotą sutikimą bet kada galėsite atšaukti pakeisdami savo interneto naršyklės nustatymus ir ištrindami įrašytus slapukus.