Pereiti prie turinio

C - visi skirtingi skaičai


Rekomenduojami pranešimai

Sveiki, turiu klausimą. Gal kas gali užvesti ant kelio? Turiu programą.

 

"Parašykite programą visiems skirtingiems skaičiams, sudarytiems iš duoto natūraliojo skaičiaus skaitmenų, išspausdinti. Skaičiai turi būti išdėstyti didėjančiai. Pavyzdžiui, kai duota 153, tai reikia spausdinti"

135

153

315

351

513

531

 

Nereikia man kad parašytumėte visos programos ar dalies, tik reikia atsakymo, kaip tokia programą realizuoti, nes kolkas google.lt nepadėjo, o pats neišmasčiau.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Vienas kelias:

 

rask skaitmenis, suvesk į masyvą, surūšiuok nuo mažiausio iki didžiausio.

 

Tada išimk po vieną elementą iš masyvo ir rask likusio masyvo unikalius sukinius (http://answers.yahoo.com/question/index?qid=20100623185011AAmJUjr). Taip perėjus per visus masyvo elementus gausi ko prašomas.

 

Sveiki, turiu klausimą. Gal kas gali užvesti ant kelio? Turiu programą.

 

"Parašykite programą visiems skirtingiems skaičiams, sudarytiems iš duoto natūraliojo skaičiaus skaitmenų, išspausdinti. Skaičiai turi būti išdėstyti didėjančiai. Pavyzdžiui, kai duota 153, tai reikia spausdinti"

135

153

315

351

513

531

 

Nereikia man kad parašytumėte visos programos ar dalies, tik reikia atsakymo, kaip tokia programą realizuoti, nes kolkas google.lt nepadėjo, o pats neišmasčiau.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Man irgi kazkada rekejo panasios programos... Tik man eiles tvarka nebuvo svarbi. Dabar siek pakoregaves programa (eiles tvarkos vis dar nera) galiu ja pateikt :)

program programa;

const N=9;
type t=array[1..N] of byte;

var m:byte;

procedure println(a:t);
var i:byte;
begin
for i:=m downto 1 do
   write(a[i]);  writeln();
end;

procedure keist(var a, b:byte);
var c:byte;
begin
c:=a;
a:=b;
b:=c;
end;

function naujas(a:longint):t;
var i:byte;
   f:t;
begin
for i:=1 to m do
   f[i]:=0;
i:=0;
while a>0 do
   begin
   i+=1;
   f[i]:=a mod 10;
   a:=a div 10;
   end;
naujas := f;
end;

procedure rekursija(var a:t; n:integer);
var i:integer;
begin
if n=1 then println(a) else
   begin
   for i:=1 to n do
       begin
       rekursija(a, n-1);
       if (n mod 2 = 1)
           then keist(a[1], a[n])
           else keist(a[i], a[n]);
     end;
   end;
end;

var a:t;
   q:longint;
begin
   q:=153;
   m:=trunc(ln(q)/ln(10))+1;
   a:=naujas(q);
   rekursija(a, m);
   Readln;
end.

Siaip tai manau apie kelinius galetum placiau pasidometi, ir pats pasirasyti sekancio kelinio generavimo funkcija ir be rekursijos :).

P.S. tikiuosi is fps sintakses persirasysi i c :)

Redagavo audrius^
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Skaitmenų surašymas į masyvą -> masyvo surikiavimas (pavyzdžiui, sort()) -> next_permutation():

 

int n = 0, a;
a = 4321;
int p[100];
do
{
   p[n++] = a % 10;
}
while((a /= 10) > 0);
sort(p, p + n);
do
{
   for(int i = 0; i < n; i++)
   {
       cout << p[i];
   }
   cout << endl;
}
while(next_permutation(p));

 

Jei neįvėliau klaidų, tai turėtų veikti.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Skaitmenų surašymas į masyvą -> masyvo surikiavimas (pavyzdžiui, sort()) -> next_permutation():

 

int n = 0, a;
a = 4321;
int p[100];
do
{
   p[n++] = a % 10;
}
while((a /= 10) > 0);
sort(p, p + n);
do
{
   for(int i = 0; i < n; i++)
   {
       cout << p[i];
   }
   cout << endl;
}
while(next_permutation(p));

 

Jei neįvėliau klaidų, tai turėtų veikti.

 

temos savininkas prašo problemos realizavimo C kalba, tavieji algoritmai sort ir next_permutation yra iš C++ <algorithm>, neradau atitikmens C kalboje.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

temos savininkas prašo problemos realizavimo C kalba, tavieji algoritmai sort ir next_permutation yra iš C++ <algorithm>, neradau atitikmens C kalboje.

 

Daug tokių, kurie klausinėja, kaip suprogramuoti gana elementarų uždavinį, „C++“ kalbą vadina: „C programa“, „C++ programa“, „Codeblocks programa“, „Dev-C++ programa“ ir pnš. Beje, nematau priežasties, kodėl turėtų netikti C++ programa vietoj C, visgi ne kokį OS branduolį rašo, o paprastą užduotį.

 

Žinoma, jei būtinai reikia C, tai arba susiras kokias alternatyvas, arba pasirašys savo. Tiesiog norėjau parašyti kuo trumpesnį kodą, pasinaudojant egzistuojančiomis funkcijomis.

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