A fuggveny parametere ket karaktertomb. A feladat az elso karaktertombben tarolt szoveg atirasa ugy, hogy minden szo elso betuje a szo vegere keruljon. több info lent köszi?!
Az angol abece kis- es nagybetuibol allo szavakat egy darab szokoz karakter ' ' valasztja el egymastol, es sztringet a szokasos 0 kodu karakter zarja le. A sztring elejen es vegen nincs szokoz, es mas karaktert nem tartalmaz. Az atirt szoveg a masodik karaktertombben keruljon tarolasra. Vigyazz az eredmeny lezarasara! */ ? Ezt hogy kell?
oid csusztatas (char bemenet[], char eredmeny[]) { }
Először is a feladatot el kell kezdeni szétbontani.
Változókból most csak azt emelem ki, hogy fog kelleni egy-egy pointer mindkét tömbhöz, hogy épp hol tartasz az olvasássa/írással. Ezen kívül az egyes szavakat is tárolnod kell külön.
Van egy tömböd, amiből kiindulsz. Ezek elemein végig kell menned, ez biztos. Tehát ehhez csinálsz egy ciklust, aminek az lesz a bentmaradási feltétele, hogy a tömb végére értél-e, és hogy a másik tömbben van-e még hely. (Már ha ez utóbbit figyelni kell.)
Ezen belül szavakat kell keresni. Tehát lesz egy beágyazott újabb ciklusod, amiben gyűjtöd a beolvasott karaktereket, amíg szóközt nem olvasol. Utána karater csere. tologatás. De azt is csinálhatod, hogy az első karatkert elteszed, és a másodiktól másolod át a szót, a végén pedig hozzáfűzöd a tárolt elsőt.
Mindeközben persze nőnek a pointerek olvasáskor és íráskor. A lezárás pedig azt jelenti, hogy a tömb végére a nulla karaktert vissza kell tenni, különben használhatatlan lesz, pontosabban C-s értelemben nem lesz string.
// Egy fajta pszeudo kód:
karakter beolvasás
ciklus, amíg a beolvasott karakter nem nulla
_ciklus, amíg a beolvasott karakter nem nulla ÉS nem szóköz
__karakteresk gyűjtése külön stringben
__tili-toli, csere-bere
__kiírás a másik tömbbe (ciklussal, írási pointer növelés, szóköz kiírás a végére, stb.)
_ciklus vége
_olvasási pointer növelés
_karakter beolvasás
ciklus vége
// Tuti kihagytam valami fontosat. :))
"De azt is csinálhatod, hogy az első karatkert elteszed, és a másodiktól másolod át a szót, a végén pedig hozzáfűzöd a tárolt elsőt."
Hát végül is ezt így kellene csinálni.
Absztrakt szinten a következőt kell csinálni:
Elindulok egy másolással, két pointerrel, az egyik a bemeneten lépked, a másik az eredményen.
Kell még két változó, az egyikben (legyen mondjuk "lc") az előző karaktert, a másikban (legyen mondjuk "fc") az első, nem szóköz karaktert tároljuk.
Az egész egy sima másolás, két "esemény" kivételével:
- Ha az előző karakter szóköz, az aktuális meg nem, akkor az aktuálist nem másoljuk át, hanem megjegyezzük ("fc"-ben). Ekkor a bemenet pointere 1 karakterrel "előrébb fog tartani", amíg a szó másolódik.
- Ha az aktuális karakter szóköz v. 0, akkor mielőtt a másolt karaktert (a szóközt) beírjuk az eredménybe, beírjuk "fc" tartalmát is, ezután a két pointer ismét "együtt" mozog.
Ennyi.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!