Ne znam u cemu je problem sa programom u C

Ne znam u cemu je problem sa programom u C

offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

Imam zadatak da napravim funkciju squeeze(s1, s2) koja brise znak u s1 ako odgovara znaku u s2 i da je iskoristim u programu. Kada pokrenem program, dobijam kao da sam samo iskopirao s1 na izlaz. Evo koda.

#include <stdio.h> #include <stdlib.h> char *squeeze(char *, char *); int main(void) {    static char s1[] = {"Ja sam Viktor Prgomet."};    static char s2[] = {"Ja imam 14 godina."};    printf("%s\n", squeeze(s1, s2));    system("PAUSE");    return EXIT_SUCCESS; } char *squeeze(char *s1, char *s2) {    char *p, *q;    for(p = s1, q = s2; *p != '\0'; p++)       if(*p != *q++)          *p = *p;    return s1; }

Molim vas mi pomognite u vezi sa ovim programom. Very Happy



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14828
  • Gde živiš: Niš

Šta bi trebalo da radi sledeća naredba:
 *p = *p; Question Wink



offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

Tu je greska u tom programu, ali ne znam sta treba da stavim umesto nje.
U tom delu funkcije, trebalo bi u pokazivac p upise znak ako je znak u *p razlicit od znaka u *q(to je napisano u if).

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14828
  • Gde živiš: Niš

Pazi ovako, zadatak nije dovoljno precizno definisan, tako da rešenje nije jedinstveno.

Elem, može i da se radi na način na koji si ti odabrao, tj. tako da se briše karakter iz stringa s1 na i-toj poziciji ukoliko se isti taj karakter nalazi na i-toj poziciji u string s2. E sad, u samom telu petlje treba da imaš tri pokazivača p, q i recimo r. p pokazuje na tekući karakter (karakter koji upoređuješ) stringa s1, q na tekući karakter stringa s2, a r na poziciju u s1 na koju je potrebno smestiti karakter, isti karakter ukoliko je *p != *q, dok ukoliko je *p == *q ne radiš ništa već prelaziš na sledeći karakter (inkrementiraju se p i q). Na kraju svega toga je potrebno zatvoriti string s1 kako ne bi štampao preostale karaktere. Kod je ovakav:
#include <stdio.h> #include <stdlib.h> char *squeeze(char *, char *); int main(void) {    static char s1[] = { "Ja sam Viktor Prgomet." };    static char s2[] = { "Ja imam 14 godina." };    printf("%s\n", squeeze(s1, s2));    system("PAUSE");    return EXIT_SUCCESS; } char *squeeze(char *s1, char *s2) {    char *p, *q, *r;    for (r = p = s1, q = s2; *p != '\0'; p++, q++) {       if (*p != *q)          *r++ = *p;    }    *r = '\0';    return s1; }

offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

Sada radi, haval ti puno. Very Happy

Nego, i mislio sam da treba da se deklarise novi pokazivac, ali nisam razmisljao pa nisam znao kako da je inicilizujem. Sada si mi razjasnio i hvala ti. Very Happy

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14828
  • Gde živiš: Niš

I principu, i ne mora da bude pokazivač u pitanju. Može se raditi i sa int promenljivom koja će čuvati pomeraj između pozicije tekućeg karaktera i pozicije na koju je potrebno smestiti karakter. Ma, mogućnosti su ogromne... Very Happy

Ko je trenutno na forumu
 

Ukupno su 1771 korisnika na forumu :: 85 registrovanih, 6 sakrivenih i 1680 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 20624 - dana 04 Apr 2026 04:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Arhiv, Asteker, Bo96, Bobrock1, Bosnjo, BrcakRS, celt, DeerHunter, Dejan_vw, Despot Đurađ, Djokislav, doktor097, DragoslavS, DrMrPr, Fabius, Giskard, Goksi95, gorankuba, halkin gol, Hemi, hnjo, Holy Saber, hyla, ivan979, ivanR164, Ivoo, Jakonjveliki, jalos, Jaz, jodzula, Jomini, Kakarotsvc, king111, Komder, komenski, krkalon, MagicniHerpes, mauglibn, mercedesamg, mgolub, Mi lao shu, Mickey12345, Milan A. Nikolic, MiroslavD, Naj-Turs, Ndsk, neutrino, oddsock, Podljub, Polifon, promajauglavi, RajkoB, raptorsi, Recce, Regrut Boskica, S-lash, Sawiich4, Saša1989, Shajlok, Sharpshooter, slowhand, Sonic, StalniPromatrač, Tafocus, Tamna_strana_Meseca, Tanjagre, Tas011, tomigun, trutcina, TT, UAV operator, vespa nikola, virked, VJ, vjetar, vlado_pg, voja64, vukajlo71, zeka013, zeo, ZlatniRez, zombicar153, Žrnov, Ćuk, 79693