После появления запроса на ввод чисел программа вылет с такой ошибкой:
Segmentation fault (core dumped)
#include "iostream"
using namespace std;
long double raf(int a , ...)
{
int *p = &a;
int b = 0;
for(; a != 0; a++)
{
b+= *(++p);
}
int c = b/a;
return c;
}
int main()
{
cout << "Midle count of numbers 5,3,9,1,7: " << endl;
raf(5,5,3,9,1,7);
return 0;
}
Если уж хочется использовать нестандартный метод, то все равно делать это нужно правильно:
#include <iostream>
using namespace std;
long double raf(int a , ...)
{
int *p = &a;
int cnt = a;
int b = 0;
for(; cnt != 0; --cnt)
{
b+= *(++p);
}
return ((long double)b)/a;
}
int main()
{
cout << "Midle count of numbers 5,3,9,1,7: " << endl;
cout << raf(5,5,3,9,1,7) << endl;
return 0;
}
Посмотрите у себя - цикл ставите бесконечный (пока растущее a
не станет нулем, потом делите на него - нулевое... Делите целочисленно, а надеетесь получить long double
... Наконец, просто не выводите полученный результат. Об английском языке промолчу :)
Стандартное же решение такое:
#include <iostream>
#include <cstdarg>
using namespace std;
long double raf(int a , ...)
{
va_list p;
va_start(p,a);
int cnt = a;
int b = 0;
for(; cnt != 0; --cnt)
{
b+= va_arg(p,int);
}
va_end(p);
return ((long double)b)/a;
}
int main()
{
cout << "Midle count of numbers 5,3,9,1,7: " << endl;
cout << raf(5,5,3,9,1,7) << endl;
return 0;
}
Доступ к variadic аргументам функций (параметры ...
) в С и С++ делается только через va_list
и макросы va_start/va_arg/va_end
. Других способов не существует.
Поэтому ни о каком int *p = &a;
и прочей вашей "адресной арифметике" не может быть и речи. Это какая-то белиберда, непонятно откуда вами выкопанная. Неудивительно, что дело заканчивается Segmentation fault.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый день! У меня такая проблема компилирую exe, который необходимо запустить с флеш носителя на другом PCПри запуске, АВ Avast пропускает исполняемый...
Я считываю строку, состоящую из чисел, разделенных различными символами, как удалить из строки все символы, заменив их на пробелы(хочу посчитать...
Привет! Помогите пожалуйста с создать алгоритм для суммы произведенийДолжен быть цикл в цикле, первый сделал (произведение), а как теперь...
Я создаю сокет, привязываю его к порту 33005Далее хочу узнать к какому порту привязан сокет, но почему-то sockaddr_in