Member 11387650 Ответов: 1

Исключение Гаусса - интерполируйте результаты в диапазоне (1, ..., n) в k точках.


Мне нужно найти интерполяцию для результата исключения Гаусса. Я закодировал интерполяцию, но позиция на выходе не появляется или иногда появляется неправильная позиция.

double interpolationSearch(double X[], int n, int e)
{
int начало, конец, pos;
начало = 0;
конец = n - 1;

в то время (начало &ЛТ;= конец &ампер;&ампер; е &ГТ;= х[пуск] &ампер;&ампер; Е &Л;= Х[конец])
{

пос = старт + (((двухместная)(конец - начало) / (X[конец] - х[пуск]))*(Е - Х[пуск]));

если (X[pos] == e)
возвращение пос;
если (e > X[pos])
start = pos + 1;
еще
конец = pos - 1;
}
возврат -1;
}

Что я уже пробовал:

Кто-нибудь может меня проводить? Я много раз пытался изменить циклы while, но все еще не мог решить эту проблему

Richard Deeming

Репост
Вы уже опубликовали это домашнее задание:
https://www.codeproject.com/Questions/1244660/Interpolate-the-results-within-the-range-n-in-k-po[^]

1 Ответов

Рейтинг:
1

OriginalGriff

Не "меняйте много циклов while" - остановитесь, подумайте и выясните, что не так. Это ваша домашняя работа, и это означает, что задача
1) Прочитайте инструкцию
2) разработать решение
3) Код конструкции
4) протестируйте код
5) выясните, почему он не делает именно то, что вы хотите
6) вернитесь к 4, 3, 2 и / или 1, пока вы не сделаете это правильно.

Написание кода-это небольшая часть этой задачи: важные вещи выполняются в 1 & 2, а сложная часть-в 4 & 5. Вы можете ожидать, что обойдете цикл несколько раз для каждого проекта, особенно когда вы начинаете работу.

Итак, сколько времени и усилий вы потратили между 1 и 3? Это важно, потому что чем раньше вы находите - и устраняете - проблемы, тем легче это сделать и тем меньше вам приходится выбрасывать.

Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик. Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!