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

Ogranicenje unosa karaktera u niz!

[es] :: C/C++ programiranje :: C/C++ za početnike :: Ogranicenje unosa karaktera u niz!

[ Pregleda: 3043 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

azzpoz

Član broj: 300637
Poruke: 96



+1 Profil

icon Ogranicenje unosa karaktera u niz!11.01.2013. u 10:40 - pre 87 meseci
Kako da uspijem ograničiti unos karaktera u niz (po 1 karakter)?

Code:

for (int i = 0; i < 20; i++)
{
   cin >> niz[i];   // niz i u zagradama
   if (niz[i+1] != 0) /* provjera da li je uneseno u niz[0] više karaktera, jer ako ih je više svrstavaju se autom. u sljedeće nizove,
                                                                                 a to ne želim */
   {
      cout << VISE od 1 karaktera"; // moja zamisao, ali ne funkcioniše?!
      i--;
   }
}



[Ovu poruku je menjao Mihajlo Cvetanović dana 11.01.2013. u 12:51 GMT+1]

[Ovu poruku je menjao azzpoz dana 11.01.2013. u 13:52 GMT+1]

[Ovu poruku je menjao azzpoz dana 11.01.2013. u 14:01 GMT+1]

[Ovu poruku je menjao azzpoz dana 11.01.2013. u 14:01 GMT+1]
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1224



+92 Profil

icon Re: Ogranicenje unosa karaktera u niz!11.01.2013. u 11:55 - pre 87 meseci
Šta je tačno "niz", i kakva mu je svrha ovde? Zašto se element "niza" niz[i+1] ispituje u trenutku kada još nije ni inicijalizovan? Zašto se promenljiva "i" dekrementira?

Daj nam primer inputa, i outputa koji odgovara datom inputu.
 
Odgovor na temu

azzpoz

Član broj: 300637
Poruke: 96



+1 Profil

icon Re: Ogranicenje unosa karaktera u niz!11.01.2013. u 12:50 - pre 87 meseci
Niz je vel 20.
int niz[20]; // greška -> char na mjestu int
Pomoću "for" petlje ponavlja se program od 0 do 19 i tako upisujem karaktere sa cin>>niz;

Interesuje me da li mogu ograničiti unos na smo jedan karakter(znak), jer ja kada upišem "aeiou"= a se svrsta u niz[0], e u niz[1], i u niz[2], itd.

Želio bih omoguciti samo unos jedne znamenke!!!



INPUT: cin>>niz[0]; cin>>niz[1]; cin>>niz[2] -> do 20;
Kada u cin>>niz[0] unesem aeiou, znakovi poslije a se autom. svrstavaju u sljedeće memorijske lokacije(indekse), a to ne želim!!!

[Ovu poruku je menjao azzpoz dana 11.01.2013. u 15:32 GMT+1]
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1224



+92 Profil

icon Re: Ogranicenje unosa karaktera u niz!11.01.2013. u 13:07 - pre 87 meseci
Ne verujem da to tako radi. Ako je "niz" tipa int[], i ti radiš cin >> niz[0] onda program pokušava da učita jedan int. Ako se programu unese "aeiou" onda program treba već kod prvog znaka ("a") da zaustavi učitavanje jer znak "a" nije int (niti je cifra 0-9, niti znak + ili -). Ako se dobro sećam niz[0] bi samo dobio vrednost 0.
 
Odgovor na temu

azzpoz

Član broj: 300637
Poruke: 96



+1 Profil

icon Re: Ogranicenje unosa karaktera u niz!11.01.2013. u 13:18 - pre 87 meseci
Ako je tipa int mozemo unositi samo po jedan znak.
Meni je potrebno da ograničim tip char da u niz unosim po jedan karakter, a ne da mogu cijeli niz unijeti od jedanput.

* nadam se da me razumijete šta želim objasniti *
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1224



+92 Profil

icon Re: Ogranicenje unosa karaktera u niz!11.01.2013. u 13:57 - pre 87 meseci
Ne razumem kako u istoj rečenici imaš i "int" i "znak". Razumeo bih da govorimo o "char" i "znak", ali int predstavlja brojeve u rasponu od −2,147,483,648 do 2,147,483,647, a ne znakove.
 
Odgovor na temu

azzpoz

Član broj: 300637
Poruke: 96



+1 Profil

icon Re: Ogranicenje unosa karaktera u niz!11.01.2013. u 14:31 - pre 87 meseci
char niz[20] // niz velicine 20, ali tipa char

for(int i=0; i<20; i++) cin>>niz; // za unos zmaj => niz[0]=z; niz[1]=m; niz[2]=a; niz[3]=j;
Želim omogućiti unos po jednog slova, a ako unesem više od 1 kao npr. zmaj, da se unos ponovi dok se ne unose po jedno slovo!
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1224



+92 Profil

icon Re: Ogranicenje unosa karaktera u niz!11.01.2013. u 14:50 - pre 87 meseci
Ovo se radi tako što pročitaš ceo string u nekoj privremenoj promenljivoj, i onda proveravaš taj string da li ti odgovara. Funkcija koja se koristi za čitanje stringa je getline, koja je specijalno definisana za std::string u zaglavlju <string>:

Umesto linije "cin >> niz", ili "cin >> niz[i ]" (sad već ne znam koja je od te dve) treba ti ovo:

Code:
for (;;)
{
   string temp;
   getline(cin, temp);

   if (temp.size() == 1)
   {
      niz[i] = temp[0];
      break;
   }

   cout << "Više od jednog karaktera" << endl;
}
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4867
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+622 Profil

icon Re: Ogranicenje unosa karaktera u niz!11.01.2013. u 15:01 - pre 87 meseci
Programski jezici C/C++ nemaju u standardnim bibliotekama ukljucene bog zna kakve mehanizme za "user friendly" unos podataka kroz konzolu. Svako taj "problem" resava na svoj nacin.

Sada je pitanje, sta konkretno zelis da postignes, da li je to skolski zadatak (didakticki oblikovan) u kome moras da upotrebis ono sto je zadato, ili mozes da se dovijas kako tebi odgovara.

Ja nikada ne bih korisnicki interfejs projektovao na nacin kako si zamislio zadatkom, ali kad bih morao, verovatno bih upotrebio neku pomocnu promenljivu:

// primer: NETESTIRANO
Code:

#include <iostream>
using namespace std;

const int VELICINA_NIZA = 20;

int main()
{
    string tmp;
    char niz[VELICINA_NIZA+1] ={0};

    for ( int i=0; i<VELICINA_NIZA; i++ )
    {
        cout << "Unesi jedno slovo: ";
        getline(cin, tmp);
        if (tmp.size() != 1)
        {
            cerr << "Uneli ste " << tmp.size() << " karaktera, ponovite upis!" << endl;
            --i;
            continue;
        }
        niz[i] = tmp[0];

    }
    cout << "Rec: " << niz;

    return 0;
}




Konacno, pogledaj funkciju kbhit(), koja u petlji ceka pritisak tastera, a kasnije taj pritisnuti karakter mozes konvertovati u sta god zelis, tj redom u karaktere "niz[]-a" koga pominjes.
Primer: http://www.elitesecurity.org/p1786975

 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4867
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+622 Profil

icon Re: Ogranicenje unosa karaktera u niz!11.01.2013. u 15:02 - pre 87 meseci
Heh, evo Mihajlo me pretekao :)
 
Odgovor na temu

azzpoz

Član broj: 300637
Poruke: 96



+1 Profil

icon Re: Ogranicenje unosa karaktera u niz!11.01.2013. u 16:32 - pre 87 meseci
Od pomoći mi je!!!

Zahvaljujem vam se do sljedećeg mog novog problema :)

[Ovu poruku je menjao azzpoz dana 11.01.2013. u 17:46 GMT+1]
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Ogranicenje unosa karaktera u niz!

[ Pregleda: 3043 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

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