C - Print a char returned by a function -
update: final if statement if(lettergrade <= 'a' && lettergrade >= 'f')
incorrect ascii value f (70) greater (65).
i'm trying print character returned function in c.
my function, assignletter, given float, , returns character.
when run program is:
skirchbaum:~/workspace/hmwk/hmwk4 $ ./assignletter enter pointsgrade 100 pointsgrade: 100.00 lettergrade:
nothing gets printed lettergrade (i have tried multiple cases - 100.1, 1, etc)
what doing wrong?
code:
/* input: grade points functionality: converts point grade letter grade output: char representing letter grade, or -1 if error letter grade breakdown: = 100 - 91 b = 90 - 81 c = 80 - 71 d = 70 - 61 f = 60 , below */ #include <stdio.h> #include <stdlib.h> #define debug 1 char assignletter(float pointsgrade); char lettergrade; float pointsgrade; int main(){ //input pointsgrade debugging #ifdef debug printf("enter pointsgrade\n"); scanf("%f", &pointsgrade); lettergrade = assignletter(pointsgrade); printf("pointsgrade: %.2f lettergrade: %c\n", pointsgrade, lettergrade); #endif } char assignletter(float pointsgrade){ char lettergrade; //grade if(pointsgrade <= 100 && pointsgrade >= 91){ lettergrade = 'a'; } //grade b if(pointsgrade <= 90 && pointsgrade >= 81){ lettergrade = 'b'; } //grade c if(pointsgrade <= 80 && pointsgrade >= 71){ lettergrade = 'c'; } //grade d if(pointsgrade <= 70 && pointsgrade >= 61){ lettergrade = 'd'; } //grade f if(pointsgrade <= 60){ lettergrade = 'f'; } //return letter grade or -1 if error if(lettergrade <= 'a' && lettergrade >= 'f'){ return lettergrade; } else{ return -1; } }
the condition not formed, 'f' 70 in ascii , 'a' 65
if (lettergrade <= 'a' && lettergrade >= 'f') { return lettergrade; }
won't evaluate true lettergrade ('a') less 70 ('f') , not bigger it
you'd rather way
if (lettergrade >= 'a' && lettergrade <= 'f') { return lettergrade; }
by flipping bigger , less signs
Comments
Post a Comment