fork(6) download
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. using namespace std;
  6.  
  7. char grade[3];
  8. char grades[] = {'A', 'B', 'C', 'D', 'F'};
  9.  
  10. float modifier = 0.3f,
  11. result = 0.0f;
  12.  
  13. int gNum = strlen(grades),
  14. maxValue = gNum-1;
  15.  
  16. //Function that checks if the input is a valid grade format. This isn't really required though.
  17. bool isValidGrade(char* grade){
  18. for(int i = 0; i < gNum; i++){
  19. if(grade[0] == grades[i] &&(grade[1] == '\0' || (grade[1] != '\0' && (grade[1] == '-' || grade[1] == '+')))){
  20. return true;
  21. }
  22. }
  23. return false;
  24. }
  25.  
  26. int main (){
  27. cin>>grade;
  28.  
  29. if(isValidGrade(grade)){
  30. //null second char, F and A+ will set the modifier to 0
  31. if(grade[0] == 'F' || (grade[0] == 'A' && grade[1] == '+') || grade[1] == '\0'){
  32. modifier = 0.0;
  33. }else if(grade[1] == '-'){ //Check if modifier needs to be inverted
  34. modifier *= -1.0;
  35. }
  36.  
  37. //Find our grade, then use the index to get our base value and add the modifier
  38. for(int i = 0; i < gNum; i++){
  39. if(grades[i] == grade[0]){
  40. result = (float)(maxValue - i) + modifier;
  41. break;
  42. }
  43. }
  44.  
  45. //Print the grade value
  46. cout<<result;
  47. }else{
  48. //Print error message.
  49. cout<<"\""<<grade<<"\" is not a valid grade.";
  50. }
  51. return 0;
  52. }
Success #stdin #stdout 0s 2900KB
stdin
B+
stdout
3.3