Pereiti prie turinio

Rekomenduojami pranešimai

Sveiki,

 

nors programavimo mokausi visai nesenai, gavau štai tokius uždavinius:

1. Atspausdinti visus keturženklius skaičius, kurių paskutinis skaitmuo yra lygus kitų kurių nors skaitmenų sumai. Pvz: 1113; 2568.

2. Rasti visų skaičių nuo 153 iki 893 visų skaitmenų sumą.

 

Net neįsivaizduoju nuo ko pradėt... Funkcijų, procedurų ir masyvų dar nesimokiau, žinau tik programos "basics". Iš anksto dėkoju už bet kokią pagalbą.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki,

 

nors programavimo mokausi visai nesenai, gavau štai tokius uždavinius:

1. Atspausdinti visus keturženklius skaičius, kurių paskutinis skaitmuo yra lygus kitų kurių nors skaitmenų sumai. Pvz: 1113; 2568.

2. Rasti visų skaičių nuo 153 iki 893 visų skaitmenų sumą.

 

Net neįsivaizduoju nuo ko pradėt... Funkcijų, procedurų ir masyvų dar nesimokiau, žinau tik programos "basics". Iš anksto dėkoju už bet kokią pagalbą.

1 su ciklu for

program trecia;
var rezult, pir, ant, tre, i:integer;
begin
   for i:=1000 to 9999 do
     begin
       rezult := i mod 10;
       pir :=  i div 1000;
       ant :=  i div 100 - 10*pir;
       tre :=  i div 10 - 100*pir - 10*ant;
           if rezult = pir+ant+tre then
           writeLn('Skaicius, kurio paskutinis skaitmuo yra lygus kitu skaitmenu sumai yra: ',i);
     end;
 Readln;
end.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Antras taip pat su ciklu "for". Aišku, galima ir kitus ciklus naudoti.

Esmė, kad pradedi su skaičiumi x, jį vis didini vienetu ir pridedi prie visos sumos. Didini iki skaičiaus y.

 

Visos programos nerašysiu, nes visai jokios prasmės tam nėra :) Geriau pats išmok ir pasidaryk.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

program antra;
var a,b,c,m,e,suma,i:integer;
begin
 suma:= 0;
 WriteLn('Iveskite pradini trizenkli skaiciu');
 ReadLn(m);
 WriteLn('Iveskite galutini trizekli skaciu');
 Readln(e);
   for i := m to e do
     begin
       a := i div 100;         //3
       b :=  i div 10 - 10*a;
       c :=  i mod 10;       //1
       suma:= suma + a + b +c;
     end;
 WriteLn('Visu iki tol einanciu skaiciu suma yra ', suma);
 Readln;
end.

 

Gal kas parašys ciklą, nepriklausomai nuo kiek skaitmenu turi skaicius, kad atskirtu jo skaitmenis?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Gal kas parašys ciklą, nepriklausomai nuo kiek skaitmenu turi skaicius, kad atskirtu jo skaitmenis?

 

Kokia prasmė, jei kas nors padaro? :)

 

Kaip aš darydavau, tai dalindavau vis skaičių iš 10, kol jis yra daugiau nei 0 ir taip sužinodavau, kiek skaičius turi skaitmenų.

Tada priklausomai nuo to, dalindavau iš tiek vienetukų su nuliukais ir mod'indavau iš 10 (mod tik nuo antrojo skaitmens).

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aantram uždaviniui parašiau štai tokią programą

 

program sksum;
var rezult, pir, ant, tre, i:integer;
begin
   for i:=153 to 893 do
     begin
       pir :=  i div 100;
       ant :=  i div 10 - 10*pir;
       tre :=  i mod 10;
       rezult := pir+ant+tre;
           writeLn('skaitmenų suma: ',rezult);
     end;
 Readln;
end.

 

tačiau ji rodo klaidingus atsakymus. Gal galite padėti surasti klaidą?

Redagavo L33T
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aantram uždaviniui parašiau štai tokią programą

 

program sksum;
var rezult, pir, ant, tre, i:integer;
begin
   for i:=153 to 893 do
     begin
       pir :=  i div 100;
       ant :=  i div 10 - 10*pir;
       tre :=  i mod 10;
       rezult := pir+ant+tre;
           writeLn('skaitmenų suma: ',rezult);
     end;
 Readln;
end.

 

tačiau ji rodo klaidingus atsakymus. Gal galite padėti surasti klaidą?

WriteLn reik palikti už ciklo, jei nori matyti ne tarpinius rezultatus

prie rezultato dar reikia pridėti rezultatą

rezult := rezult + pir + ant + tre;

Nuoroda į pranešimą
Dalintis kituose puslapiuose

L33T, supratau, ką nori pasakyti. Tačiau ką programoje reikia pakeisti, kad ji rodytų ne "visų visų" skaitmenų sumą, bet kiekvieno skaičiaus skaitmenų sumą (153: 1+5+3=9; 154: 1+5+4=10...)?

 

program sksum;
var sum, pir, ant, tre, i:integer;
begin
   for i:=153 to 893 do
     begin
       pir :=  i div 100;
       ant :=  i div 10 - 10*pir;
       tre :=  i mod 10;
       sum := sum + pir + ant + tre;
     end;
     WriteLn(sum);
 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.

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