Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C kako izvesti niz iz funkcije?

[es] :: C/C++ programiranje :: C kako izvesti niz iz funkcije?

[ Pregleda: 3491 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ognjen_z

Član broj: 10897
Poruke: 12
*.ptt.yu



Profil

icon C kako izvesti niz iz funkcije?01.06.2003. u 05:51 - pre 254 meseci
Napisao sam potprogram koji vrsi izvesne obrade na nizu. Kao rezultat dobijam dva niza. Interesuje me kako u glavnom programu ispisati ta dva niza koji su nastali u potprogramu. ......molim vas za pomoc......
 
Odgovor na temu

Časlav Ilić
Braunšvajg, Nemačka

Član broj: 4945
Poruke: 565
195.252.80.*



+27 Profil

icon Re: C kako izvesti niz iz funkcije?01.06.2003. u 11:11 - pre 254 meseci
Ako nisi dinamički alocirao te nizove, ne možeš nikako da ih „izvezeš“ iz funkcije. Umesto toga, deklariši nizove u glavnom programu, pa ih pošalji funkciji pri pozivu. Ako nije jasno, daj kôd, pa da vidimo.
 
Odgovor na temu

ognjen_z

Član broj: 10897
Poruke: 12
*.ptt.yu



Profil

icon Re: C kako izvesti niz iz funkcije?01.06.2003. u 18:07 - pre 254 meseci
...pretpostavljam da problem treba resiti preko pokazivaca, ali mi nije jasno kako to da izvedem... moj program izgleda ovako:
#include <ctype.h>
#include <stdio.h>
#define M 1000

char f_cif (char tekst[], int n) {
int i, j=0, k=0;
char znak, cifre[M], slova[M];

gets(tekst);
for (i=0;i<n;i++) {
znak=getchar();
if (isdigit(znak)!=0) cifre[j++]=znak; /* <--- ovo su ta dva niza */
else if (isalpha(znak)!=0) slova[k++]=znak;
}
}



#include <stdio.h>
#define N 1000

main () {
char tekst[N], znak;
int n=0, i;

printf("\nUnesi proizvoljan tekst (ctrl+Z za izlaz).\n");
while ((znak=getchar())!=EOF) tekst[n++]=znak;
for (i=0;i<n;i++) putchar(tekst);

/* ------ poziv potprograma ---------- */
??????
/* ------ ispisivanje rezultata ------ */
}

 
Odgovor na temu

Časlav Ilić
Braunšvajg, Nemačka

Član broj: 4945
Poruke: 565
*.ppp-bg.sezampro.yu



+27 Profil

icon Re: C kako izvesti niz iz funkcije?02.06.2003. u 10:04 - pre 254 meseci
Code:

#include <ctype.h>
#include <stdio.h>

#define N 1000

char f_cif (char tekst[], int n, char cifre[], int* nc, char slova[], int* ns) {
    int i;
    char znak;
    *nc=0;
    *ns=0;
    for (i=0;i<n;i++) {
        znak=tekst[i];
        if (isdigit(znak)!=0) cifre[(*nc)++]=znak;
        else if (isalpha(znak)!=0) slova[(*ns)++]=znak;
    }
}

main () {
    char tekst[N], znak;
    int n=0, i;

    printf("\nUnesi proizvoljan tekst (ctrl+Z za izlaz).\n");
    while ((znak=getchar())!=EOF) tekst[n++]=znak;
    for (i=0;i<n;i++) putchar(tekst);

    /* ------ poziv potprograma ---------- */
    char cifre[N], slova[N];
    int ns; /* broj slova */
    int nc; /* broj cifara */
    f_cif(tekst,n,cifre,&nc,slova,&ns);

    /* ------ ispisivanje rezultata ------ */
    /* ... */
    printf("Slova: ");
    for (i=0;i<ns;i++) printf("%c ",slova[i]);
    printf("\n");
    printf("Cifre: ");
    for (i=0;i<nc;i++) printf("%c ",cifre[i]);
    printf("\n");
}


Kao što rekoh, nizovi slova i cifara definisani su u glavnom programu, pa prosleđeni funkciji. Njihove dužine su prosleđene funkciji kao pokazivači, da bi funkcija mogla da ih izmeni.
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: C kako izvesti niz iz funkcije?02.06.2003. u 15:44 - pre 254 meseci
Ja bih samo dodao da se eventualno moze problem resiti i sa globalnim nizovima (deklarisanim kao globalne varijable). Naravno, ja sam licno za Caslavovo (ili Caslavo?) resenje, koje zapravo predstavlja tipicno C-ovski nacin rada.
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

alkal
Aleksandar Kalanj
Beograd

Član broj: 7960
Poruke: 26
*.etf.bg.ac.yu

Jabber: alkal@elitesecurity.org
Sajt: wapdata.co.cc


Profil

icon Re: C kako izvesti niz iz funkcije?02.06.2003. u 17:54 - pre 254 meseci
Mala prepravka:
Code:

main () {
    char tekst[N];  /* polazni niz */
    char znak;
    int n=0, i;
    char cifre[N], slova[N];    /* trazeni nizovi */
    int ns;         /* broj slova */
    int nc;         /* broj cifara */

    printf("\nUnesi proizvoljan tekst (ctrl+Z za izlaz).\n");
    while ( (znak=getchar())!=EOF && n<N ) tekst[n++]=znak;
    printf("Uneli ste:");
    for (i=0; i<n; i++) putchar(tekst[i]);
    putchar('\n');

    /* ------ poziv potprograma ---------- */
    f_cif(tekst, n, cifre, &nc, slova, &ns);

    /* ------ ispisivanje rezultata ------ */
    printf("Slova: ");
    for (i=0; i<ns; i++) putchar(slova[i]);
    putchar('\n');

    printf("Cifre: ");
    for (i=0; i<nc; i++) putchar(cifre[i]);
    putchar('\n');
}

Dodat izraz n<N unutar while() uslova sprečava "prelivanje" niza.

 
Odgovor na temu

[es] :: C/C++ programiranje :: C kako izvesti niz iz funkcije?

[ Pregleda: 3491 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.