Беда с argc и argv

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

Вот код, который ему не нравится:

    // 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;

}

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
}
9

Другие решения

Я попытался скомпилировать ваш код на моей машине с 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

Похоже, в этой строке есть какой-то странный символ. Удалить и переписать строку исправила ошибку.

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector