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

Нахождение целого числа - C++

Восстановить пароль Регистрация
 
kinoman471
 Аватар для kinoman471
4 / 4 / 0
Регистрация: 18.04.2012
Сообщений: 58
10.06.2012, 19:40     Нахождение целого числа #1
Среди x1-x100 найти ближайшее к любому целому
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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    const int n = 100;
     int i;
     int k = 0;
     double x[n];
     x[0] = 0.3;
     x[1] = -0.3;
     for (int i = 2; i <= 100; i++)
     {
     x[i] = i + sin(x[i - 2]);
      }
 
  int c = x[i];
  if (c-x[i-1] < x[i+1]-c)
  cout<<x[i-1];
  else
  cout<<x[i+1];
  return 0;
}
Почему не работает код?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2012, 19:40     Нахождение целого числа
Посмотрите здесь:

C++ нужен тип целого числа для числа 19!= 121 645 100 408 832 000
. Дана строка, изображающая десятичную запись целого положительного числа. Вывести строку, изображающую двоичную запись этого же числа C++
нахождение целого числа по информации о его цифрах) C++
C++ Дана строка. Определить, представляет ли она собой запись целого числа или запись дробного числа
Определить цифры целого числа (тип числа - целое без знака) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
10.06.2012, 19:46     Нахождение целого числа #2
Цитата Сообщение от kinoman471 Посмотреть сообщение
for (int i = 2; i <= 100; i++
i < 100
hacer
2 / 0 / 1
Регистрация: 10.06.2012
Сообщений: 18
10.06.2012, 19:47     Нахождение целого числа #3
int c = x[i];
if (c-x[i-1] < x[i+1]-c)
cout<<x[i-1];
else
cout<<x[i+1];
где то здесь ошибся кажись ты
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
10.06.2012, 19:51     Нахождение целого числа #4
Цитата Сообщение от kinoman471 Посмотреть сообщение
if (c-x[i-1] < x[i+1]-c)
тут ошибка,на выходе из цикла i равен 99,а тут вы пытаетесь обратиться к элемнту с индексом 100,но это 101 элемент массива,то есть какой блок памяти,с которым вы работать не можете
kinoman471
 Аватар для kinoman471
4 / 4 / 0
Регистрация: 18.04.2012
Сообщений: 58
10.06.2012, 20:05  [ТС]     Нахождение целого числа #5
Как тогда можно сделать?
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
10.06.2012, 20:07     Нахождение целого числа #6
смотря какой элемент массива вам нужен,самой простой способ,просто указать номер элемента массива,например,97 и 99,т.к.,вам нужны соседние элементы,как я понял
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.06.2012, 20:12     Нахождение целого числа #7
Цитата Сообщение от kinoman471 Посмотреть сообщение
for (int i = 2; i <= 100; i++)
А почему с двух? Массивы с ноля начинаются.

Добавлено через 1 минуту
Цитата Сообщение от kinoman471 Посмотреть сообщение
int c = x[i];
* if (c-x[i-1] < x[i+1]-c)
* cout<<x[i-1];
Это уже вне цикла, здесь i==102.
kinoman471
 Аватар для kinoman471
4 / 4 / 0
Регистрация: 18.04.2012
Сообщений: 58
10.06.2012, 20:13  [ТС]     Нахождение целого числа #8
Мне препод сказал так: int c = x[i]; - это даёт целое, меньшее x[i]. Большее - на 1 больше.

Добавлено через 35 секунд
Цитата Сообщение от taras atavin Посмотреть сообщение
А почему с двух? Массивы с ноля начинаются.
Первые 2 элемента мне уже даны
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
10.06.2012, 20:21     Нахождение целого числа #9
Цитата Сообщение от kinoman471 Посмотреть сообщение
int c = x[i]
в твоём изначальном коде i было 99 в этой строке,соответственно прибавив 1 получим 100,а элемента с таким индексом нет,поэтому нельзя так делать
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.06.2012, 20:24     Нахождение целого числа #10
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
37
38
39
40
41
#include <iostream.h>
double BiFrac(double x)
{
 double d=x-(double)(int)x;
 if (d<=0.5)
 {
  return d;
 }
 return 1.0-d;
}
 
double Search(double *a, unsigned int n)
{
 double *p;
 double *e;
 double m;
 double d;
 for (e=a+n-1, p=a, m=*a; p<=e; ++p)
 {
  d=BiFrac(*p);
  if (m>d)
  {
   m=d;
  }
 }
 return m;
}
 
int main ()
{
 double a[100];
 int i;
 x[0]=0.3;
 x[1]=-0.3;
 for (i=2; i<100; ++i)
 {
  a[i]=(double)i+sin(x[i - 2]);
 }
 std::cout<<Search(a, 100)<<std::endl;
 return 0;
}
Цитата Сообщение от kinoman471 Посмотреть сообщение
i + sin(x[i - 2]);
это целое, так как левое слагаемое целое и сложение целочисленное.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2012, 21:01     Нахождение целого числа
Еще ссылки по теме:

C++ Нахождение целого числа по информации о его цифрах
C++ Нахождение целого числа по информации о его цифрах
Ввод целого числа C++

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

Или воспользуйтесь поиском по форуму:
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
10.06.2012, 21:01     Нахождение целого числа #11
Цитата Сообщение от taras atavin Посмотреть сообщение
double d=x-(double)(int)x;
здесь вы вычитаете из переменной ту же самую переменную?или я что-то не так понял


Всё,понял в чём дело,вопрос снят с повестки дня
Yandex
Объявления
10.06.2012, 21:01     Нахождение целого числа
Ответ Создать тему
Опции темы

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