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

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

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

Конвертер валют. Если выберу "б", все равно проходит цикл а. Что не так?
#include <stdio.h>
int main(void){
 
    char a,b,c;
    a= 'a';
    b='b';
    c='c';
    int ab, ac, ba,bc, ca,cb;
    int zl, dol, eu;
    int sum1, sum2, sum3, sum4, sum5, sum6;

    printf("Program konwertacji walut");
    printf("Wybierz walute dla konwertacji:\n");
    printf("a.Zlotowki\n");
    printf("b.Dolary\n");
    printf("c.Euro\n");

    if(scanf("%c", &a)){
 
        printf("Wybierz w co konwertowac:\n");
        printf("1.dolary\n");
        printf("2.euro\n");
        scanf("%i", &zl);

        if(zl == 1){
           printf("Podaj kwote w zlotych:\n");
           scanf("%i",&ab);
           sum1 = ab*3.72;
           printf("%i w dolarach : %i", ab, sum1);
        }
        else if(zl == 2){
             printf("Podaj kwote w zlotych:\n");
            scanf("%i", &ac);
            sum2 = ac*4.23;
            printf("%i w euro : %i", ac, sum2);
        }
        else{
            printf("Niepoprawnie !");
        }
    }

   else if(scanf("%c", &b)){
 
        printf("Wybierz w co konwertowac:\n");
        printf("3.zlotowki\n");
        printf("4.euro\n");
        scanf("%i", &dol);

        if(dol == 3){
           printf("Podaj kwote w dolarach:\n");
           scanf("%i", &ba );
           sum3 = ba*3.71;
           printf("%i w zlotowkach : %i", ba, sum3);
        }
        else if(dol == 4){
            printf("Podaj kwote w dolarach:\n");
            scanf("%i", &bc);
            sum4 = bc * 1.13;
            printf("%i w euro : %i", bc, sum4);
        }
        else{
            printf("Niepoprawnie !");
        }

    }
     else if(scanf("%c", &c)){
        printf("Wybierz w co konwertowac:\n");
        printf("1.zlotowki\n");
        printf("2.dolary\n");
        scanf("%i", &eu);

         if(eu == 1){
           printf("Podaj kwote w euro:\n");
           scanf("%i",&ca);
           sum5 = ca*4.23;
           printf("%i w zlotowkach : %i", ca, sum5);
        }
        else if(eu == 2){
            printf("Podaj kwote w euro:\n");
            scanf("%i",&cb);
            sum6 = cb*1.13;
            printf("%i w dolarach : %i", cb, sum6);
        }
 
         else{
             printf("Niepoprawnie !");
         }
 
    }
    else{
        printf("Prosze podac jedna litere: ");
    }
    return(0);
}

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

textual
Листинг программы
#include <stdio.h>
int main(void)
{
    char a;
    int b, zl;
    double sum;
    printf("                Program konwertacji walut.\n");
    printf("    Wybierz walute dla konwertacji:\n");
    printf("a.Zlotowki\n");
    printf("b.Dolary\n");
    printf("c.Euro\n");
    scanf(" %c", &a);
    if(a == 'a'){
        printf("Wybierz w co konwertowac:\n");
        printf("1.dolary\n");
        printf("2.euro\n");
        scanf(" %i", &zl);
        if(zl == 1){
            printf("Podaj kwote w zlotych:\n");
            scanf(" %i",&b);
            sum = b * 3.72;
            printf("%i w dolarach : %g\n", b, sum);
        }
        if(zl == 2){
            printf("Podaj kwote w zlotych:\n");
            scanf(" %i", &b);
            sum = b * 4.23;
            printf("%i w euro : %g\n", b, sum);
        }
        if(zl != 1 && zl != 2)
            printf("Niepoprawnie !");
    }
    if(a == 'b'){
        printf("Wybierz w co konwertowac:\n");
        printf("1.zlotowki\n");
        printf("2.euro\n");
        scanf(" %i", &zl);
        if(zl == 1){
            printf("Podaj kwote w dolarach:\n");
            scanf("%i", &b);
            sum = b * 3.71;
            printf("%i w zlotowkach : %g\n", b, sum);
        }
        if(zl == 2){
            printf("Podaj kwote w dolarach:\n");
            scanf(" %i", &b);
            sum = b * 1.13;
            printf("%i w euro : %g\n", b, sum);
        }
        if(zl != 1 && zl != 2)
            printf("Niepoprawnie !");
    }
    if(a == 'c'){
        printf("Wybierz w co konwertowac:\n");
        printf("1.zlotowki\n");
        printf("2.dolary\n");
        scanf(" %i", &zl);
        if(zl == 1){
            printf("Podaj kwote w euro:\n");
            scanf(" %i", &b);
            sum = b * 4.23;
            printf("%i w zlotowkach : %g\n", b, sum);
        }
        if(zl == 2){
            printf("Podaj kwote w euro:\n");
            scanf(" %i",&b);
            sum = b * 1.13;
            printf("%i w dolarach : %g\n", b, sum);
        }
        if(zl != 1 && zl != 2)
            printf("Niepoprawnie !");
        }
    if(a < 'a' || a > 'c')
        printf("Prosze podac jedna litere:\n ");
    return(0);
}

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

  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
Похожие ответы