Конвертер валют: Проходит только один цикл - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Конвертер валют. Если выберу "б", все равно проходит цикл а. Что не так?
Листинг программы
  1. #include <stdio.h>
  2. int main(void){
  3. char a,b,c;
  4. a= 'a';
  5. b='b';
  6. c='c';
  7. int ab, ac, ba,bc, ca,cb;
  8. int zl, dol, eu;
  9. int sum1, sum2, sum3, sum4, sum5, sum6;
  10.  
  11. printf("Program konwertacji walut");
  12. printf("Wybierz walute dla konwertacji:\n");
  13. printf("a.Zlotowki\n");
  14. printf("b.Dolary\n");
  15. printf("c.Euro\n");
  16.  
  17. if(scanf("%c", &a)){
  18. printf("Wybierz w co konwertowac:\n");
  19. printf("1.dolary\n");
  20. printf("2.euro\n");
  21. scanf("%i", &zl);
  22.  
  23. if(zl == 1){
  24. printf("Podaj kwote w zlotych:\n");
  25. scanf("%i",&ab);
  26. sum1 = ab*3.72;
  27. printf("%i w dolarach : %i", ab, sum1);
  28. }
  29. else if(zl == 2){
  30. printf("Podaj kwote w zlotych:\n");
  31. scanf("%i", &ac);
  32. sum2 = ac*4.23;
  33. printf("%i w euro : %i", ac, sum2);
  34. }
  35. else{
  36. printf("Niepoprawnie !");
  37. }
  38. }
  39.  
  40. else if(scanf("%c", &b)){
  41. printf("Wybierz w co konwertowac:\n");
  42. printf("3.zlotowki\n");
  43. printf("4.euro\n");
  44. scanf("%i", &dol);
  45.  
  46. if(dol == 3){
  47. printf("Podaj kwote w dolarach:\n");
  48. scanf("%i", &ba );
  49. sum3 = ba*3.71;
  50. printf("%i w zlotowkach : %i", ba, sum3);
  51. }
  52. else if(dol == 4){
  53. printf("Podaj kwote w dolarach:\n");
  54. scanf("%i", &bc);
  55. sum4 = bc * 1.13;
  56. printf("%i w euro : %i", bc, sum4);
  57. }
  58. else{
  59. printf("Niepoprawnie !");
  60. }
  61.  
  62. }
  63. else if(scanf("%c", &c)){
  64. printf("Wybierz w co konwertowac:\n");
  65. printf("1.zlotowki\n");
  66. printf("2.dolary\n");
  67. scanf("%i", &eu);
  68.  
  69. if(eu == 1){
  70. printf("Podaj kwote w euro:\n");
  71. scanf("%i",&ca);
  72. sum5 = ca*4.23;
  73. printf("%i w zlotowkach : %i", ca, sum5);
  74. }
  75. else if(eu == 2){
  76. printf("Podaj kwote w euro:\n");
  77. scanf("%i",&cb);
  78. sum6 = cb*1.13;
  79. printf("%i w dolarach : %i", cb, sum6);
  80. }
  81. else{
  82. printf("Niepoprawnie !");
  83. }
  84. }
  85. else{
  86. printf("Prosze podac jedna litere: ");
  87. }
  88. return(0);
  89. }

Решение задачи: «Конвертер валют: Проходит только один цикл»

textual
Листинг программы
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4.     char a;
  5.     int b, zl;
  6.     double sum;
  7.     printf("                Program konwertacji walut.\n");
  8.     printf("    Wybierz walute dla konwertacji:\n");
  9.     printf("a.Zlotowki\n");
  10.     printf("b.Dolary\n");
  11.     printf("c.Euro\n");
  12.     scanf(" %c", &a);
  13.     if(a == 'a'){
  14.         printf("Wybierz w co konwertowac:\n");
  15.         printf("1.dolary\n");
  16.         printf("2.euro\n");
  17.         scanf(" %i", &zl);
  18.         if(zl == 1){
  19.             printf("Podaj kwote w zlotych:\n");
  20.             scanf(" %i",&b);
  21.             sum = b * 3.72;
  22.             printf("%i w dolarach : %g\n", b, sum);
  23.         }
  24.         if(zl == 2){
  25.             printf("Podaj kwote w zlotych:\n");
  26.             scanf(" %i", &b);
  27.             sum = b * 4.23;
  28.             printf("%i w euro : %g\n", b, sum);
  29.         }
  30.         if(zl != 1 && zl != 2)
  31.             printf("Niepoprawnie !");
  32.     }
  33.     if(a == 'b'){
  34.         printf("Wybierz w co konwertowac:\n");
  35.         printf("1.zlotowki\n");
  36.         printf("2.euro\n");
  37.         scanf(" %i", &zl);
  38.         if(zl == 1){
  39.             printf("Podaj kwote w dolarach:\n");
  40.             scanf("%i", &b);
  41.             sum = b * 3.71;
  42.             printf("%i w zlotowkach : %g\n", b, sum);
  43.         }
  44.         if(zl == 2){
  45.             printf("Podaj kwote w dolarach:\n");
  46.             scanf(" %i", &b);
  47.             sum = b * 1.13;
  48.             printf("%i w euro : %g\n", b, sum);
  49.         }
  50.         if(zl != 1 && zl != 2)
  51.             printf("Niepoprawnie !");
  52.     }
  53.     if(a == 'c'){
  54.         printf("Wybierz w co konwertowac:\n");
  55.         printf("1.zlotowki\n");
  56.         printf("2.dolary\n");
  57.         scanf(" %i", &zl);
  58.         if(zl == 1){
  59.             printf("Podaj kwote w euro:\n");
  60.             scanf(" %i", &b);
  61.             sum = b * 4.23;
  62.             printf("%i w zlotowkach : %g\n", b, sum);
  63.         }
  64.         if(zl == 2){
  65.             printf("Podaj kwote w euro:\n");
  66.             scanf(" %i",&b);
  67.             sum = b * 1.13;
  68.             printf("%i w dolarach : %g\n", b, sum);
  69.         }
  70.         if(zl != 1 && zl != 2)
  71.             printf("Niepoprawnie !");
  72.         }
  73.     if(a < 'a' || a > 'c')
  74.         printf("Prosze podac jedna litere:\n ");
  75.     return(0);
  76. }

Объяснение кода листинга программы

  1. Объявление переменных: char a; int b, zl; double sum;
  2. Вывод приветствия и списка валют: printf(             Program konwertacji walut.\n); printf(   Wybierz walute dla konwertacji:\n); printf(a.Zlotowki\n); printf(b.Dolary\n); printf(c.Euro\n);
  3. Считывание выбранной валюты: scanf(%c, &a);
  4. Проверка выбранной валюты и вывод соответствующего сообщения: if(a == 'a'){ printf(Wybierz w co konwertowac:\n); printf(1.dolary\n); printf(2.euro\n); scanf(%i, &zl); } if(a == 'b'){ printf(Wybierz w co konwertowac:\n); printf(1.zlotowki\n); printf(2.euro\n); scanf(%i, &zl); } if(a == 'c'){ printf(Wybierz w co konwertowac:\n); printf(1.zlotowki\n); printf(2.dolary\n); scanf(%i, &zl); }
  5. Проверка выбранной валюты и выполнение соответствующих действий: if(a == 'a' && zl == 1){ printf(Podaj kwote w zlotych:\n); scanf(%i, &b); sum = b 3.72; printf(%i w dolarach : %g\n, b, sum); } if(a == 'a' && zl == 2){ printf(Podaj kwote w zlotych:\n); scanf(%i, &b); sum = b 4.23; printf(%i w euro : %g\n, b, sum); } if(a == 'b' && zl == 1){ printf(Podaj kwote w dolarach:\n); scanf(%i, &b); sum = b 3.71; printf(%i w zlotowkach : %g\n, b, sum); } if(a == 'b' && zl == 2){ printf(Podaj kwote w dolarach:\n); scanf(%i, &b); sum = b 1.13; printf(%i w euro : %g\n, b, sum); } if(a == 'c' && zl == 1){ printf(Podaj kwote w euro:\n); scanf(%i, &b); sum = b 4.23; printf(%i w zlotowkach : %g\n, b, sum); } if(a == 'c' && zl == 2){ printf(Podaj kwote w euro:\n); scanf(%i,&b); sum = b 1.13; printf(%i w dolarach : %g\n, b, sum); }
  6. Проверка корректности введенных данных: if(a < 'a' || a > 'c') printf(Prosze podac jedna litere:\n);
  7. Завершение программы: return(0);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы