Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

27.05.2013, 12:31. Просмотров 286. Ответов 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;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2013, 12:31
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти номер элемента методом интерполяции (C++):

Найти номер минимального по модулю элемента массива и сумму модулей после первого отрицательного элемента - C++
1.В одномерном массиве, состоящем из n вещественных элементов, вычислить: а)номер минимального по модулю элемента массива; б)сумму...

Найти номер последнего максимального элемента среди элементов, лежащих в диапазоне [c,d] и расположенных до первого четного элемента. - C++
помогите с задачкой Найти номер последнего максимального элемента среди элементов, лежащих в диапазоне и расположенных до...

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

Найти номер первого максимального элемента среди отрицательных элементов, расположенных до первого элемента, большего Т. - C++
Задан целочисленный одномерный массив a из n элементов. Найти номер первого максимального элемента среди отрицательных элементов,...

Найти номер минимального элемента массива; найти сумму элементов, удовлетворяющих условию - C++
1. Найти номер минимального элемента массива. 2. Найти сумму элементов массива, расположенных между первым и вторым от- рицательными...

Пользователь вводит с клавиатуры N чисел. Определить номер максимального элемента, выдав сообщение вида "Максимальный номер элемента был введен 7-м" - C++
Заранее спасибо.

8
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
27.05.2013, 12:39 #2
ксенияCt, задание сформулируйте полностью.
P.S. и для оформлений кода используйте, пожалуйста, соответствующие теги.
0
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; )
Если ты сравниваешь, то должно быть два знака равно
0
ксенияCt
0 / 0 / 0
Регистрация: 23.05.2013
Сообщений: 4
27.05.2013, 12:46  [ТС] #4
поставила ==, 2 ошибки,а у меня после этого for правильно или нет?
0
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 присвоить какое-то значение
0
ксенияCt
0 / 0 / 0
Регистрация: 23.05.2013
Сообщений: 4
27.05.2013, 12:54  [ТС] #6
компилятор говорит 2 ошибки,показывает 1 строчку

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

Найти номер максимального элемента массива; найти произведение заданных элементов; упорядочить массив - C++
в одномерном массиве, состоящем из n целых элементов, вычислить: 1) номер максимального элемента массива; 2) произведение...

Как задать криволинейный замкнутый контур по точкам методом кубической интерполяции? - C++
В с++ я новичок, полазив по форумам, я нашел некотрые коды, но они либо не работают, либо выдают не то что нужно. Не мог бы мне кто-нибудь...

Найти номер минимального элемента массива - C++
Ребят, нужна помощь с одномерным массивом: в одномерном массиве, состоящем из п вещественных элементов, вычислить: 1) номер...

Найти номер максимального элемента массива - C++
Помогите с программами 1. Найти номер максимального элемента массива. 2. Найти произведение элементов массива, расположенных между...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru