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

Meni za rad sa stringom

[es] :: C/C++ programiranje :: C/C++ za početnike :: Meni za rad sa stringom

[ Pregleda: 1714 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

čika_čovek

Član broj: 309064
Poruke: 4
194.28.129.*



+1 Profil

icon Meni za rad sa stringom24.11.2012. u 18:02 - pre 138 meseci
Novi sam na forumu i početnik što se tiče programiranja. Počeo sam da učim C pre 2 meseca i evo naišao sam na problem koji nikako ne mogu da rešim.
Code:

#include<stdio.h>
#include<string.h>
#define MAX_SIZE 201

void ispis(char *);
void obrnuti(char *);
int karakter(char *, char);
int duzina(char *);
int velika_slova(char *);

main()
{
    char s[MAX_SIZE], c;
    int opcija;
    
    do {
    printf("\nUnesite zeljeni string(najvise %d karaktera):\n\n", MAX_SIZE-1);
    }while(gets(s) == NULL);
    
    printf("\n\tIzaberite neku od opcija:\n");
    
    do
    {
        printf("\n\t(1) Ispis stringa.\n");
        printf("\t(2) Ispis stringa obrnutim redosledom.\n");
        printf("\t(3) Broj pojavljivanja zadatog karaktera u stringu.\n");
        printf("\t(4) Odredjivanje duzine stringa.\n");
        printf("\t(5) Broj pojavljivanja velikih slova u stringu.\n");
        printf("\t(6) Izlazak iz programa.\n");
        scanf("%d", &opcija);
        
        switch(opcija)
        {
            case 1: ispis(s);
                break;
            case 2: obrnuti(s);
                break;
            case 3: printf("Karakter '%c' se pojavljuje tacno %d puta.", c, karakter(s, c));
                break;
            case 4: printf("\nDuzina stringa je: %d\n", duzina(s));
                break;
            case 5: printf("\nBroj pojavljivanja velikih slova u stringu je: %d\n", velika_slova(s));
                break;
            case 6: printf("\nHvala sto ste koristili nas program. Prijatan dan vam zelim. :)))\n");
                break;
        }
    } while(opcija != 6);
    
    
    return 0;
}

void ispis(char *s)
{
    printf("\n%s\n", s);
}

void obrnuti(char *s)
{
    int i, n;
    
    n = strlen(s);
    
    printf("\n");
    
    for(i=n-1; i>=0; i--)
        printf("%c", s[i]);
    printf("\n");
}

int karakter(char *s, char c)
{
    int brojac, n, i;
    
    brojac=0;
    
    n = strlen(s);
    
    for(i=0; i<n; i++)
        if(c == s[i]) brojac++;
        
    return brojac;
}

int duzina(char *s)
{
    int n;
    
    n = strlen(s);
    
    return n;
}

int velika_slova(char *s)
{
    int brojac, n, i;
    
    brojac = 0;
    
    n = strlen(s);
    
    for(i=0; i<n; i++)
        if(s[i]>='A' && s[i]<='Z') brojac++;
    
    return brojac;
}

Evo ga kompletan kod. Pokušavam da realizujem meni za izvršavanje više radnji nad učitanim stringom. Korisnik bira neku od mogućih opcija. Za sada imam problem jedino sa trećom opcijom. Ne znam na koji način da, tek posle odabira treće opcije, korisnik dobije mogućnost da učita neki karakter po kome će se proveravati koliko se on puta pojavljuje u stringu. Kada sam pokušao da učitavanje izvršim u okviru switch-a, samo je prošao dalje bez davanja mogućnosti da se učita karakter. Funkcija 'karakter' vrši brojanje pojavljivanja.
Ako neko može da mi pomogne, bio bih zahvalan. Mislim da je rešenje krajnje jednostavno, ali meni se nikako ne ukazuje. Hvala.

 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.dynamic.sbb.rs.



+373 Profil

icon Re: Meni za rad sa stringom24.11.2012. u 18:40 - pre 138 meseci
Citat:
Kada sam pokušao da učitavanje izvršim u okviru switch-a, samo je prošao dalje bez davanja mogućnosti da se učita karakter. Funkcija 'karakter' vrši brojanje pojavljivanja.

Zasto ovo ne radi:
Code (c):

            case 3:
                printf("Unesite karakter: ");
                char searchChar;
                scanf("%c", &searchChar);
                printf("Karakter '%c' se pojavljuje tacno %d puta.", searchChar, karakter(s, searchChar));
                break;
 
 
Odgovor na temu

čika_čovek

Član broj: 309064
Poruke: 4
194.28.129.*



+1 Profil

icon Re: Meni za rad sa stringom24.11.2012. u 18:53 - pre 138 meseci
Ja sam se nadao da ću od nekoga ovde dobiti taj odgovor. : ) Zaista ne znam. Tako sam prvo i pokušao da uradim učitavanje ali prilikom izvršavanja samo prođe kroz case 3. Kao da nema scanf-a. Samo ispiše 'Unesite karakter:' , pređe na sledeći printf i naravno ispiše da se karakter pojavljuje 0 puta.
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.dynamic.sbb.rs.



+373 Profil

icon Re: Meni za rad sa stringom24.11.2012. u 19:04 - pre 138 meseci
Stavi razmak pre %c, da linija izgleda ovako:
Code (c):

scanf(" %c", &searchChar);
 

Objasnjenje sa neta:
Neposredno pre citanja karaktera ucitao si broj. Medjutim kada citas broj, on uzme input i izvuce broj iz njega. Nakon toga kada pokusas da procitas karakter, on prirodno nastavlja gde je stao, sto znaci da procita "karakter" za novi red. Kada stavis razmak na pocetku, kazes mu da ignorise prazne znake.
 
Odgovor na temu

čika_čovek

Član broj: 309064
Poruke: 4
194.28.129.*



+1 Profil

icon Re: Meni za rad sa stringom24.11.2012. u 19:08 - pre 138 meseci
Citat:
plague: Stavi razmak pre %c, da linija izgleda ovako:
Code (c):

scanf(" %c", &searchChar);
 

Hvala ti čoveče. Radi konačno. Samo još da mi objasniš razlog zbog kog sam ovde trebao da napravim razmak? To nikada do sada nisam morao da radim prilikom korišćenja scanf-a.
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.dynamic.sbb.rs.



+373 Profil

icon Re: Meni za rad sa stringom24.11.2012. u 19:15 - pre 138 meseci
Dopisao sam objasnjenje koje sam nasao u postu iznad.
 
Odgovor na temu

čika_čovek

Član broj: 309064
Poruke: 4
194.28.129.*



+1 Profil

icon Re: Meni za rad sa stringom24.11.2012. u 19:31 - pre 138 meseci
Jos jednom hvala i na objašnjenju. Značiće za ubuduće.
 
Odgovor na temu

aleksandar1519

Član broj: 307863
Poruke: 8
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: Meni za rad sa stringom04.12.2012. u 19:48 - pre 137 meseci
Zan ne bi trebao da uneses karakter koji zelis da nadjes u stringu, tj char c?
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Meni za rad sa stringom

[ Pregleda: 1714 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

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