Kezdőoldal » Számítástechnika » Programozás » Valaki tud tenni valamit?

Valaki tud tenni valamit?

Figyelt kérdés

Csináltam egy programot, amiben van két tömb benne számokkal, a tömb tagjai is adottak.

Akérdésem az, hogy hogyan csináljam meg azt, hogy a két tömbből 4-es számkombinációkat alkosson, de az első tömbből 3 tago míg a másodikból csak egyet használjon a számkombinációkhoz.

Kombinációnként a számok sem ismétlődhetnek és ugyanolyan számokat tartalmazó kombinációk sem lehetnek más sorrendben.



2012. jún. 15. 19:59
1 2 3
 11/21 anonim ***** válasza:

Adott egy A halmaz és egy B halmaz.

Képezzük az összes lehetséges (k, b) párt, ahol


* K: az A halmaz 3-ad osztályú **kombinációja**,

* b: a B halmaz eleme,

* és még az is teljesüljön, hogy b nem lehet benne K-ban.


{ (K, b) : K ∈ C_A^3, és b ∈ B, és b ∉ K }


Az összes dolog az algoritmusban azért van, hogy mindez stimmeljen. (Tömbökből az ismétlődők irtása, indexeknél meg az, hogy a j-t átpöccenéskor nem 0-tól, hanem az i utáni helyről indítjuk újra, és csak hátrafele mozoghat, és k is így mozog a j-hez képest. Így az i < j < k sorrend mindvégig megmarad, így a ciklus tényleg nem fog kétszer venni olyan esetet, ahol csak a sorrend lenne a különbség)

2012. jún. 19. 00:20
Hasznos számodra ez a válasz?
 12/21 anonim ***** válasza:
A b ∉ K feltételről pedig a legeslegbelső magban lévő if- elágazás és continue utasítás gondoskodik.
2012. jún. 19. 00:24
Hasznos számodra ez a válasz?
 13/21 anonim ***** válasza:

A külső ciklus (ami önmaga is 3 ciklusból áll) erről akartam egy videót találni, sajnos azt nem találtam, pedig jó lenne egy videón bemutatni az i, j, k index mozgását, mindenesetre ha videót nem is, de egy képsorozatot találtam erről:


[link]

2012. jún. 19. 00:56
Hasznos számodra ez a válasz?
 14/21 anonim válasza:
Kár hogy C-be kell neked mert ott nem vagyok elég ismeretes ehez, php-ból át tudod magadnak alakítani?
2012. jún. 19. 01:26
Hasznos számodra ez a válasz?
 15/21 A kérdező kommentje:
Köszönöm mndenki kielégítő válaszát. Eddig egy válasz sem jött most meg itt egy rakat. Mindenki felvan pontozva.
2012. jún. 19. 12:15
 16/21 anonim ***** válasza:

Én is köszönöm, sok iskert kívánok Neked.


A legeslegeslegbelső magra (,,kiírás'') találtam még egyszerűbb felirást: tkp. még a continue utasítás is felesleges, elég egy if sima vizsgálat:


if (b != a[i] && b != a[j] && b != a[k])

. , . printf("%d, %d, %d, %d\n", a[i], a[j], a[k], b[m]);


vgyis ha b épp aktuális nincs meg az a-ból szintén épp aktuálisan választott kombinációban, AKKOR írja ki az esetet, egyébkét meg ne tegyen semmit (és így persze a ciklusok egyszerűen továbbveszik a következő lépést)


Így a program egésze így nézne ki:


A tömbök előszűrése ,javított' változataikba

Külső ciklus az 'a' tömbre (tkp három ciklus egymásban, 'i', 'j', 'k' "indexekkel" 'a' tömb 3-kombinációit egyenként)

. , .Belső ciklus 'b' tömbre ('m' index egyszerűen végigszalad 'b' tömbön)

. , . . ,if (b != a[i] && b != a[j] && b != a[k])

. , . . , . .printf("%d, %d, %d, %d\n", a[i], a[j], a[k], b[m]);

2012. jún. 19. 15:43
Hasznos számodra ez a válasz?
 17/21 anonim ***** válasza:

JAVÍTÁS (a legbelső magban):


A 'a' és a 'b' tömb előszűrése;

Külső ciklus az 'a' tömbre (három ciklus egymásban, 'i', 'j', 'k' "indexekkel", ábra szerint);

. , .Belső ciklus 'b' tömbre ('m' index végigfut 'b' tömbön);

. , . . ,if (b[m] != a[i] && b[m] != a[j] && b[m] != a[k])

. , . . , . .printf("%d, %d, %d, %d\n", a[i], a[j], a[k], b[m]);

2012. jún. 19. 15:55
Hasznos számodra ez a válasz?
 18/21 anonim ***** válasza:

Most most ki is próbáltam:


[link]


Itt van ugye a main.c file, meg a kényelmesebb tesztelhetőség érdekében egy teszt-adatfile is (test1.data). Ha a programot önmagában futtatod, akkor interaktívan bekéri az adatokat. Ha viszont programot úgy futtatod, hogy a tesztfile tartalmát (pl. Linux parancssorban) átirányítod a standard bemenetre, akkor nem is kell a gépeléssel fáradni, és egy megírt tesztfile akárhányszor felhasználható, módosítható. A tesztfile (test1.data) adatait úgy kell érteni, hogy az első két szám az 'a' és a 'b' tömb mérete, utána jönnek (a megadott méretek szerint) az 'a' tömb adatai, majd a 'b'tömb adatai. A nekem kijött futási eredmény a test1.log fájlban található. Az egszerűség kedvéért a teszt-adatfájlba azokat az adatokat tettem, amiket Te is megadtál példaként.

2012. jún. 19. 17:46
Hasznos számodra ez a válasz?
 19/21 anonim ***** válasza:

Ha a kommenteknél, szövegeknél nem látszanak az ékezetek, akkor megadom összecsomagolt formában is:


[link]


A kódot picit elbonyolítottam, de egy részét nyugodtan át lehet ugrani: az elején csak adatbeolvasások vannak, meg tömbfeltöltések, meg az ismétlődő elemek kiválogatása a ,,javított'' tömbökbe, meg a magyarázó kiírások.


A végén van az igazi lényeg. Az elejét nyugodtan el is lehet hagyni, igaz, akkor a felhasználó jóindulatán múlik, hogy ne adjon meg ismétlődő elemeket a tömbökön belül.

2012. jún. 19. 18:09
Hasznos számodra ez a válasz?
 20/21 anonim ***** válasza:

Az ilyen előkészítő dolgokra külön függvényeket írtam, ezek definíciója persze külön modulba került: segedfuggvenyek.c

Persze fordításkor ezt is hozzá kell linkelni a projekthez:


gcc main.c segedfuggvenyek.c


Így áttekinthetőbb és tömörebb lett.

2012. jún. 20. 00:36
Hasznos számodra ez a válasz?
1 2 3

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!