Ошибка при вычислениях после перевода кода с C++ - C (СИ)
Формулировка задачи:
После переделывания программы из С++ в Си вместо решения выдает формулу по которой нужно считать, но при компиляции ошибок нет. В Си разбираюсь не очень хорошо, может что пропустила. Подскажите пожалуйста что нужно исправить
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<locale.h>
int f();
int main(void)
{
setlocale(LC_ALL,"Russian");
float q;
float a,b,c;
printf("\t\t\t\t Условия пользования! \n");
printf("\n Не вводите буквы!! \n");
printf("\n Не вводите символы, кроме цифр! \n");
printf("\n Дроби вводить нельзя! \n");
printf("\n Убедительная просьба, выполнять условия пользования \n во избежания некорректной роботы програмы. \n\n");
while(1){
printf("\n \n Выражения для вычисления: (a*a + b*b) / (b*b + 5^c) * b! = q \n");
printf("\n Введите переменную a: ");
scanf( "%s", &a);
printf("\n Введите переменную b: ");
scanf( "%s", &b);
printf("\n Введите переменную c: ");
scanf( "%s", &c);
if(b*b + c == 0)
{
printf("\n (b*b)+(pow((double)5,(double)c)) = 0 \n");
printf("\n b*(b - 1) = 0 \n");
printf("\n Простите на нуль делить нельзя!");
getch();
}
q = (a*a + b*b) / (b*b + pow((double)5,(double)c));
printf("\n Решение: \n");
printf("\n (a*a + b*b)/(b*b +pow((double)5,(double)c) *(b*(b-1)) = q \n");
printf("\n Спасибо что использовали это приложения!\n");
}
getch();
}
int f()
{
char f[20];
int c, k=0;
start2:
for(register int i = 0;i<20;i++)
{
k++;
}
for(register int i = 0;i<20;i++)
{
if(f[i] == '0' || f[i]=='1' || f[i]=='2' || f[i]=='3'|| f[i]=='4'||f[i]=='5'||f[i]=='6'||f[i]=='7'||f[i]=='8'||f[i]=='9' || f[i]=='-')
{}
else if(f[i] == '.' || f[i]==',')
{
printf("\n Просите вы ввели символ а его вводить нельзя!\n");
printf("\n Повторите ввод переменной: ");
}
else if(k>20)
{
printf("\n Превышен лимит возможных символов\n");
printf("\n Попробуйте еще раз \n");
}
else
{
printf("\n Некорректные данные ");
printf("\n Попробуйте еще раз \n");
}
}
c = 20;
return c;
}Решение задачи: «Ошибка при вычислениях после перевода кода с C++»
textual
Листинг программы
scanf( "%f", &a);
Объяснение кода листинга программы
- Вводится значение переменной
aс помощью функции scanf() - Значение переменной
aсохраняется в памяти компьютера и может быть использовано в дальнейшем коде