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

Нахождение min и max методом сканирования - C++

Восстановить пароль Регистрация
 
Vergil
42 / 36 / 14
Регистрация: 11.11.2009
Сообщений: 238
20.12.2010, 16:18     Нахождение min и max методом сканирования #1
Помогите с програмкой. Написал, а она мне выдает invalid floating point operation.
Кидает на строчку, где не должно быть ошибки.
Может у кого-то есть более лучший вариант проги?
функция
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
double scan(double a, double b, double e, double h)
{double c=h, x0=a, x1;
int w, k=2;
for (;;) {
 
if (f(x0)<f(x0+0.001))
{w=-1;str=" Максимума ";break;}
else{w=1;str=" Минимума ";}
 
x1=x0+c;
 
if (x1==b) {ka=1;}
 
if((w*f(x1))<w*f(x0)){x0=x1;}
 
else{
 
if (w*f(x1)>f(x0)) {
 
if (fabs(c)<e){return x0;}
x0=x1;c=-c/k;}
 
else{
 
if(f(x1)==f(x0)){return ((x1+x0)/2);}}}}}
вызов
C++
1
2
3
4
5
6
7
void __fastcall TForm1::Button2Click(TObject *Sender)
{for(;;){
 
Form1->Memo1->Lines->Add((String)"Точка"+str+"="+scan(Edit1->Text.ToDouble(),Edit2->Text.ToDouble(),Edit3->Text.ToDouble(),Edit4->Text.ToDouble()););//pocazivaet chto tut oshibka
 
if (ka==1){break;}}
}
если точность поставить 0 и шаг 0, то работает.

Добавлено через 12 минут
что-то явно с шагом. Выставляешь 0, то работает. шаг - h.

Добавлено через 1 час 40 минут
спасибо, решил сам. Просто при шаге не равным нулю, у меня ничего не возвращалось. Он на это и жаловался.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2010, 16:18     Нахождение min и max методом сканирования
Посмотрите здесь:

C++ Нахождение min и max и их произведения
C++ Нахождение max и min фун-ции 1 переменой.
C++ Нахождение max и min в матрице . и поменять их местами
C++ Нахождение экстремума min методом половинного деления
C++ Сортировка массива методом Min и Max | Не работает программа C++
C++ Поменять нахождение min среди двумерного массива, на нахождение min в каждой сточке
Работа с функциями. Нахождение min и max C++
C++ Вычислить min max функции методом бисекции

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M@ker
-73 / 19 / 1
Регистрация: 17.12.2010
Сообщений: 355
20.12.2010, 20:03     Нахождение min и max методом сканирования #2
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

void main(void)
{
int N,M,**B,i,j,max,min,imax,imin,a;
clrscr();
do
{
printf("N=");
scanf("%d",&N);
}
while (N<=0);
do
{
printf("M=");
scanf("%d",&M);
}
while (M<=0);

B = new int* [N];
for(i=0;i<N;i++)
{
B[i] = new int [M];
}
for(i=0;i<N;i++)
{
for (j=0;j<M;j++)
{
printf("B[%d][%d]=",i+1,j+1);
scanf("%d",&B[i][j]);
}
}
clrscr();

printf("\n\t\SOURCE MATRIX\n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
printf("%d\t",B[i][j]);
}
printf("\n");
}

for(i=0;i<N;i++)
{
imax=0;
for(j=1;j<M;j++)
{
if(B[i][j]>B[i][imax])
{
imax=j;
}
}
a=B[i][0];
B[i][0]=B[i][imax];
B[i][imax]=a;

imin=0;
for(j=1;j<M;j++)
{
if(B[i][j]<B[i][imin])
{
imin=j;
}
}
a=B[i][M-1];
B[i][M-1]=B[i][imin];
B[i][imin]=a;
}
printf("\n\t\RESULT MATRIX\n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
printf("%d\t",B[i][j]);
}
printf("\n");
}
getch();
}
Yandex
Объявления
20.12.2010, 20:03     Нахождение min и max методом сканирования
Ответ Создать тему
Опции темы

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