Напишите программу, которая читает все аргументы командной строки и печатает среднее, c ++

0
//review3
#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
using namespace std;

double average;
int main(int argc, char* argv[])
{
    int num1 = atoi (argv[1]);
    int num2 = atoi (argv[2]);
    int num3 = atoi (argv[3]);
    average = ((num1 + num2 + num3) / 3);
    cout << average << endl;
}

Я не уверен, как решить эту проблему, если мне нужно вычислить среднее значение всех аргументов командной строки? Так я бы сделал это с помощью 3 CLA, но я не уверен, как я это сделаю, не зная набора CLA для этой проблемы. Кто-нибудь знает, как это сделать, если вам нужно найти медиану?

  • 3
    Вы когда-нибудь слышали о петлях?
  • 0
    У меня есть. Посмотрю на это спасибо
Показать ещё 6 комментариев
Теги:

3 ответа

1
Лучший ответ

Ниже приведена простая программа.

int sum = 0 ;
for ( int i = 1; i < argc; i++ )
{
  sum = sum + atoi(argv[i]) ;  //Exclusion of argv[0] is no incidence...
}

Тогда вы можете делать все, что хотите делать с суммой

  • 0
    Большое спасибо. Извините за одного человека, чтобы испортить обучение для нас.
  • 3
    @ BrandonTuley43 Это очень спорно, так ли это подходящее место для изучения языка программирования.
Показать ещё 2 комментария
1

argc даст вам количество аргументов, переданных main().

Обратите внимание, что argc будет ONE, а не ноль, если вы не укажете аргумент, поскольку argv [0] - это имя исполняемого файла.

Чтобы получить медиану, следующее должно сделать трюк:

float median;

// Get a sorted list of the integers
std:list<int> args;
for(int i = 1; i < argc; i++)
{
    args.push_back(atoi(argv[i]));
}
args.sort();

// Extract median from the sorted array of integers
int middle_index = args.size() / 2;
if (args.size() % 2 == 1)
{
    // For odd number of values, median is middle value
    median = args[middle_index];
}
else
{
    // For even number of values, median is average of the two middle values
    median = (args[middle_index-1] + args[middle_index]) / 2.0;
}
  • 0
    Это не делает то, что вы думаете, что делает. Сначала вы создаете список с элементами argc-1, которые созданы по умолчанию, а затем добавляете к нему элементы argc-1. Ваш список на самом деле содержит 2 * argc элементов.
  • 0
    Спасибо, Этьен, ты прав. Исправлен мой фрагмент.
1

В объявлении main int argc указывается количество аргументов. Вы можете использовать цикл for для итерации по вашим аргументам и вычисления среднего значения:

// Your includes here
// ...

int main(int argc, char* argv[])
{
    int average = 0;

    for(int i = 1; i < argc; i++) // argv[0] is the name of your program, so we are skipping it
    {
        average += atoi(argv[i]);
    }

    average = average / (argc - 1);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню