[ ivanzj @ 09.10.2008. 08:50 ] @
potrebno je napraviti program, koji ce za uneto slovo ispisati odgovarajuci broj a za broj odgovarajuca slova.

Code:

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

int main ()
{
    char z;
    printf("upisite broj ili slovo.\n");
    z=tolower(getchar());
    switch( z )
     {
        case '2':
            printf("a,b,c.\n",z);
            break;
        case '3':
            printf("d,e,f.\n",z);
            break;
        case '4':
            printf("g,h,i.\n",z);
            break;
        case '5':
            printf("j,k,l.\n",z);
            break;
        case '6':
        printf("m,n,o.\n",z);
            break;
.

.


problem je sto ne znam da ga nateram da prepozna napr.10 i da ispise nesto tipa to ne postoji

hvala
[ karas @ 09.10.2008. 09:22 ] @
switch radi samo sa integralnim tipovima tako da
Code:

case '10':

ne mozes da koristis. Zapravo, '10' nije ni pravilno, treba "10". Ubaci jednu default granu za sve ostalo sto ne postoji.
[ StefanJer91 @ 09.10.2008. 10:10 ] @
Ako ti treba za proveravanje broja, koristi scanf

Code:

int b;
printf("Unesite broj: ");
scanf("%d", &b);


Posle radis proveru koja ti treba :) Inace razmisli o tome da ne koristis switcheve jer koliko vidim postoji pravilo kako se dobijaju slova tako da se to moze dosta skratiti. Recimo ako je:
0 a, b, c
1 d, e, f
2 g, h, i
...

onda moze nesto ovako (nisam testirao ali 99% radi)

Code:

char c = 'a'+b*3;
printf("%c %c %c\n", c, c+1, c+2);


EDIT:
Ovako ces i lakse moci da testiras da li ima neki broj odnosno ako je b > 9 ili ako je b < 0 onda program ne moze da radi :)
[ ivanzj @ 13.10.2008. 15:51 ] @
program mi izgleda ovako:
Code:

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

int main ()
{
    char z;
    printf("upisi neseto\n");
    z=tolower(getchar());
     switch( z )
     {
        case '2':
            printf("na 2 su a,b,c.\n",z);
            break;
        case '3':
            printf("na  3 su d,e,f.\n",z);
            break;
        case '4':
            printf("na 4 su g,h,i.\n",z);
            break;
        case '5':
            printf("na 5 su j,k,l.\n",z);
            break;
        case '6':
            printf("na  6  m,n,o.\n",z);
            break;
        case '7':
            printf("na  7 p,q,r,s.\n",z);
            break;
        case '8':
            printf("na 8  t,u,v.\n",z);
            break;
        case '9':
            printf("na9  w,x,y,z.\n",z);
            break;
        case '1':
            printf("na  1 nisu nikakva slova.\n",z);
            break;  
        case 'a' :
        case 'b' :
        case 'c' :
         printf("broj 2 odgovara slovu %c na telefonu.\n",z);
         break;
        case 'd':
        case 'e':
        case 'f':
            printf("broj 3 odgovara slovu %c na telefonu.\n",z);
            break;
        case 'g':
        case 'h':
        case 'i':
            printf(" 4 \n",z);
            break;
        case 'j':
        case 'k':
        case 'l':
            printf("5 %c \n",z);
            break;
        case 'm':
        case 'n':
        case 'o':
            printf("6 %c\n",z);
            break;
        case 'p':
        case 'q':
        case 'r':
        case 's':
            printf(" 7 %c\n",z);
            break;
        case 't':
        case 'u':
        case 'v':
            printf(" 8 %c\n",z);
            break;
        case 'w':
        case 'x':
        case 'y':
        case 'z':
            printf("9 %c\n",z);
            break;
    
        default  :
           printf( "%c nepravilno uneseno\n", z );
           break;
           }

     return 0;
}


e sad, ovo nije dobro, posto kad upisem 12, on procita samo prvi znak tj. 1, isto tako i ako upisem vise slova npr. xfgfd, uzme x

kako da resim ovo?

[Ovu poruku je menjao X Files dana 13.10.2008. u 18:06 GMT+1]
[ Aleksandar Ružičić @ 13.10.2008. 16:34 ] @
koristi gets umetso getchar (i naravno treba ti neki buffer u koji ces da smestis unos)
[ ivanzj @ 15.10.2008. 23:56 ] @
Code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
    char z[10];

    printf("Zadajte cislicu alebo pismeno.\n");
    
    scanf("%s", z);

    if(strlen(z) > 1)
        printf("\n**ERROR*\n");
        int i = 0;
        while(i < strlen(z))
          
        {


     switch( z[i])
     {
        case '2':
            printf("na 2 su a,b,c.\n",z);
            break;
        case '3':
            printf("na  3 su d,e,f.\n",z);
            break;
        case '4':
            printf("na 4 su g,h,i.\n",z);
            break;
        case '5':
            printf("na 5 su j,k,l.\n",z);
            break;
        case '6':
            printf("na  6  m,n,o.\n",z);
            break;
        case '7':
            printf("na  7 p,q,r,s.\n",z);
            break;
        case '8':
            printf("na 8  t,u,v.\n",z);
            break;
        case '9':
            printf("na9  w,x,y,z.\n",z);
            break;
        case '1':
            printf("na  1 nisu nikakva slova.\n",z);
            break;  
        case 'a' :
        case 'b' :
        case 'c' :
         printf("broj 2 odgovara slovu %c na telefonu.\n",z[i]);
         break;
        case 'd':
        case 'e':
        case 'f':
            printf("broj 3 odgovara slovu %c na telefonu.\n",z[i]);
            break;
        case 'g':
        case 'h':
        case 'i':
            printf(" 4 \n",z[i]);
            break;
        case 'j':
        case 'k':
        case 'l':
            printf("5 %c \n",z[i]);
            break;
        case 'm':
        case 'n':
        case 'o':
            printf("6 %c\n",z[i]);
            break;
        case 'p':
        case 'q':
        case 'r':
        case 's':
            printf(" 7 %c\n",z[i]);
            break;
        case 't':
        case 'u':
        case 'v':
            printf(" 8 %c\n",z[i]);
            break;
        case 'w':
        case 'x':
        case 'y':
        case 'z':
            printf("9 %c\n",z[i]);
            break;
    
        default  :
           printf( "%c nepravilno uneseno\n", z [i]);
           break;
           }

     return 0;
}


ovako sam uradio. Sad imam problem. Ispise mi i error, ali i vrednost za svaki znak ponaosob

[Ovu poruku je menjao ivanzj dana 16.10.2008. u 02:24 GMT+1]
[ ivanzj @ 16.10.2008. 09:26 ] @
ok
resio sam to

Code:

#include

<stdio.h> 
#include

<string.h> 
int

main () 
{




char z[100]; 
printf("Zadajte cislicu alebo pismeno.\n");


 

scanf("%s", z);


int i = 0; 


if(strlen(z) > 1){ 
printf("\n**ERROR*\n");

}


else{ 
 


{

 


switch( z[i]) 
{


case '2': 
printf("na klavese 2 sa nachadzaju pismena a,b,c.\n",z);


break; 

case '3': 
printf("na klavese 3 sa nachadzaju pismena d,e,f.\n",z);


break; 

case '4': 
printf("na klavese 4 sa nachadzaju pismena g,h,i.\n",z);


break; 

case '5': 
printf("na klavese 5 sa nachadzaju pismena j,k,l.\n",z);


break; 

case '6': 
printf("na klavese 6 sa nachadzaju pismena m,n,o.\n",z);


break; 

case '7': 
printf("na klavese 7 sa nachadzaju pismena p,q,r,s.\n",z);


break; 

case '8': 
printf("na klavese 8 sa nachadzaju pismena t,u,v.\n",z);


break; 

case '9': 
printf("na klavese 9 sa nachadzaju pismena w,x,y,z.\n",z);


break; 

case '1': 
printf("na klavese 1 nie su ziadne pismena.\n",z);


break; 

case '0': 
printf("na klavese 0 nie su ziadne pismena.\n",z);


break; 

case 'a' : 

case 'b' : 

case 'c' : 

case 'A' : 

case 'B' : 

case 'C' : 
printf("Cislica 2 odpoveda pismenu %c na telefone.\n",z[i]);


break; 

case 'd': 

case 'e': 

case 'f': 

case 'D': 

case 'E': 

case 'F': 
printf("Cislica 3 odpoveda pismenu %c na telefone.\n",z[i]);


break; 

case 'g': 

case 'h': 

case 'i': 

case 'G': 

case 'H': 

case 'I': 
printf("Cislica 4 odpoveda pismenu %c na telefone.\n",z[i]);


break; 

case 'j': 

case 'k': 

case 'l': 

case 'J': 

case 'K': 

case 'L': 
printf("Cislica 5 odpoveda pismenu %c na telefone.\n",z[i]);


break; 

case 'm': 

case 'n': 

case 'o': 

case 'M': 

case 'N': 

case 'O': 
printf("Cislica 6 odpoveda pismenu %c na telefone.\n",z[i]);


break; 

case 'p': 

case 'q': 

case 'r': 

case 's': 

case 'P': 

case 'Q': 

case 'R': 

case 'S': 
printf("Cislica 7 odpoveda pismenu %c na telefone.\n",z[i]);


break; 

case 't': 

case 'u': 

case 'v': 

case 'T': 

case 'U': 

case 'V': 
printf("Cislica 8 odpoveda pismenu %c na telefone.\n", z[i]);


break; 

case 'w': 

case 'x': 

case 'y': 

case 'z': 

case 'W': 

case 'X': 

case 'Y': 

case 'Z': 
printf("Cislica 9 odpoveda pismenu %c na telefone.\n", z[i]);


break; 


default : 
printf( "%c nie je spravny znak.\n", z[i] );


break; 
}

i++;

}

}


return 0; 




:D