Конвертер валют: Проходит только один цикл - 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);
}
Объяснение кода листинга программы
- Объявление переменных: 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(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); } - Проверка выбранной валюты и выполнение соответствующих действий:
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); } - Проверка корректности введенных данных:
if(a < 'a' || a > 'c')
printf(
Prosze podac jedna litere:\n); - Завершение программы: return(0);