Пытаюсь добавить аргументы командной строки в мои программы. Итак, я экспериментировал и не могу понять это предупреждение об осознанности всей моей жизни. Он продолжает говорить, что ожидает «)», но я понятия не имею, почему.
Вот код, который ему не нравится:
// Calculate average
average = sum / ( argc – 1 );
Затем подчеркивается оператор вычитания. Ниже приведена полная программа.
#include <iostream>
int main( int argc, char *argv[] )
{
float average;
int sum = 0;
// Valid number of arguments?
if ( argc > 1 )
{
// Loop through arguments ignoring the first which is
// the name and path of this program
for ( int i = 1; i < argc; i++ )
{
// Convert cString to int
sum += atoi( argv[i] );
}
// Calculate average
average = sum / ( argc – 1 );
std::cout << "\nSum: " << sum << '\n'
<< "Average: " << average << std::endl;
}
else
{
// If invalid number of arguments, display error message
// and usage syntax
std::cout << "Error: No arguments\n"<< "Syntax: command_line [space delimted numbers]"<< std::endl;
}
return 0;
}
Символ, который вы считаете символом минус, является чем-то другим, поэтому он не анализируется как оператор вычитания.
Ваша версия:
average = sum / ( argc – 1 );
Правильная версия (вырезать и вставить в свой код):
average = sum / ( argc - 1 );
Обратите внимание, что вычисление среднего значения с использованием целых чисел может быть не лучшим способом сделать это. У вас есть целочисленная арифметика на RHS, которую вы затем назначаете float
на LHS. Вы должны выполнить деление, используя типы с плавающей запятой. Пример:
#include <iostream>
int main()
{
std::cout << float((3)/5) << "\n"; // int division to FP: prints 0!
std::cout << float(3)/5 << "\n"; // FP division: prints 0.6
}
Я попытался скомпилировать ваш код на моей машине с g ++ 4.6.3 и получил следующую ошибку:
pedro@RovesTwo:~$ g++ teste.cpp -o teste
teste.cpp:20:8: erro: stray ‘\342’ in program
teste.cpp:20:8: erro: stray ‘\200’ in program
teste.cpp:20:8: erro: stray ‘\223’ in program
teste.cpp: Na função ‘int main(int, char**)’:
teste.cpp:16:33: erro: ‘atoi’ was not declared in this scope
teste.cpp:20:35: erro: expected ‘)’ before numeric constant
Похоже, в этой строке есть какой-то странный символ. Удалить и переписать строку исправила ошибку.