Pereiti prie turinio

Pascal reikia pagalbos


Rekomenduojami pranešimai

Per Informatika nesimokom programuoti.Labiau Word ir Excel.

Siais metais planuoju laikyti informatikos egzamina.Mokausi Pascal savarankiskai uztat kyla tiek daug klausymu.

 

Uzdavinys

 

rasti "Masyvo" elementa turinti daugiausiai dalikliu

 

Gal galite paaiskinti ka darau blogai

Aciu uz pagalba.

 

program Masyvai_p;

var
   M : array[1..6] of integer;
   i, j, d, ds, kd : integer;

begin

 writeln('Iveskite masyvo elementus');

 for i := 1 to 6 do

 read(M[i]);

 ds := 1;       // ds - daugiausia dalikliu

 d  := M[i];

 kd := 1;  // kd - kiek dalikliu

 for j := 2 to M[i] do

 if M[i] mod j = 0

 then kd := kd + 1;

 if kd > ds

 then begin

      d := M[i];

      ds := kd;

      end;

 writeln('d = ', d);

 writeln('ds = ', ds);

 Readln;

end.




Nuoroda į pranešimą
Dalintis kituose puslapiuose

Biški sunku buvo skaityti Tavo kodą, tai nesivarginau ieškoti klaidos :). Man atrodo šitas turėtų veikti (bet neturiu galimybės ištestuoti).

{ dalikliuSkaicius1 ir dalikliuSkaicius2 yra sukurti lyginimui cikle su prieš tai buvusiu. ats - tai masyvo elementas, turintis daugiausią daliklių. Šio kodo efektyvumas ne koks, nes neatsižvelgiama, kad kiekvienas skaičius dalijasi iš 1 ir iš savęs, bet taip gražiau atrodo}
dalikliuSkaicius1 := 0;
ats := 0;
for i := 1 to 6 do //einam per visus masyvo elementus
begin  
 dalikliuSkaicius2 := 0;
 for j := 1 to M[i] do // einam per visus daliklius nuo 1 iki savęs pačio:
 begin
   if ((M[i] mod j) = 0) then dalikliuSkaicius2 := dalikliuSkaicius2 + 1;
 end;
 if (dalikliuSkaicius2 > dalikliuSkaicius1) then
 begin
   ats := M[i];
   dalikliuSkaicius1 := dalikliuSkaicius2;
 end;
end;
writeln(ats);

Redagavo gretutes
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai juk papostinau, ar testavai? Algoritmas manau teisingas.

 

Greta kai ivedu 6 elementus pvz 4 36 1 2 4 5

man programa rodo kad daugiausiai dalikliu turi 5 bet turetu buti skaicius 36 turintis 9 daliklius

 

program Masyvai_o_n;

var M : array[1..6] of integer;
   i, j, ds1, ds2, ats : integer;

begin

 writeln('Iveskite masyvo elementus');

 ds2 := 0;

 ats := 0;

 for i := 1 to 6 do

 begin

 read(M[i]);

 ds1 := 0;

 for j := 1 to M[i] do

 begin

 if ((M[i]) mod j = 0) then ds2 := ds2 + 1;

 end;

 if (ds2 > ds1) then ats := M[i];

 ds1 := ds2;

 end;

 writeln(ats);

 Readln;
end.

Redagavo crystalforest
Nuoroda į pranešimą
Dalintis kituose puslapiuose
program trololo;
const ARRSIZE = 6;

function dalikliusk(n : integer) : integer;
var
i : integer;
begin
dalikliusk := 0;
       if n = 0 then
               exit;
       { Jeigu n < 0, tai gali buti negerai }
       n := abs(n);
for i := n downto 1 do
begin
	if n mod i = 0 then
		inc(dalikliusk);
end;
end;

var
arr : array[1..ARRSIZE] of integer;
i, max : integer;

begin
arr[1] := 4;
arr[2] := 36;
arr[3] := 1;
arr[4] := 2;
arr[5] := 4;
arr[6] := 5;

max := 0;

for i := 1 to ARRSIZE do
begin
	if dalikliusk(arr[i]) >= dalikliusk(max) then
		max := arr[i];
end;

writeln(max);
end.

Redagavo kashiukas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

parašiau :)

 

program masyvai;
   var Mas : array[1..4] of longint;
   i,ii,y,didz_ats,didz_sk,ats : longint;
begin
 //apsirasai kintamuosius
 for y:=1 to 4 do
 begin
   Write('Áveskite ',y,' kintamojo reikðmæ: '); Readln(mas[y]);
 end;
 //tikrini kiekviena kitamàjá
 for i:=1 to 4 do
 begin
   //tikrini kiek turi dalikliu
   for ii:=1 to Mas[i] do
   begin
       if mas[i] mod ii = 0 then
       ats := ats+1;
   end;
   //gráþti prie atsakymo
   Writeln(Mas[i],' turi ',ats,' daliklius.');
   //tikrini ar naujas skaicius yra didesnis uz turima
   if ats > didz_ats then
   begin
    didz_ats := ats;
    didz_sk := mas[i];
   end;
    //vel pasidarai atsakyma 0
    ats := 0;
 end;
 Writeln('Daugiausiai dalikliø turi skaièius: ',didz_sk,' rasta: ',didz_ats);
 Readln;
end.

 

Norėjau dar įdėt kad kiek nori apsirašyt kintamųjų, bet nemoku nustatyt array[1..skaicius]. gal kas pamokins prie to pačio? :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ištestavau:

program HelloWorld;

var
   M : array[1..6] of integer;
   i, j, dalikliuSkaicius1, dalikliuSkaicius2, ats, ds : integer;


begin
 writeln('Hello World');
 writeln('Iveskite 6 skaicius:');
 for i := 1 to 6 do
 begin
   readln(M[i]);
 end;

{ dalikliuSkaicius1 ir dalikliuSkaicius2 yra sukurti lyginimui cikle su prieš tai buvusiu. ats - tai masyvo elementas, turintis daugiausią daliklių. Šio kodo efektyvumas ne koks, nes neatsižvelgiama, kad kiekvienas skaičius dalijasi iš 1 ir iš savęs, bet taip gražiau atrodo}
dalikliuSkaicius1 := 0;
ats := 0;
for i := 1 to 6 do //einam per visus masyvo elementus
begin  
 dalikliuSkaicius2 := 0;
 for j := 1 to M[i] do // einam per visus daliklius nuo 1 iki savęs pačio:
 begin
   if ((M[i] mod j) = 0) then dalikliuSkaicius2 := dalikliuSkaicius2 + 1;
 end;
 if (dalikliuSkaicius2 > dalikliuSkaicius1) then
 begin
   ats := M[i]; ds := dalikliuSkaicius2; 
   dalikliuSkaicius1 := dalikliuSkaicius2;
 end;
end;
writeln('Atsakymas yra:');
writeln(ats);

writeln('Daliklius skaicius:');
writeln(ds);

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.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

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