простая указатель с ++

Вот простая программа, в которой суммируются все числа, отправленные в командной строке. Это должно принять произвольное количество значений.
Он продолжает давать мне 0 для каждой строки. Я устал, чтобы сделать несколько изменений, но он продолжает давать тот же результат

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
for (int i = 0; i < argc; i++)
{
int sum=0;
sum+=atoi("argc[i]");
cout << sum << endl;
}
return 0;
}

-1

Решение

"argc[i]" это буквальная строка поэтому при преобразовании atoi дает 0! sum должен быть инициализирован перед циклом:

int main(int argc, char *argv[]) {
int sum=0;
for (int i = 1; i < argc; i++) {
sum += atoi(argv[i]);
}
cout << sum << endl;
return 0;
}

Условно argv[0] это имя программы (или, по крайней мере, имя, используемое в командной строке для вызова программы), поэтому лучше начать с индекса 1.

Вам нужно тратить десятки часов на чтение ваших книг и экспериментов на компьютере. Задавать такой простой вопрос вам совсем не поможет (и считается грубым …).

Не забудь включить отладочную информацию и все предупреждения при компиляции (например, с g++ -Wall -g при использовании НКУ). Затем научитесь использовать отладчик (например. gdb).

3

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

Ваши основы не ясны, я предлагаю вам прочитать книгу.
Программа должна быть такой:

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
int sum=0;
for (int i = 0; i < argc; i++)
{

sum+=atoi(argv[i]);
}
cout << sum << endl;
return 0;
}
-1

перенести сумму параметров за пределы цикла !!

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
int sum=0;
for (int i = 0; i < argc; i++)
{

sum+=atoi(argv[i]);
cout << sum << endl;
}
return 0;
}
-4
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector