Pereiti prie turinio

Rekomenduojami pranešimai

Sveiki,

 

kadangi informatikos pamokose esu "kiečiausias" iš savo klasiokų/klasiokių tai vis gaunu papildomo darbo.

 

Šį kartą gavau uždavinį kurio manau be masyvu padaryti neįmanoma, o gal klystu?

 

Klaviatūra įvedami natūralieji skaičiai (įvedimo pabaiga sk. 0) Parašyti programą, kuri atspausdintų
kiekvieno skaičiaus skaitmenų sumą;
nelyginių skaičiaus skaitmenų kvadratų sumą;
tik tuos skaičius, kurie sudaryti iš lyginių skaitmenų;
tik tuos skaičius, kurių didžiausias skaitmuo didesnis už skaičiaus skaitmenų sumą be jo;
skaičius perrašytus atbulai;

 

Jei čia reikia masyvo, o manau reikia, tai gal kas trumpai ir aiškiai pasakys kaip jie naudojami? (nesimokem dar).

 

( nereikia pradėti aiškinti eik i google ir susirask, tai puikiai moku, ir visada tuo naudojuosi, tiesiog kartais žmogus gali viską paaiškinti vienu sakiniu, ir nereikia skaityti, ieškoti info keliasdešimt minučių :) )

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nebūtinas čia masyvas, įvedimo sąkinį daryk while cikle ir vygdyk kol įves 0 :)

Oj apsirikau, perbėgau tik akim, reik masyvo, tuoj pasakysiu paprastai kaip jį naudot :D

 

masyvą aprašai pvz taip:

var mas : array[1..100] of integer;

masyvui kažką priskirti gali paprasčiausiai taip mas[1]:=5; mas[2]:=5; <...> mas[n]:=5;

Na jei esi naudojęs masyvą kitoj programavimo kalboj suprasi. :)

Redagavo hypre
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki,

 

kadangi informatikos pamokose esu "kiečiausias" iš savo klasiokų/klasiokių tai vis gaunu papildomo darbo.

 

Šį kartą gavau uždavinį kurio manau be masyvu padaryti neįmanoma, o gal klystu?

 

Klaviatūra įvedami natūralieji skaičiai (įvedimo pabaiga sk. 0) Parašyti programą, kuri atspausdintų
kiekvieno skaičiaus skaitmenų sumą;
nelyginių skaičiaus skaitmenų kvadratų sumą;
tik tuos skaičius, kurie sudaryti iš lyginių skaitmenų;
tik tuos skaičius, kurių didžiausias skaitmuo didesnis už skaičiaus skaitmenų sumą be jo;
skaičius perrašytus atbulai;

 

Jei čia reikia masyvo, o manau reikia, tai gal kas trumpai ir aiškiai pasakys kaip jie naudojami? (nesimokem dar).

 

( nereikia pradėti aiškinti eik i google ir susirask, tai puikiai moku, ir visada tuo naudojuosi, tiesiog kartais žmogus gali viską paaiškinti vienu sakiniu, ir nereikia skaityti, ieškoti info keliasdešimt minučių :) )

 

Čia galima naudoti masyvą arba linked list`ą. Pirmas variantas žymiai paprastesnis. Kas dėl masyvo - trumpai tariant tai yra tam tikro ilgio (šį nurodai kurdamas masyvą) blokas atmintyje, talpinantis (Paskalyje) vieno tipo kintamuosius. Kiekvieną iš masyvo elementų galima pasiekti nurodant masyvo vardą ir kintamojo numerį laužtiniuose skliaustuose. Pvz.: "masyvas[5]". Prilyginti: "masyvas[5] := kintamasis". Jei reikia nuskaityti daug skaičių principas būtų toks: pasileidi ciklą, kuris baigiasi įvedus 0. Kiekvienoje ciklo iteracijoje priskiri įvestą reikšmę masyvo elementui. Tai atrodytų taip: "masyvas := ivestis". Kintamasis i šiuo atveju būtų didinamas sulig kiekviena iteracija ir naudojamas priskirti įvestą reikšmę vis "tolesniam" masyvo elementui.

Redagavo aKi
Nuoroda į pranešimą
Dalintis kituose puslapiuose

aKi ir hypre labai ačiū, viska supratau, kažkaip panašiai ir galvojau daryti.

 

Tik dabar keli klausimėliai su užduoties formuluote.

 

kiekvieno skaičiaus skaitmenų sumą; - Na kaip suprantu jei kokie 89 , tai 17. Jei 4 , tai 4. ir t.t

nelyginių skaičiaus skaitmenų kvadratų sumą; - nesupratau šito išviso.

 

tik tuos skaičius, kurie sudaryti iš lyginių skaitmenų; - Čia kaip suprantu 28, 44 , 82 ir t.t

 

tik tuos skaičius, kurių didžiausias skaitmuo didesnis už skaičiaus skaitmenų sumą be jo; - čia kaip suprantu be tryženklio skaičio nk nebus? Jei 379 tai, 9 už 10 nėra didesnis, jei 349 , tai 9 yra didesnis už 7 ir spausdini. O jei 27? tai niekada ir nesigaus? nes 2 nebus didesnis už 7. visais atvejais ir su kitais skaičiais.

 

skaičius perrašytus atbulai; - Viskas aišku.

Redagavo I-Tech
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Parrašiau viską atrodo ką reikia.Siūlau pačiam daryt ir nežiūrėt,nebent jau visai nesigautų.

P.S Dariau be masyvų,nes pasirodė,kad autorius dar nemoka jų.

 

program Skaitmenys;
 var a:integer;
//----------------------------------------------------------------------
// Kiekvieno skaiciaus skaitmenu suma
//----------------------------------------------------------------------
Procedure SkaiciuSuma(sk:integer);
 var Suma:integer;
Begin
suma:=0;
While sk<>0 do
 Begin
   if sk<10 then
   Begin
     suma:=suma+sk;
     writeln(Suma);
     Sk:=0;
   end else
   Begin
     Suma:=Suma+sk mod 10;
     sk:=sk div 10;
   end;
 end;
end;
//----------------------------------------------------------------------
// Isvedimas nelyginio skaiciaus skaitmenu sumos kvadratai
//----------------------------------------------------------------------
Procedure NelyginiuSkaiciuSkaitmenuKvadratai(Sk:integer);
 var pap,Suma:integer;
Begin
suma:=0;
While sk<>0 do
 Begin
   if sk<10 then
   Begin
     suma:=suma+sk*sk;
     write(Suma);
     sk:=0;
   end else
   Begin
     pap:=sk mod 10;
     suma:=suma+pap*pap;
     sk:=sk div 10;
   end;
 end;
end;
//----------------------------------------------------------------------
// Procedura isvedanti lyginio skaiciaus skaitmenys
//----------------------------------------------------------------------
Procedure TikLyginiaiSkaitmenys(Sk:integer);
 var pap:integer;
     Tenkina:boolean;
Begin
Tenkina:=True;
While Tenkina do
 Begin
   if sk<10 then
   Begin
     if sk mod 2 = 1 then Tenkina:=False else
     break;
   end else
   Begin
     pap:=sk mod 10;
     if pap mod 2 = 1 then Tenkina:=False;
     sk:=sk div 10;
   end;
 end;
 If tenkina then Writeln('Kadangi skaiciaus skaitmenys yra lyginiai - spausdiname ji : ',a);
end;
//----------------------------------------------------------------------
// Randama ar skaiciaus kuris nors skaitmuo yra didesnis uz
// visu skaitmenu suma be to didziausio
//----------------------------------------------------------------------
Procedure SkaitmuoDidesnisUzSkaitmenuSuma(sk:integer);
 var pap,max,suma,sk2:integer;
Begin
max:=0; suma:=0; sk2:=sk;
While sk<>0 do
 Begin
   if sk<10 then
   Begin
     if sk>max then max:=sk;
     sk:=0;
   end else
   Begin
     pap:=sk mod 10;
     if pap>max then max:=pap;
     sk:=sk div 10;
   end;
 end;

 While sk2<>0 do
 Begin
   if sk2<10 then
   Begin
     suma:=suma+sk2;
     sk2:=0;
   end else
   Begin
     pap:=sk2 mod 10;
     suma:=suma+pap;
     sk2:=sk2 div 10;
   end;
 end;
 if max>abs(suma-max) then
 Begin
   Writeln('Kadangi didz.skaicius yra didesnis uz skaitmenu suma be jo-isvedame : ',a);
 end;
end;
//----------------------------------------------------------------------
// Skaicius perrasomas atvirksciai
//----------------------------------------------------------------------
Procedure SkaiciusPerrasytasAtvirksciai(sk:integer);
 var Pap,atvirkscias:integer;
Begin
Atvirkscias:=0;
While sk<>0 do
 Begin
   if sk<10 then
   Begin
     Atvirkscias:=Atvirkscias*10+sk;
     Sk:=0;
   end else
   Begin
     Pap:=sk mod 10;
     Atvirkscias:=Atvirkscias*10+pap;
     sk:=sk div 10;
   end;
 end;
 writeln('Skaicius perrasytas atvirksciai : ',atvirkscias);
end;
//----------------------------------------------------------------------
// Pagrindine programa
//----------------------------------------------------------------------
begin
a:=1;
While a<>0 do
Begin
  readln(a);
  Write('Skaiciaus ',a,' skaitmenu suma lygi : '); SkaiciuSuma(a);
  if a mod 2 = 1 then Begin Write('Nelyginio skaiciaus ',a,' skaitmenu kvadratu suma lygi : '); NelyginiuSkaiciuSkaitmenuKvadratai(a); writeln; end;
  TikLyginiaiSkaitmenys(a);
  SkaitmuoDidesnisUzSkaitmenuSuma(a);
  SkaiciusPerrasytasAtvirksciai(a);
end;
 readln;
end.

 

Nors dabar iškilo klausimas ar autorius moka ir procedūras :) Bet manau viską galima parašyti į bendrą :)

Redagavo C_Linas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

va be jokiu masyvu, profeduru funkciju, paanalizuok ir suprasi visai nesunku ;)

 

 

program Skaiciai;

var x, sks, g, skk, lyg, max, maxs, atb, a : longint;

begin

WriteLn('Iveskite pirmaji skaitmeni');

Readln (x);

While x <> 0 do

begin

sks := 0;

skk := 0;

lyg := 0;

atb := 0;

g := x;

while g > 0 do

begin

sks := sks + g mod 10;

g := g div 10;

end;

WriteLn ('Skaiciaus skaitmenu suma : ',sks);

g := x;

while g > 0 do

begin

if g mod 10 mod 2 <> 0 then skk := skk + SQR (g mod 10);

g := g div 10;

end;

WriteLn ('nelyginiø skaièiaus skaitmenø kvadratø suma : ',skk);

g := x;

while g > 0 do

begin

if g mod 10 mod 2 = 0 then g := g div 10;

begin

if g mod 10 mod 2 = 0 then lyg := lyg + 1;

g := g div 10;

end;

end;

if lyg = 0 then WriteLn ('Skaicius ', x, ' sudarytas is lyginiu skaitmenu');

g := x;

while g > 0 do

begin

atb := atb * 10 + g mod 10;

g := g div 10;

end;

WriteLn ('Skaicius atbulai : ',atb);

g := x;

max := 0; maxs := 0;

while g > 0 do

begin

a := g mod 10;

if max < a then max := a;

g := g div 10;

maxs := sks;

end;

maxs := maxs - max;

if max > maxs then

WriteLn ('Skaitmuo didesnis uz skaitmenu suma : ', max, ' Skaitmenu suma: ', maxs);

WriteLn;

WriteLn ('Iveskite sekanti skaiciu'); ReadLn (x);

end;

end

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jūsų netiko, nes butinai reikia masyvo, juk reikia kad ne skaičiu iš kitos pusės parašytu, bet visus suvestus skaičius iš kitos pusės parašytų ir t.t

 

Pasidariau jau pats, viskas puikiai veikia, tik reikės optimizuot kodą, nes dabar maišalyne labai, gal pavyks sutrumpint :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na kaip ir viskas veikia :)

 

{
                                               Gal kodas kiek ir "kreivas" , bet viskas veikia.
                                               Nelabai sugalvojau kaip kitaip padaryt, bet kadangi tipas (integer),
                                               ir nebus skaičius daugiau kaip su 4 nuliais, tai viskas veikia.

}
program masyvas;
uses CRT;
var i, s, t, suma, max : integer;
   skaicius : array[1..100] of integer;
begin

 i := 0;
 s := 1;
 suma := 0;

 WriteLn('Jums reikia įvesti naturaliuosius skaičius, norint baigti įveskite (0).');

 While s <> 0 do
 begin
 WriteLn('Įveskite ', i+1, ' skaičių:');
 ReadLn(s);

 if s <> 0
 then begin
   i := i+1;
   skaicius[i] := s;
   end;

 end;

 ClrScr;

 WriteLn('Jūsų įvesti skaičiai: ');
 for t := 1 to i do
 begin
 WriteLn('( ', skaicius[t], ' ) ');
 end;

 WriteLn('Jūsų įvesti skaičiai atgaline tvarka: ');
 for t := i downto 1 do
 begin
 WriteLn('( ', skaicius[t], ' ) ');
 end;

 WriteLn('Skaičių skaitmenų suma: ');
 for t := 1 to i do
 begin
 suma := (skaicius[t] mod 10) + ((skaicius[t] div 10) mod 10) + ((skaicius[t] div 100) mod 10) + ((skaicius[t] div 1000) mod 10) + ((skaicius[t] div 10000) mod 10);
 WriteLn('( ', skaicius[t], ' ) , skaitmenų suma ', suma);
 end;

 WriteLn('Skaičiai sudaryti tik iš lyginių skaitmenų: ');
 for t := 1 to i do
 begin
 suma := (skaicius[t] mod 10) + ((skaicius[t] div 10) mod 10) + ((skaicius[t] div 100) mod 10) + ((skaicius[t] div 1000) mod 10) + ((skaicius[t] div 10000) mod 10);
 if (skaicius[t] mod 10 mod 2 = 0) and (((skaicius[t] div 10) mod 10) mod 2 = 0) and (((skaicius[t] div 100) mod 10) mod 2 = 0) and (((skaicius[t] div 1000) mod 10) mod 2 = 0) and (((skaicius[t] div 10000) mod 10) mod 2 = 0)
   then WriteLn('( ', skaicius[t], ' ) ');
 end;

 WriteLn('Nelyginių skaičiaus skaitmenų kvadratų suma: ');
 for t := 1 to i do
 begin
 suma := 0;
 if skaicius[t] mod 10 mod 2 <> 0
    then suma:=suma + SQR(skaicius[t] mod 10);
 if (skaicius[t] div 10) mod 10 mod 2 <> 0
    then suma:=suma + SQR((skaicius[t] div 10) mod 10);
 if (skaicius[t] div 100) mod 10 mod 2 <> 0
    then suma:=suma + SQR((skaicius[t] div 100) mod 10);
 if (skaicius[t] div 1000) mod 10 mod 2 <> 0
    then suma:=suma + SQR((skaicius[t] div 1000) mod 10);
 if (skaicius[t] div 10000) mod 10 mod 2 <> 0
    then suma:=suma + SQR((skaicius[t] div 10000) mod 10);
 if suma <> 0
    then WriteLn('( ', skaicius[t], ' ) , nelyginių skaitmenų kvadratų suma ', suma);
 end;

 WriteLn('Skaičiai, kurių didžiausias skaitmuo yra didesnis už skaičiaus skaitmenų sumą be jo: ');

 for t := 1 to i do
 begin

 suma := 0;
 max := 0;

 if skaicius[t] > 100
    then begin

          if skaicius[t] mod 10 > (skaicius[t] div 10) mod 10
             then max := skaicius[t] mod 10
             else max := (skaicius[t] div 10) mod 10;

          if (skaicius[t] div 100) mod 10 > max
             then max := (skaicius[t] div 100) mod 10;

          if (skaicius[t] div 1000) mod 10 > max
             then max := (skaicius[t] div 1000) mod 10;

          if (skaicius[t] div 10000) mod 10 > max
             then max := (skaicius[t] div 10000) mod 10;

          suma := ((skaicius[t] mod 10) + ((skaicius[t] div 10) mod 10) + ((skaicius[t] div 100) mod 10) + ((skaicius[t] div 1000) mod 10) + ((skaicius[t] div 10000) mod 10)) - max;

          if max > suma
            then WriteLn('( ', skaicius[t], ' )');

         end;
 end;

 ReadLn;
end.

Redagavo I-Tech
Nuoroda į pranešimą
Dalintis kituose puslapiuose

ar aš klystu jei klystu labai atsiprašau :) Bet man atrodo tavo programoje nėra:

skaičius perrašytus atbulai;

Ir išvis nelabai suprantu šitą sakinį.

 

Klysti :)

 

WriteLn('Jūsų įvesti skaičiai atgaline tvarka: ');
 for t := i downto 1 do
 begin
 WriteLn('( ', skaicius[t], ' ) ');
 end;

jei parašo 1,9,5,2

tai išveda 2,5,9,1

Nuoroda į pranešimą
Dalintis kituose puslapiuose
"nelyginių skaičiaus skaitmenų kvadratų sumą" to skaičiaus kurį įvedei nelyginius skaitmenis pakeli kvadratu ir sudėdi

pvz 35849' date=' tai bus 3*3+5*5+9*9[/quote']http://img12.imageshack.us/img12/489/0000000038.gif

 

O šiaip galima surast n-ženklio skaičiaus visus skaitmenys vėlgi su masyvu

 

i := 1;
while n > 0 do
 begin
   sk[i] := n mod 10;
   n := n div 10;
   i := i + 1
end;

sk[1] bus paskutinis skaitmuo ir t.t.

Redagavo taksas027
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nežinau kurioje klasėje mokaisi, bet nepatariu rasyti tokių porgramų. Pratinkis naudoti masyvus/matricas/sarašus(žinoma kai išmoksi), taip pat funkcijas/procedūras, nes pvz laikant egzaminą pagrindinėje programos dalyje leidžaimi tik kreipimasi i funkcijas/procedūras. Dar pastebėjau, kad netaisyklingai aprašei masyvą:

 

program masyvas;

uses CRT;

var i, s, t, suma, max : integer;

skaicius : array[1..100] of integer;

begin

....

 

taisyklingas aprašymas:

 

Program masyvas;

uses CRT;

const n=100;

type mas=array[1..n] of integer;

var i,s,t,suma,max:integer;

a:mas;

begin

....

 

Taip pat kai nėra nurodyto maksimalaus elementų skaičiaus reikia naudoti saugiklį t.y. prie ciklo, kuris nuskaito skaičius, turetu suktis dar vienas kintamasis, kuris tikrintų ar nuskaitytų kintamųjų skaičius neviršija tavo aprašyto masyvo stalčių skaičiaus, nes jei kasnors nepatingėtų suvesti 101 skaičiaus, tavo programa nulužtų. Ir dar pratiknkis komentuot tai ką tavo programa daro.

Ps. nesuprask manęs klaidingai viskas, ką padarei yra gerai tiesiog siūlau iškarto pratintis rašyti viską taisyklingai, nes paskui gali būti sunku pakeisti rašymo stilių. :)

Redagavo JurgisG
Nuoroda į pranešimą
Dalintis kituose puslapiuose

..

 

Sveikas, mokausi 10-toje klasėje. Visiškai tau pritariu, bet kadangi man užduotis duoda į priekį, tai šiuo atveju mes dar nesimokėme ne masyvų, nei procedūrų ir tiesiog aš to nepajėgiu kolkas padaryti.

 

Reiktu programuoti PHP/MYSQL būtų iškarto kitas reikalas nes tuo senai domiuosi ir daug ką moku.

 

Bet aišku su laiku ir FPS bus vieni juokai manau :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Taksas027, jei teisingai supratau, ką norėjai parašyti tai tavo ciklas turėtų atrodyti taip:

i := 1;

while n > 0 do

begin

sk:=n mod 10;

n:=n div 10;

i:=i + 1;

end;

Nes jei sk yra masyvas, o tu mėgini jam priskirti kažkokį skaičių, nenurodęs stalčiaus numerio, gausi error.

Redagavo JurgisG
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveikas, mokausi 10-toje klasėje. Visiškai tau pritariu, bet kadangi man užduotis duoda į priekį, tai šiuo atveju mes dar nesimokėme ne masyvų, nei procedūrų ir tiesiog aš to nepajėgiu kolkas padaryti.

 

Reiktu programuoti PHP/MYSQL būtų iškarto kitas reikalas nes tuo senai domiuosi ir daug ką moku.

 

Bet aišku su laiku ir FPS bus vieni juokai manau :)

FPS yra tik compileris, o Pascal yra kalba kuria rasai.

 

 

 

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ą...