Kezdőoldal » Közoktatás, tanfolyamok » Házifeladat kérdések » Hogy kell ilyen programot...

Hogy kell ilyen programot írni C nyelven?

Figyelt kérdés

A feladat az, hogy 1-től 15-ig kiírja az összes létező 4 jegyű számkombinációt, de egy szám csak egyszer szerepelhet.

A segítséget megköszönném. Privátban is írhattok.


Pl ez is egy jó kombináció: 4, 5 ,10 ,12, 14, de az

1, 2, 3, 4 is jó lehet.


(Azt tudom, hogy 1365 féle kombináció van, mert a feladat másik része hogy ezt is számoljuk ki, de ehhez nem kellett nagy tudomány.)


2012. febr. 7. 22:54
 1/7 anonim ***** válasza:
51%

include <stdio.h>

include <stdlib.h>



int main();

{

int i=1,j=1,k=1,l=1;

for (i=1;i<=15;i++)

{

while (j!=15)

{

if (j==i)

j++;

k=1;

while (k!=15)

{

if (k==i | k==j)

k++;

l=1;

while (l!=15)

{

if (l==k | l==j | l==i)

l++;

printf ("%i,%i,%i,%i",i,j,k,l);

l++;


}

k++;

l=1;

}

j++;

k=1;

}

}

return 0;

system ("PAUSE");

}



Hát éjjel egykor csak ennyire futotta. Kicsit nyomi lett (főleg a bekezdések) és még futtatni sem futtattam, mert a gépemen most nincs kompiláló program így a gyk szövegszerkesztőjébe írtam meg ahol még a TAB sem működik. Szóval ezen még bőven lesz amit javítgassál, de az elv remélem jó.

Na elég is a magyarázkodásból, elmondom a logikát amit követtem.


Vegyük példának az 1,2,3,4 számsort. Mondjuk ebből kell három számjegyű számokat alkotni.

Vettem első számjegynek az 1-t, másodiknak a 2-t, harmadiknak a 3-at. Így meglett az első számom a 123. Következő lépésben a harmadik számjegyet megnöveltem egyel. Így kaptam a 124-et. A harmadik szám változtatásával nem tudok több kombinációt létrehozni, ezért a második számjegyet emelem meg egyel és újra váltogatom a harmadik számjegyet. Ha a második számjegyet is kimerítettem, akkor az első számjegyet változtatom meg és újra eljátszom az egészet.


A program elméletileg a fent leírtakat valósítja meg, csak nem 4 hanem 15 számmal és 4 számjeggyel. Az i,j,k,l a négy számjegyet tartalmazza. Az első for ciklusban növelem az első számjegyet. Kezdetben ez egyel egyenlő. Az első while ciklusban növelem a j-t. Ha ez megegyezik az i-vel akkor megnövelem 1-el. A k-t egyre állítom és a harmadik while ciklusban a k-t növelem. Ugyancsak összehasonlítom az előző változókkal és az l-t 1-re rakom. A negyedik while ciklus, mint ahogy sejted az l értékét növeli és összehasonlítja az előző számjegyekkel. Ha ez mind megvan akkor elméletileg az első számom meg is van, amit ki is iratok a printf-el. Az utolsó while ciklus ismétlődik mind addig amíg az l egyenlő lesz 15-el (lehet, hogy jobb lenne ha feltételnek azt adnád, hogy l<=15...persze a többi while-nál is). Ha ez a ciklus befejeződik, a harmadik számjegyet megnövelem, l-t 1-re állítom és az egész cirkusz kezdődik elölről.


Remélem tudtam segíteni. Még egyszer jelzem, hogy ez még letesztelve sem volt, csak fejben volt kompilálva ezért ne keseredj el ha n+n hibát fog jelezni. Amúgy írj ha nem tudod megoldani az egyes hibákat.

2012. febr. 8. 00:20
Hasznos számodra ez a válasz?
 2/7 A kérdező kommentje:
Köszönöm szépen ez elég meggyőzőnek tűnik. Majd írok. Küldhetek privátot is?
2012. febr. 8. 07:52
 3/7 A kérdező kommentje:
Jaj bocs, véletlenül rossz gombra nyomtam és lepontoztam a választ. A másikra akartam nyomni.
2012. febr. 8. 08:16
 4/7 A kérdező kommentje:

Amúgy csak egy hibát jelez:

Description Resource Path Location Type


expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token lotto.c /lotto line 1 C/C++ Problem

2012. febr. 8. 08:19
 5/7 A kérdező kommentje:
Kijavítottam a hibákat. Az include parancsok elé kell egy # és az int main() után nem kell ;.
2012. febr. 8. 11:56
 6/7 anonim ***** válasza:

A pontosvessző hibák azok gyakoriak nálam, szóval nem mondtál ujjat. Az # nem tudom hogyan felejthettem ki.

Amúgy jó eredményt ír ki? Attól, hogy nincs hiba még nem biztos, hogy azt írja ki amit szeretnél. Írhatsz privátot is ha akarsz...

2012. febr. 8. 16:33
Hasznos számodra ez a válasz?
 7/7 anonim ***** válasza:

És vigyázz mert nem 1365 kombináció van, mivel ha ezt ki akarod számolni akkor ismétlés nélküli variációt kell használj, mert a kombináció pl az 1,2,3,4-es számokból csak az egyik variánst számolja, viszont ebből még lehet 4!, azaz 24 számot alkotni.

A variánssal kapott számok száma 32760.

2012. febr. 8. 16:44
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!