Другие языки программирования и технологии

Помогите ответить на вопрос по С++

Определить причину сообщения компилятора об ошибке при трансляции следующего кода. Укажите способ устранения данной ошибки. int i, j; int main (int i1; int i2); int main (void) {return min(i,j);} int min(int i1; int i2) {return i1> i2 ? i2:i1)}{}
Евгений
Евгений
423
Вообще написано что-то несуразное!

Давайте по порядку.
Сначала вы определяете две переменные

int i,j;

Это глобальные переменные. По умолчанию они инициализируются значением 0. Поэтому определять между двумя нулями наименьший ноль бессмысленно. Наверное в теле функции main должно быть присвоение каких-то значений этим переменным перед вызовом функции min().

Далее у вас идет

int main (int i1; int i2);

Как я могу догадаться, на самом деле это должен был быть прототип ( то есть объявление) функции min(), а не main()!:)

Кроме того аргументы функции должны разделяться не точкой с запятой, а запятой.
Поэтому правильно будет

int min (int i1, int i2);

Далее у вас следует тело главной функции main().

int main (void)
{return min(i,j);}

Здесь все правильно синтаксически, только обычно не лепят все в одну строку, а фигурные скобки ставят на отдельной строке

int main (void)
{
return min(i,j);
}

Так более читабельно.

Последние строки относятся к определению функции min().

int min(int i1; int i2)
{return i1> i2? i2:i1)}{}

КАк я уже писал, аргументы функции разделяются запятой, а не точкой с запятой.
Во втором предложении в конце строки непонятные фигурные скобки!

Правильно должно быть так

int min(int i1, int i2)
{
return i1> i2? i2:i1;
}
АЧ
Анатолий Чернов
79 586
Лучший ответ
Вы дважды описали main.
Санек Корнилов
Санек Корнилов
46 479
int i, j;
int min (int i1, int i2);
int main (void)
{return min(i,j);}
int min(int i1, int i2)
{return i1> i2? i2:i1)}