Другие языки программирования и технологии
Помогите найти ошибку в калькуляторе Си
#include <stdio.h> float a,b; char z; int main() { printf("Vvedite"); scanf("%f %c %f", &a,&z,&b); printf("%f %c %f = %f\n",a,z,b,a z b); return 0; } Компилятор говорит где-то в 11 строчке (где второй принтф)
А знаки мат действий кто будет указывать?
printf("%f %c %f = %f\n",a,z,b,a*z*b);
если не умножение, то пишите что
"z - у меня знак"
так это НЕ РАБОТАЕТ в С!! !
если вводите знак отдельно, то и делаете проверку, что за знак. .
if (z=='+') printf("%f %c %f = %f\n",a,z,b,a+b);
if (z=='*') printf("%f %c %f = %f\n",a,z,b,a*b);
и тд и тп. . можно сделать через switch
ps: вот вам простейший пример
#include<stdio.h>
float add(float,float);
float sub(float,float);
float product(float,float);
float divide(float,float);
void main()
{
float n1,n2;
char sym,choice;
printf("This Program is a program for calculator\n\n");
scanf("%f%c%f",&n1,&sym,&n2);
if(sym=='+')
printf("\n%f",add(n1,n2));
if(sym=='-')
printf("\n%f",sub(n1,n2));
if(sym=='*')
printf("\n%f",product(n1,n2));
if(sym=='/')
printf("%f",divide(n1,n2));
printf("\nDo you wish to continue[y/n]");
scanf("%s",&choice);
if(choice=='y'||choice=='Y')
main();
}
float add(float m1,float m2)
{
return(m1+m2);
}
float sub(float m1,float m2)
{
return(m1-m2);
}
float product(float m1,float m2)
{
return(m1*m2);
}
float divide(float m1,float m2)
{
return(m1/m2);
}
printf("%f %c %f = %f\n",a,z,b,a*z*b);
если не умножение, то пишите что
"z - у меня знак"
так это НЕ РАБОТАЕТ в С!! !
если вводите знак отдельно, то и делаете проверку, что за знак. .
if (z=='+') printf("%f %c %f = %f\n",a,z,b,a+b);
if (z=='*') printf("%f %c %f = %f\n",a,z,b,a*b);
и тд и тп. . можно сделать через switch
ps: вот вам простейший пример
#include<stdio.h>
float add(float,float);
float sub(float,float);
float product(float,float);
float divide(float,float);
void main()
{
float n1,n2;
char sym,choice;
printf("This Program is a program for calculator\n\n");
scanf("%f%c%f",&n1,&sym,&n2);
if(sym=='+')
printf("\n%f",add(n1,n2));
if(sym=='-')
printf("\n%f",sub(n1,n2));
if(sym=='*')
printf("\n%f",product(n1,n2));
if(sym=='/')
printf("%f",divide(n1,n2));
printf("\nDo you wish to continue[y/n]");
scanf("%s",&choice);
if(choice=='y'||choice=='Y')
main();
}
float add(float m1,float m2)
{
return(m1+m2);
}
float sub(float m1,float m2)
{
return(m1-m2);
}
float product(float m1,float m2)
{
return(m1*m2);
}
float divide(float m1,float m2)
{
return(m1/m2);
}
1) Давно не писал ничего - не помню зачем в сканфе нужно амперсенты ставить и нужно ли?
2) Во втором принтф у тебя явно косяк с с тем что собираешься выводить 4 значения а выводишь 6 да еще запятые не поставил.
Да и пиши уж сразу void main()
Нафиг тебе инт и еще ретурн делать?
Прочитал твой коммент - вообще бред ты написал.
Знак не может быть переменной.
2) Во втором принтф у тебя явно косяк с с тем что собираешься выводить 4 значения а выводишь 6 да еще запятые не поставил.
Да и пиши уж сразу void main()
Нафиг тебе инт и еще ретурн делать?
Прочитал твой коммент - вообще бред ты написал.
Знак не может быть переменной.
полностию согласен с первым
Похожие вопросы
- помогите найти ошибку в коде на Си
- Помогите найти ошибку Си
- Помогите найти ошибку Delphi легкая программка
- программирование C++. Помогите найти ошибку
- Помогите найти ошибку в коде
- Помогите найти ошибку qbasic
- Помогите найти ошибку в коде. делфи
- Помогите найти ошибку в задачи,Паскаль...
- Помогите найти ошибки в коде (паскаль)
- Помогите найти ошибку...Pascal (строки)