dawar budroo Ответов: 1

Пожалуйста, помогите, что это за логическая ошибка ... Скомпилируйте и запустите код и проверьте .. Г это дает непредвиденную ошибку


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>

int main()
{
	int a=0,b=0;
	int sum,diff,mult,R;
	float div;
	char c,ch;

do
{
	printf("\n\n\tENTER THE FIRST operand   ");
	scanf("%d",&a); //takes value for a for eg 7
	printf("\n\n\tENTER THE SECOND operand   ");
	scanf("%d",&b);//takes value for b for eg 4
	printf("\t\n\n_______________________________");
	printf("\t | ENTER THE DESIRED OPERATOR |");
	printf("\t_______________________________");
	printf("\n\n \t\tFOR SUMMATION PRESS +  \n\n \t\tFOR DIFFERENCE PRESS -  \n\n \t\tFOR PRODUCT PRESS * \n\n \t\tFOR DIVISION PRESS / \n\n \t\tTO FIND REMAINDER ONLY PRESS %% \n\n \t\tPRESS 0 TO EXIT\n\n");
	scanf("%s",&c);
	printf("\t\n\n  OPERATION TO BE PERFORMED IS '%c' PRESS ANY KEY TO CONTINUE",c);
	getch();

 if(c=='+'||c=='-'||c=='*'||c=='/'||c=='%'||c=='0')
{
	printf("\n\n |RESULTS|");

	if(c=='-')
	{	
	diff=a-b;
	printf("\n\nDIFFERENCE OF %d AND %d IS : %d \n\n",a,b,diff);// here it should give output as 7-4=3 but it gives 7-0=7 . why is it so
getch();
}  else if(c=='+')
{	
	sum=a+b;
	printf("\n\n\tSUMMATION OF %d AND %d IS : %d \n\n",a,b,sum);
	getch();
} else if(c=='*')
{	
	mult=a*b;
	printf("\n\n\tPORDUCT OF %d AND %d IS : %d \n\n",a,b,mult);
	getch();
} else if(c=='/')
{	
	div=a/(float)b;
	printf("\n\n\tDIVISION OF %d AND %d IS : %f \n\n",a,b,div);
	getch();
} else if(c=='%')
{	
	R=a%b;
	printf("\n\n\tREMAINDER WHEN %d IS DIVIDED BY %d IS : %d \n\n",a,b,R);
	getch();
}
}
else {
	printf("\n\n\n\t\t\t  INVALID OPERATOR ENTER CORRECT OPERATOR ");
	getch();
}

}while(c!= '0');
return 0;
}


Что я уже пробовал:

я попытался инициализировать значения в начале, то есть int a=7, b=4;
делая это, он дает правильную вещь, но когда мы используем scanf для получения входных данных от пользователя, он не работает

Richard MacCutchan

Для меня это прекрасно работает, как только я удалил все эти избыточные вызовы. getch().

dawar budroo

я попробовал это сделать, но все равно wn я ввожу входы для a и b, это приводит b к нулю на выходе


#include< stdio.h>
#включить & lt;conio. h>
#include<stdlib.h>
#include< math. h>

главный()
{

int a=0, b=0;
инт сумма;
чар с;




printf ("\n\n\tENTER первый операнд ");
scanf ("%d",& a);
printf ("\n\n\tENTER второй операнд ");
scanf ("%d",& b);

printf ("\n\n \t\TFOR SUMMATION PRESS + ");

scanf ("%s",& c);

если (c=='+')
{


printf ("\n\n|результаты / ");




сумма=a+b;
е("\п\п\tSUMMATION В %D и %D : %Д \П\П"А,Б,Сум);
геч();

}
ещё {

printf ("\n\n\n\t\t недопустимый оператор введите правильный оператор ");
геч();



}
}

dawar budroo

Введите первый операнд 7


Введите второй операнд 8


ДЛЯ СУММИРОВАНИЯ НАЖМИТЕ + +


|РЕЗУЛЬТАТЫ|

СУММИРОВАНИЕ 7 И 0 РАВНО: 7


я получаю это в качестве вывода

1 Ответов

Рейтинг:
2

KarstenK

Прочитайте документация scanfвнимательно. Взгляните также на пример кода,чтобы понять использование строки.

Ваш c-это символ нет строка.

Таким образом, правильный код будет:

scanf("%c",&c);


dawar budroo

пожалуйста, запустите программу и посмотрите, в чем ошибка ... я использую символы + - /и другие, поэтому в c u используйте %s, а не %c проблема заключается во входных данных, которые вы даете

dawar budroo

printf ("\n\n\tENTER первый операнд ");
scanf ("%d",&a); //принимает значение a для eg 7
printf ("\n\n\tENTER второй операнд ");
scanf ("%d",&b);//принимает значение b для eg 4
............
.......
diff=a-b;
printf ("\n\nDIFFERENCE of %d AND %d IS : %d \n\n", a, b, diff);// здесь он должен выдавать результат как 7-4=3, но дает 7-0=7 . почему это так