[ Struja01 @ 27.05.2009. 20:45 ] @
Tekst zadatka:
Napisati program na jeziku S u kome će biti definisane dve funkcije. Prva
funkcija slovo() čita sa tastature slovo i ako je to slovo malo vraća isto veliko
a ako je veliko slovo vraća isto malo. Druga funkcija broj() prihvata ceo broj
(kao znak) i vraća broj (kao znak) koji je dopuna prihvaćenog broja do broja 10.
Glavni program prihvata znak sa tastature, prepoznaje da li je broj ili slovo,
poziva odgovarajuću funkciju i prikazuje na ekranu rezultat pozvane funkcije.
Postupak se ponavlja sve dok se ne unese znak koji je različit od broja ili slova.

Moje pitanje je zasto program ne radi normalno kad ubacim petlju :(, evo probajte i Vi pa ako neko zna resenje da mi javi...
Ja sam uradio prvi dio, funkciju "slovo" :
Code:

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

    char slovo (char s);

    main ()
    
{
        char c;
    
        
        while(1)    //Kada uklonim petlju program radi normalno
        {
            
            puts("Unesite neki znak: "); //Posle drugog kruga petlje i nadalje 2 puta se izvrsi ova naredba
            c=getchar();        
            
            if ( isalpha (c) )
            {
                c = slovo (c);
                putchar(c);
                printf("\n");
            }

            else if (isalpha(c) == 0)
            {
                printf("Znak nije slovo\n");
                
            }
    
        }

}
    
    char slovo (char s)

    {
        if (s >= 65 && s <= 90)
        {
            return tolower(s);
        }


        if (s >= 97 && s <= 122)
        {
            return toupper(s);
        }
        
        return s;

    }

/* Koji je problem zasto se petlja normalno ne izvrsava??? */


[Ovu poruku je menjao X Files dana 27.05.2009. u 21:59 GMT+1]
[ hajduk7 @ 27.05.2009. 20:59 ] @
Brate nisam bas najbolje razumeo sta si hteo na napises ali iz primera vidim da si napravio beskonacnu petlju. Moras petlji lepo da zadas uslov dokle se petlja vrti. Npr while(i<10) kad je ovako napisana petlja ona ce se izvrsavati sve dok je i manje od 10 kada uslov nije tacan ona prestaje sa radom e sad za to sto si ti hteo da uradis to je malo komplikovanije od onoga sto si ti hteo.
[ Struja01 @ 27.05.2009. 21:05 ] @
Prvo da ti se zahvalim na brzom odgovoru!

Razumem ja kako petlje rade ... Ako bi probao program onda bi ukapirao sta mi je nejasno ...
[ hajduk7 @ 27.05.2009. 21:13 ] @
pa brate ova prva petlja while(1) to ti je beskonacna petlja i sam kazes kad nju uklonis ono radi ok probaj da je bolje formulisesh ili nemoj da je koristis. Ajde kad budem imao vreme probacu da vidim gde zapinje
[ lestrigonac @ 31.05.2009. 19:55 ] @
Code:

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

char slovo (char s);

void main ()

{
        char c;


        while(1) 
        {

            puts("Unesite neki znak:");
            scanf(" %c", &c);  //stavio sam scanf sa razmakom ispred %c jer sam imao slican problem sa ucitavanjem

            if ( isalpha (c) )
            {
                c = slovo (c);
                putchar(c);
                printf("\n");
            }

            else if (isalpha(c) == 0)
            {
                printf("Znak nije slovo\n");
                break;    //ovde zavrsava program ako se unese neki znak
            }

        }

}

    char slovo (char s)

    {
        if (s >= 65 && s <= 90)
        {
            return tolower(s);
        }


        if (s >= 97 && s <= 122)
        {
            return toupper(s);
        }

    }


Sada bi trebalo da radi, jos samo dodaj funkciju za broj i jedan if izmedju ova dva gde ces proveravati da li je broj i to je to :)
I imao si jedan return viska u ovoj funkciji slovo koliko mi se cini :)

Pozdrav Lestrigonac
[ Struja01 @ 31.05.2009. 21:00 ] @
Sad sam video gde je greska, samo u tome razmaku kod funkcije scanf... Tesko da bi uspio otkriti samo ...Hvala Ti puno! :)

[ hajduk7 @ 01.06.2009. 22:28 ] @
ali sad meni nije jasno zasto si napisao da ti while petlja pravi problem
[ Struja01 @ 01.06.2009. 23:02 ] @
Citat:
hajduk7: ali sad meni nije jasno zasto si napisao da ti while petlja pravi problem

To sam reko da sugerisem na problem jer petlja se nije izvrsavala ...
[ lestrigonac @ 02.06.2009. 14:28 ] @
I tome sluzi onaj break :)