Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ксенияCt
0 / 0 / 0
Регистрация: 23.05.2013
Сообщений: 4
#1

Найти номер элемента методом интерполяции - C++

27.05.2013, 12:31. Просмотров 229. Ответов 8
Метки нет (Все метки)

в первой части ошибок нет,показывает ошибку во второй части,где требуется найти номер элемента методом интерполяции.не могу понять где,может кто знает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream.h>
#include <math.h>
int main()
{int item;
int j,Np,N1,Nsr,temp,i,y,N;
int l=0,u=99;
float z;
int x[100]={1, 3, 5, 7, 9, 11, 13, 15, 17, 19,
21, 23, 25, 27, 29, 31, 33, 35, 37, 39,
41, 43, 45, 47, 49, 51, 53, 55, 57, 59,
61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
81, 83, 85, 87, 89, 91, 93, 95, 97, 99,
2, 4, 6, 8, 0, 10, 12, 14, 16, 18,
20, 22, 24, 26, 28, 30, 32, 34, 36, 38,
40, 42, 44, 46, 48, 50, 52, 54, 56, 58,
60, 62, 64, 66, 68, 70, 72, 74, 76, 78,
80, 82, 84, 86, 88, 90, 92, 94, 96, 98};
for (i=1; i<100;i++)
{N1=0;Np=i;
while (N1<Np)
{Nsr=(N1+Np)/2;
if (x[i]<x[Nsr])Np=Nsr;
else N1=Nsr+1; }
for (j=i; j>N1; j--)
{temp=x[j-1];
x[j-1]=x[j];
x[j]=temp;}}
cout<<"vvedite element"<<endl;
cin>>y;
for (z=(y-x[l])/(x[u]-x[l]); y!=z && N=(x[l]+x[u])*z; )
if (y>x[N])y=x[N+1];else {if(y<x[N])y=x[N-1];
else {if (y==x[N]) cout<<x[N]<<endl;
else cout << "element ne naiden" << endl;}}
system ("Pause"); 
return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2013, 12:31     Найти номер элемента методом интерполяции
Посмотрите здесь:

Найти номер последнего максимального элемента среди элементов, лежащих в диапазоне [c,d] и расположенных до первого четного элемента. C++
Найти номер первого максимального элемента среди отрицательных элементов, расположенных до первого элемента, большего Т. C++
C++ Найти номер максимального элемента в последовательности
Как задать криволинейный замкнутый контур по точкам методом кубической интерполяции? C++
C++ Найти номер максимального элемента массива
C++ Найти номер минимального элемента последовательности
Пользователь вводит с клавиатуры N чисел. Определить номер максимального элемента, выдав сообщение вида "Максимальный номер элемента был введен 7-м" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4390 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
27.05.2013, 12:39     Найти номер элемента методом интерполяции #2
ксенияCt, задание сформулируйте полностью.
P.S. и для оформлений кода используйте, пожалуйста, соответствующие теги.
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
27.05.2013, 12:39     Найти номер элемента методом интерполяции #3
Во-первых пользуйся вставкой кода как c++ а то нечтиаемо, ошибка вот
это как у тебя:
C++
1
for (z=(y-x[l])/(x[u]-x[l]); y!=z && N=(x[l]+x[u])*z; )
Как должно быть:
C++
1
for (z=(y-x[l])/(x[u]-x[l]); y!=z && N==(x[l]+x[u])*z; )
Если ты сравниваешь, то должно быть два знака равно
ксенияCt
0 / 0 / 0
Регистрация: 23.05.2013
Сообщений: 4
27.05.2013, 12:46  [ТС]     Найти номер элемента методом интерполяции #4
поставила ==, 2 ошибки,а у меня после этого for правильно или нет?
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
27.05.2013, 12:51     Найти номер элемента методом интерполяции #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
По крайней мере на моем комплияторе (вижуал 2012) этот код работает без ошибок в таком виде
Что за ошибки?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
 
using namespace std;
 
int main()
{int item;
int j,Np,N1,Nsr,temp,i,y,N;
int l=0,u=99;
float z;
int x[]={1, 3, 5, 7, 9, 11, 13, 15, 17, 19,
21, 23, 25, 27, 29, 31, 33, 35, 37, 39,
41, 43, 45, 47, 49, 51, 53, 55, 57, 59,
61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
81, 83, 85, 87, 89, 91, 93, 95, 97, 99,
2, 4, 6, 8, 0, 10, 12, 14, 16, 18,
20, 22, 24, 26, 28, 30, 32, 34, 36, 38,
40, 42, 44, 46, 48, 50, 52, 54, 56, 58,
60, 62, 64, 66, 68, 70, 72, 74, 76, 78,
80, 82, 84, 86, 88, 90, 92, 94, 96, 98};
for (i=1; i<100;i++)
{N1=0;Np=i;
while (N1<Np)
{Nsr=(N1+Np)/2;
if (x[i]<x[Nsr])Np=Nsr;
else N1=Nsr+1; }
for (j=i; j>N1; j--)
{temp=x[j-1];
x[j-1]=x[j];
x[j]=temp;}}
cout<<"vvedite element"<<endl;
cin>>y;
for (z=(y-x[l])/(x[u]-x[l]); y!=z && N==(x[l]+x[u])*z; )
if (y>x[N])y=x[N+1];else {if(y<x[N])y=x[N-1];
else {if (y==x[N]) cout<<x[N]<<endl;
else cout << "element ne naiden" << endl;}}
}
Добавлено через 3 минуты
Хотя нет, есть ошибка "перменнаня N не инциализированна". Мне казалось ты там сравниваешь N с (x[l]+x[u])*z или быть может ты приравнивала? Если ты приравниваешь, то

C++
1
for (z=(y-x[l])/(x[u]-x[l]), N=(x[l]+x[u])*z; y!=z;  )
К тому же не вижу у тебя условия выхода из цикла. Если все же сравниваешь, то для начала тебе придется N присвоить какое-то значение
ксенияCt
0 / 0 / 0
Регистрация: 23.05.2013
Сообщений: 4
27.05.2013, 12:54  [ТС]     Найти номер элемента методом интерполяции #6
компилятор говорит 2 ошибки,показывает 1 строчку

Добавлено через 2 минуты
я не сравниваю,а приравниваю
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
27.05.2013, 12:55     Найти номер элемента методом интерполяции #7
Какой компилятор? В некоторых пишется #include <iostream.h> в некоторых без .h так что делай как делала раньше (можешь подключить и math.h, хотя большинству соврменнных комплияторов это не требуется) и инциализируй переменную N
Tulosba
:)
Эксперт С++
4390 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
27.05.2013, 12:55     Найти номер элемента методом интерполяции #8
Цитата Сообщение от ксенияCt Посмотреть сообщение
компилятор говорит 2 ошибки,показывает 1 строчку
Вероятно у Вас какой-то древний компилятор и не имеет <iostream> (без .h), поэтому напишите как у Вас было в изначальном коде. А вообще, когда ссылаетесь на ошибки, приводите их текст. Т.к. ясновидящих тут не много.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2013, 13:02     Найти номер элемента методом интерполяции
Еще ссылки по теме:

Найти номер минимального элемента массива C++
Найти номер первого максимального элемента среди отрицательных элементов, расположенных до первого элемента, большего заданного числа Т C++
C++ Найти номер минимального элемента массива
Найти номер минимального элемента последовательности C++
Найти номер максимального элемента массива; найти произведение заданных элементов; упорядочить массив C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
27.05.2013, 13:02     Найти номер элемента методом интерполяции #9
Вот это приравнивание:

C++
1
for (z=(y-x[l])/(x[u]-x[l]), N=(x[l]+x[u])*z; y!=z ; )
К тому же у вас бесконечный цикл, попробуйте например изменить это условие на другое y!=z или добавить break;
Yandex
Объявления
27.05.2013, 13:02     Найти номер элемента методом интерполяции
Ответ Создать тему
Опции темы

Текущее время: 12:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru