Конвертер валют: Проходит только один цикл - 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д