Kezdőoldal » Számítástechnika » Programozás » Két tömb elemeit hogyan lehet...

Két tömb elemeit hogyan lehet egymáshoz adni?

Figyelt kérdés

C-ben, adott 2 tömb x és y elemszámmal. Össze kéne adni az egyik tömb 1. tagját a másik tömb 1. tagjával, és így tovább.

Ha az egyik "elfogy", akkor újra az 1. tagját adjuk hozzá a másik tömbhöz, majd a 2.-at stb. (Tehát a rövidebb tömb elemei annyiszor ismétlődhetnek, amíg a hosszabb tömb végére el nem jutunk.) A tömbök elemei +, egész számok, az utolsó elem mind2-nél a 0, az jelzi, hogy vége a tömbnek.

Végeredménynek egy 3. tömböt kell kapni az összeadott elemekkel.



2018. okt. 4. 18:56
1 2 3 4
 21/34 anonim ***** válasza:

Nem kötekedésből, de nem egyezik azzal az alapelvvel ami ez esetben a tomb3 kiíratása az a kiíratásával foglalkozzon előfeltételezés nélkül és független legyen attól hogy miből jött ki.

Amúgy a specifikáció szerint jól működik. Bár legalapabb szinten nem kell még ezt tudni.

Mondjuk, ha szigorúan veszem akkor nem is kell kiíratni sehogy, a feladat arról nem szól,de ettől én is eltekintettem.

2018. okt. 6. 00:22
Hasznos számodra ez a válasz?
 22/34 anonim ***** válasza:

"Bár legalapabb szinten nem kell még ezt tudni."

Mármint amit a kiíratásra mondtam.

2018. okt. 6. 00:23
Hasznos számodra ez a válasz?
 23/34 tabaki ***** válasza:
#21: Nem mondhatnám, hogy értem az első mondatot, de legyen úgy.
2018. okt. 6. 06:47
Hasznos számodra ez a válasz?
 24/34 A kérdező kommentje:
Apropó kiíratás. Mi van akkor, ha nem nem kiíratni akarom a tomb3-at, hanem visszatérési értéknek megadni? (return)
2018. okt. 6. 09:53
 25/34 tabaki ***** válasza:
Gondolom, return tomb3 adja vissza a címét, onnét meg kiolvasod, amivel akarod. Viszont pl. az én programjaimban tomb3-nak nincs 0 végejele, tehát gondolj rá, hogy legyen
2018. okt. 6. 10:33
Hasznos számodra ez a válasz?
 26/34 anonim ***** válasza:

"Nem mondhatnám, hogy értem az első mondatot"


Kihasználtad hogy tomb1 mérete az annyi mint tomb3 és tomb1-et vizsgálva megállapítottad for ciklussal hogy hány elemét írasd ki hogy kiírasd minden elemét. Ami valóban teljesen logikus és helyes eredményt ad itt, ezt nem vitatom. Viszont szoftver fejlesztés szempontjából ez nem preferált stratégia. Úgy szokták hogy van egy adatszerkezet melyhez definiáljuk hogy lehet bejárni azt, tudja az algoritmus ha a végére értünk csak magáról az adott adatszerkezetből. (Ugye nem csak tömb lehet egy adatszerkezet hanem lehet pl. hash tábla, láncolt lista, bináris fa, ezek keveréke.) Ha nem így tennék akkor nagyon megnehezítenénk a hibakeresést ezzel ha módosítunk rajta egy nagyobb forráskód halmazról van szó ami több forráskódfájlból is áll, ami nehezítés elkerülhető lett volna. Plusz ugye a kód újrafelhasználást is rontja. Ha ilyet már csinált az ember eleget, akkor már szúrja a szemét ha lát ilyet, legalábbis nekem. Nem is érzek rá kicsiben sem késztetést, hogy ne így alkossam meg még akkor se ha nincs semmi hátrány belőle.


"Apropó kiíratás. Mi van akkor, ha nem nem kiíratni akarom a tomb3-at, hanem visszatérési értéknek megadni? (return)"


Ugye meg kell oldanod, hogy tudd hol a vége, amit kifejtettem már. Viszont ezzel vigyázz! Ha a tomb3 az osszead függvényen belül van deklarálva akkor a return után a tömb megszűnik. Ugyanis a stack-en jön létre és tárolódik ideiglenesen. Maga az egész függvényhívás egy verem szerkezettel van megoldva. Az meg külön említésre méltó, hogyha nem tömb hanem int lenne, akkor az miért nem szűnne meg. Az is megszűnne, csak a másolat jön létre. Tömbök esetén meg nem magát a tömböt hanem memória címet ad át a függvény illetve kap meg, ha megadod argumentumba neki.

2018. okt. 6. 12:30
Hasznos számodra ez a válasz?
 27/34 tabaki ***** válasza:

„Kihasználtad hogy tomb1 mérete az annyi mint tomb3”


Én semmi ilyesmit nem használtam ki, csak azt az együgyű tényt, hogy ugyanannyi értéket kell kiírni, mint amennyit beolvastál, tehát a kiírást is vezérelheti ugyanaz a végejel-vizsgálat, mint az eredmények eltárolását. A tömbök mérete ebből a szempontból közömbös, eltekintve attól, hogy az eredményeknek el kell férniük tomb3-ban. Ha ez teljesül, onnantól fogva már akármekkora lehet.

Mindez nem változtat azon, hogy a lényeget tekintve igazad van: Érdemes eleve szerkezetben gondolkodni. Erre éppen Kérdező szolgált ékes példával, akinek hirtelen eszébe jutott, hogy az alkalmilag a memóriába hányt adatsort inkább visszatérési értéknek használná. Innét már nyilvánvaló értelmetlenség volna elvárni a programtól, hogy továbbra is tomb1-et vizsgálgassa tomb3 helyett, amelyhez voltaképpen semmi köze, nem beszélve az ilyen globális megoldások egyéb kockázatairól. Vagyis a visszakapott tomb3 értelmezésének függetlennek kell lennie a másik tömbtől, és ehhez saját adatszerkezet szükségeltetik.

2018. okt. 6. 23:22
Hasznos számodra ez a válasz?
 28/34 anonim ***** válasza:

"Én semmi ilyesmit nem használtam ki"


Pont te ragaszkodtál ehhez korábbi hozzászólásodban, hogy minek akkora a tomb3 azért mondtam. Jó igazából 1-el kevesebb elemű a végjel hiánya miatt tomb3.

2018. okt. 7. 09:45
Hasznos számodra ez a válasz?
 29/34 tabaki ***** válasza:

Az csak egyszerű takarékoskodás volt (épp úgy, mint a char tömbök használata int helyett), a program működéséhez nincs köze. A kelleténél eggyel rövidebb -- tehát a végejel elhelyezésére is alkalmatlan -- tomb3 használata már ezt a fukarkodást fordította groteszkbe, sajnálom, ha nem ment át az önirónia.

Közben megpróbálkoztam tomb3 visszaadott értékként való hasznosításával is, az így ütött ki:

[link]

2018. okt. 7. 20:58
Hasznos számodra ez a válasz?
 30/34 anonim ***** válasza:

Töltsd fel inkább valami normális oldalra, mert tegnap óta akárhányszor néztem nem működött!

[link]

2018. okt. 8. 12:19
Hasznos számodra ez a válasz?
1 2 3 4

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!