Я продолжаю получать сообщение об ошибке «ожидаемый идентификатор» или «(», но не могу найти способ решить эту проблему. Мой код прилагается Скриншот кода
Я читал, что это может быть вызвано отсутствием имени/определения функции. У меня уже есть это, поэтому я не уверен, что еще проверить, так как я сам учусь, используя 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);
}
Что такое bill_amount
в строке 19? Подумайте о том, где переменная, определенная в строке 8, видна, а где нет.
Для будущих вопросов, пожалуйста, предоставьте полное и точное сообщение об ошибке в вашем вопросе. Используйте копирование и вставку (так же, как с кодом, любой ввод, вывод и ожидаемый вывод), чтобы добавить форматированный текст. Если вы не спрашиваете о визуальных деталях какого-либо окна и т. д., никогда не публикуйте изображения текста. Никто не сможет запустить вашу картинку через компилятор или отладчик
float bill = bill_amount;
помимо использования идентификатора, который не определен в этой области, вы определяете новую переменную bill
, которая скрывает ее из списка параметров. Это называется слежка. Вы никогда не должны делать этого.
Спасибо! Я предположил, что мне нужно приравнять новую переменную к переменной в основной программе, но я понимаю, что это выходит за рамки. Я исправил это и опубликую свой код, который работает сейчас.
После определения float half(float bill, float tax, int tip);
не следует ставить точку с запятой.
Вы заканчиваете прототип функции точкой с запятой в объявлении, а не в определении.
Кроме того, переменные bill_amount
, tax_amount
, tip_pourcent
в функции half
должны были быть переименованы в соответствующие имена аргументов функции (например, bill
, tax
и tip
).
Пожалуйста, избегайте ответов на вопросы типа «картинка кода», чтобы не поощрять их появление в большем количестве. И даже если это было размещено в виде текста, вопросы с «беспризорной точкой с запятой» и т. д. являются простыми опечатками, которые не представляют никакой ценности для будущих читателей, поэтому такие вопросы следует закрывать, а не отвечать на них.
@Lundin законный комментарий :)
Пожалуйста, размещайте здесь код, а не ссылку на скриншот.