Pereiti prie turinio

Kaip sukeisti skaitmenis vietomis?


Rekomenduojami pranešimai

program Bevarde14;
   var n, pirm, pask: longint;
begin
 WriteLn('Iveskite skaiciu');
 ReadLn(n);
 pask := n mod 10;
 pirm := n;
 while pirm > 10 do
 pirm := pirm div 10;
 WriteLn('Pirmas skaicius = ', pirm,', o paskutinis skaicius = ', pask);
end.

 

Susiradau pirma ir paskutinius skaitmenis, taciau nesugalvoju kaip juos reikia sukeisti vietomis?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

program programa;

var n, pirm, pask:longint;
Begin
readln(n);
pirm := n div 10**trunc(ln(n)/ln(10));
pask := n mod 10;
n := n + (pirm - pask) + (pask*10**trunc(ln(n)/ln(10)) - pirm*10**trunc(ln(n)/ln(10)));
writeln(n);
readln;
End.

Su mąsyvu daug daug daug lengviau būtu, nes iš aritmetinės pusės tai taip sprendimas atrodo

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Diskretus variantas to, kurį pateikė audrius^ (remember kids: jei galima išvengti realiųjų skaičių, tai privaloma išvengti realiųjų skaičių!).

 

int n = {kažkoks skaičius};
int pask = n % 10;
n /= 10;
int vid = 0; //skaitmenys, esantys tarp pirmo ir paskutinio skaitmens
int pasl = 10; //paslenkamas skaičius per dešimties eiles, „prirašomi nuliai iš dešinės“
while (n > 9) {
  vid += pasl * (n % 10);
  pasl *= 10;
  n /= 10;
} 
//šitoje programos vietoje turime n = {pirmas pradinio n skaitmuo}, vid = {viduriniai pradinio n skaitmenys su nuliu gale}, pask = {paskutnis pradinio n skaitmuo}
// jei pradinis n = 45127, tai dabar n = 4, vid = 5120, pask = 7, pasl = 10000

int ats = n + vid + pask * pasl;
// jei pradinis n = 45127, tai ats = 4 + 5120 + 7 * 10000 = 75124

Nuoroda į pranešimą
Dalintis kituose puslapiuose

program Bevarde16;
var n, pask, pirm : longint;
begin
 Read(n);
 pask := n mod 10;
 n := n - pask;
 pirm := n;
 while pirm > 10 do
 pirm := pirm div 10;
 n := n + pirm;
 WriteLn(n);
end.

 

Bandziau pats kazka, bet sita programa vietoj paskutinio skaitmens iraso pirma, bet pirmas vistiek lieka toks pats, gal galit paredaguoti sita programa, kad paskutinis skaitmuo atsidurtu pirmo skaitmens vietoje?

Nuoroda į pranešimą
Dalintis kituose puslapiuose
program Bevarde16;
var n, pask, pirm, d : longint;
begin
 Read(n);
 pask := n mod 10;
 n := n - pask;
 pirm := n;
 d := 0;
 while pirm > 10 do
   begin
   pirm := pirm div 10;
   d += 1;
   end;
 n := n + pirm;
 n += pask*10**d - pirm*10**d;
 WriteLn(n);
end.

Redagavo audrius^
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ą...