С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 1
Регистрация: 03.10.2014
Сообщений: 111

Странная ошибка при работе с рекурентной формулой

23.10.2014, 02:14. Показов 1359. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пожалуйста внимательно осмотрите этот код и посмотрите на странные ответы на картинке, и исправьте мои переменные, а то я думаю все дело в них, и еще в Memo2 и Memo3 я специально не написал индексы элементов, ибо они все равно выставляются последовательно как в Memo1, как это исправить? Заранее спасибо!
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
//---------------------------------------------------------------------------
#include <math.h>
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
long int i,n,f,b,min,max,mult = 1;
long int a[24];
long int sum=0;
n=StrToInt(Edit1->Text);
a[0]= StrToFloat(Edit2->Text);
a[1]= StrToFloat(Edit3->Text);
a[2]= StrToFloat(Edit4->Text);
for (i=3; i<n;i++)
a[i]= 2*(a[i-1]+a[i-2])+(a[i-1]+a[i-2])+0.85*a[i-3];
for (i=0; i<n;i++)
Memo1->Lines->Add("a["+IntToStr(i)+"]="+FloatToStr(a[i])+" ");
 
for (i=min=0;i<n;i++)
  {
  if (a[i]<a[min]) min=i;
  }
 Edit5->Text=FloatToStr(a[min]);
 
for (i=max=0;i<n;i++)
 {
 if (a[i]>a[max]) max=i;
 }
 Edit6->Text=FloatToStr(a[max]);
 
for (i=0;i<n;i++)
 {
 sum += a[i];
 sum = sum;
 }
 Edit7->Text=FloatToStr(sum);
 
for (i=0;i<n;i++)
{mult *= a[i];}
mult = mult;
 Edit8->Text=FloatToStr(mult);
 
sortirovka:     //метка начала сортировки
f=0;     //флажок для остановки сортировки
for (i=0; i<n; i++)     //разовая сортировка
 {
if (a[i] > a[i+1])     //условие для перестановки соседних элементов
{
b = a[i];     //временно запомнить больший элемент
a[i] = a[i+1];     //меньший сместить влево
 a[i+1] = b;     //больший сместить вправо
f=1;     //флажок для остановки сортировки
}
}
if (f==1) goto sortirovka;     //условие необходимости повторной сортировки
 for (i=0; i<n; i++)     //вывод результата сортировки
Memo2->Lines->Add(FloatToStr(a[i])+" ");
 
sortirovka2:
f=0;
for (i=0; i<n; i++)
 {
if (a[i] < a[i+1])
{
b = a[i];
a[i] = a[i+1];
 a[i+1] = b;
f=1;
}
}
if (f==1) goto sortirovka2;
 for (i=0; i<n; i++)
Memo3->Lines->Add(FloatToStr(a[i])+" ");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Edit1->Clear();
Edit2->Clear();
Edit3->Clear();
Edit4->Clear();
Edit5->Clear();
Edit6->Clear();
Edit7->Clear();
Edit8->Clear();
Memo1->Clear();
Memo2->Clear();
Memo3->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.10.2014, 02:14
Ответы с готовыми решениями:

Странная ошибка при работе с Excel
В общем, имеется такая процедура конвертации XLS в CSV (даже не спрашивайте, зачем мне это нужно): procedure...

Странная ошибка при работе с Excel
Пытаюсь создать Excel файл и записать в него ячейки но при компиляции программы получаю совершенно не понятную мне ошибку int i; ...

Чат на WinSocket. Очень странная ошибка при работе
Привет всем. Дело тут такое. Я до этого месяца три назад пробовал и делал чат через WinSocket, но вот сейчас проблема. Использую идентичный...

11
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
23.10.2014, 11:13
исправьте, пожалуйста, ваше "посмотрите и исправьте" на "постановка задачи. описание проблемы", в крайнем случае на "как должно быть. как есть".
мне хватило goto в вашем коде, чтоб не лезть глубже
1
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
23.10.2014, 11:51
И хватит размножать темы - толку от этого не много как я погляжу.
Очередные работы с массивом
Работа с массивами

Добавлено через 20 минут
ТС можете конкретно сказать задачу?
Что Вы делаете? какие ответы я должен увидеть на Вашей картинке?
Для анализа информации очень мало Вы даете.

Не по теме:

напомнило:
- Вглядитесь в картинку! Видите там суслика?
- Нет!
- А он там есть!

0
0 / 0 / 1
Регистрация: 03.10.2014
Сообщений: 111
24.10.2014, 23:05  [ТС]
Вот что мне нужно сделать:
1)Определить кол-во и значения элементов массива;
2)Расположить массив по возрастанию;
3)Расположить массив по убыванию;
4)Определить наименьший элемент массива и вывести его порядковый номер;
5)Определить наибольший элемент массива и вывести его порядковый номер;
6)Вычислить сумму элементов массива;
7)Вычислить произведение элементов массива

Добавлено через 1 минуту
в ответе я должен получать вещественные цифры

Добавлено через 1 минуту
переменные на int я поменял из-за того, чтобы избежать ошибку "floating point overflow"

Добавлено через 1 минуту
и при выводе сортированного массива мне нужно вывести элемент массива с его порядковым номером

Добавлено через 55 секунд
напишите какие еще информации нужны я все скажу????
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
25.10.2014, 19:34
Цитата Сообщение от Tima1996 Посмотреть сообщение
Вот что мне нужно сделать:
Что нужно сделать - понятно. Исходные данные какие? Твой код из первого поста никакого желания нет перелопачивать, и тем более угадывать по скрину где какой эдит, что там зацифры в Мемо и как они получаются. Так что будь добр, предоставить задание в том виде, как ты его получил.
0
0 / 0 / 1
Регистрация: 03.10.2014
Сообщений: 111
26.10.2014, 03:58  [ТС]
Вот все что мне было дано:
Дана математическое выражение: Название: latex.gif
Просмотров: 36

Размер: 855 байт
1)Определить кол-во и значения элементов массива;
2)Расположить массив по возрастанию;
3)Расположить массив по убыванию;
4)Определить наименьший элемент массива и вывести его порядковый номер;
5)Определить наибольший элемент массива и вывести его порядковый номер;
6)Вычислить сумму элементов массива;
7)Вычислить произведение элементов массива
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
26.10.2014, 15:20
Начальные значения B[j-1], B[j-2], B[j-3] какие? Или произвольные?
0
0 / 0 / 1
Регистрация: 03.10.2014
Сообщений: 111
26.10.2014, 18:37  [ТС]
пусть будут j=4,5,...,25, а начальные значения B1 = 2.72, B2 = 3.01, B3 = 1.56
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
27.10.2014, 08:15
Tima1996, а в формуле никакой ошибки нет?
Иначе уже на первых шагах получаются совершенно несуразные цифры, а после 12-го шага - просто переполнение.
Миниатюры
Странная ошибка при работе с рекурентной формулой  
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
27.10.2014, 08:26
Лучший ответ Сообщение было отмечено Tima1996 как решение

Решение

Просто проверь сам пару-тройку шагов на калькуляторе и убедись.
Можешь свои расчеты преподавателю показать, возможно действительно ошибка в формуле...

Добавлено через 2 минуты
И, кстати, в стартовом посте ты приводил такую вот формулу
a[i]= 2*(a[i-1]+a[i-2])+(a[i-1]+a[i-2])+0.85*a[i-3];
Так какая правильная?
1
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
27.10.2014, 20:28
Цитата Сообщение от D1973 Посмотреть сообщение
И, кстати, в стартовом посте ты приводил такую вот формулу
Чем эта лучше? Каждое следующее значение в три с хвостиком раза больше, чем сумма двух предыдущих. Весьма близко к геометрической прогрессии со знаменателем около четырех. Тут как ни крути, все равно отлавливать переполнение и завершать вычисления. Вот тут я развлекался как-то - Защита кода. Отлов ошибок и исключений. Отличие типов double и long double в данном контексте.
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
28.10.2014, 05:37
Цитата Сообщение от BRcr Посмотреть сообщение
Чем эта лучше?
Да те же яйца, вид сбоку... Единственно, что хотя бы массив 0 .. 24 заполняется и сумма элементов массива считается. Произведение - уже переполнение выдает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.10.2014, 05:37
Помогаю со студенческими работами здесь

Вычислить член y(x) последовательности, определенный рекурентной формулой
Задание такое: вычислить член y(x) последовательности, определенный рекурентной формулой \operatorname{y}_{x + 2} - 6...

Написать программу табуляции функции, заданной рекурентной формулой
Помогите пожалуйста решить Написать программу табуляции функции, заданной рекурентной формулой, где k-натуральное число. Рассмотреть...

Вычислить k первых членов арифметической прогрессии, заданых рекурентной формулой.
Вычислить k первых членов арифметической прогрессии, заданых рекурентной формулой an+1=an+2, где an n-й член арифметической прогрессии.

странная логика программы при работе с USART
Доброго времени суток! Человеки, подсобите, будьте ласковы. Вообразил себя космонавтом и накропал такое : #defyme F_CPU 4000000 ...

Аппаратная ошибка видео (Ошибка при работе с видеоустройствами привела к некорректной работе Windows).
Аппаратная ошибка видео. Последнее время во время игры Call of Duty: Modern Warfare 2 в мультиплеер, (между сменами карт, как только...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru