Как исправить эту ожидаемую ошибку идентификатора в C?

Я продолжаю получать сообщение об ошибке «ожидаемый идентификатор» или «(», но не могу найти способ решить эту проблему. Мой код прилагается Скриншот кода

Я читал, что это может быть вызвано отсутствием имени/определения функции. У меня уже есть это, поэтому я не уверен, что еще проверить, так как я сам учусь, используя CS50.

Код:

#include <cs50.h>
#include <stdio.h>

float half(float bill, float tax, int tip); //function declaration

int main(void)

    {
        float bill_amount = get_float("Bill before tax and tip: ");
        float tax_percent = get_float("Sale Tax Percent: ");
        int tip_percent = get_int("Tip percent: ");

        printf("You will owe $%.2f each!\n", half(bill_amount, tax_percent, tip_percent)); //function call
    }


float half(float bill, float tax, int tip); //function definition
    {
        float result, plus_tax;
        float bill = bill_amount;
        float tax = tax_amount / 100;
        int tip = tip_percent / 100;
        plus_tax = bill + bill * tax;
        result = plus_tax + plus_tax * tip;
        return(result);
    }

Обновление: спасибо за комментарии. Я обновил свой код, как показано ниже.

#include <cs50.h>
#include <stdio.h>

float half(float bill, float tax, int tip); //function declaration

int main(void)
{
    float bill_amount = get_float("Bill before tax and tip: ");
    float tax_percent = get_float("Sale Tax Percent: ");
    int tip_percent = get_int("Tip percent: ");

    printf("You will owe $%.2f each!\n", half(bill_amount, tax_percent, tip_percent)); //function call
}


float half(float bill, float tax, int tip) //function definition
{
    float result, plus_tax;
    plus_tax = bill + bill * (tax / 100);
    result = (plus_tax + plus_tax * (tip / 100))/2;
    return(result);
}

Пожалуйста, размещайте здесь код, а не ссылку на скриншот.

Sourav Ghosh 03.04.2023 16:04

Что такое bill_amount в строке 19? Подумайте о том, где переменная, определенная в строке 8, видна, а где нет.

Gerhardh 03.04.2023 16:11

Для будущих вопросов, пожалуйста, предоставьте полное и точное сообщение об ошибке в вашем вопросе. Используйте копирование и вставку (так же, как с кодом, любой ввод, вывод и ожидаемый вывод), чтобы добавить форматированный текст. Если вы не спрашиваете о визуальных деталях какого-либо окна и т. д., никогда не публикуйте изображения текста. Никто не сможет запустить вашу картинку через компилятор или отладчик

Gerhardh 03.04.2023 16:12
float bill = bill_amount; помимо использования идентификатора, который не определен в этой области, вы определяете новую переменную bill, которая скрывает ее из списка параметров. Это называется слежка. Вы никогда не должны делать этого.
Gerhardh 03.04.2023 16:15

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

Nkechi Anyanwu 03.04.2023 16:21
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
5
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

После определения float half(float bill, float tax, int tip); не следует ставить точку с запятой. Вы заканчиваете прототип функции точкой с запятой в объявлении, а не в определении. Кроме того, переменные bill_amount, tax_amount, tip_pourcent в функции half должны были быть переименованы в соответствующие имена аргументов функции (например, bill, tax и tip).

Пожалуйста, избегайте ответов на вопросы типа «картинка кода», чтобы не поощрять их появление в большем количестве. И даже если это было размещено в виде текста, вопросы с «беспризорной точкой с запятой» и т. д. являются простыми опечатками, которые не представляют никакой ценности для будущих читателей, поэтому такие вопросы следует закрывать, а не отвечать на них.

Lundin 03.04.2023 16:09

@Lundin законный комментарий :)

PoneyUHC 03.04.2023 16:09

Другие вопросы по теме