Ошибка при вычислениях после перевода кода с 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);

Объяснение кода листинга программы

  1. Вводится значение переменной a с помощью функции scanf()
  2. Значение переменной a сохраняется в памяти компьютера и может быть использовано в дальнейшем коде

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.273 из 5
Похожие ответы