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

Затруднения с итерацией и подсчетом количеста функций - C++

Восстановить пароль Регистрация
 
Feytan
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 93
09.06.2011, 16:32     Затруднения с итерацией и подсчетом количеста функций #1
Подскажите, что не так делаю

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
#include <iostream>
#include <conio.h>  //для _getch()
#include <math.h>   //для pow(), sqrt()
 
float a,b,c=1;
float k,e,x_a,x_b,l,xm,fm,x1,x2,f1,f2;
long int i, j;
 
float f(float fa, float fb, float fc, float fx)
{
      ++j;
      return fa*(pow(fx,2))+fb*fx+fc;
}
void proc1(void)
{
     x1=x_a+(1-k)*(x_b-x_a);
     f1=f(a,b,c,x1);
}
void proc2(void)
{
     x2=x_a+k*(x_b-x_a);
     f2=f(a,b,c,x2);
}
int main(int argc)
{
    char *locale;
    
    printf("Metodi zolotogo secheniya\n",locale);
    printf("Funkciya: f(x)=Ax2+Bx+C\n",locale);
    printf("\nKoefficienti:",locale);
    printf("\nA=",locale); scanf("%f",&a);
    printf("\nB=",locale); scanf("%f",&b);
    printf("\nC=",locale); scanf("%f",&c);
    printf("\nInterval:",locale);
    printf("\not a=",locale); scanf("%f",&x_a);
    printf("\not b=",locale); scanf("%f",&x_b);
    printf("\nTochnost:",locale);
    printf("\ne=",locale); scanf("%f",&e);
    
    i=0;
    j=0;
    k=(sqrt(5.0)-1)/2;
    
    proc1();
    proc2();
    
    do
    {
            ++i;
            l=x2-x1;
            if(f1<f2)
            {
                     x_b=x2;
                     x2=x1;
                     f2=f1;
                     proc1();
            }
            if (f1>f2)
            {
                      x_a=x1;
                      x1=x2;
                      f1=f2;
                      proc2();
            }
    }
    while (l>=e);
    xm=(x1+x2)/2;
    fm=f(a,b,c,xm);
    printf("\nFunkciya f(x)min=%f\n",fm,locale);
    printf("Argument x=%f\n",xm,locale);
    printf("Kolichestvo iteracii i=%f\n",i,locale);
    printf("Kolichestvo vizovov funkcii j=%f\n",j,locale);
    
    _getch();
    return 0;
}
Вроде бы все правильно сделал, но почему-то не работает подсчет количества итераций и количества вызовов функций, вместо этого пишет все по нулям.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2011, 16:32     Затруднения с итерацией и подсчетом количеста функций
Посмотрите здесь:

switch есть небольшие затруднения C++
C++ Трудности с итерацией и подсчетом количеста функций
Затруднения с Wise Installer"ом C++
сортировка подсчетом! C++
C++ Сортировка подсчетом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
09.06.2011, 16:39     Затруднения с итерацией и подсчетом количеста функций #2
%f поменять на %ld
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
09.06.2011, 16:40     Затруднения с итерацией и подсчетом количеста функций #3
Спецификатор типа тут неверный (%f). Точно не скажу, но по-моему для long int нужен %ld.
Feytan
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 93
09.06.2011, 16:56  [ТС]     Затруднения с итерацией и подсчетом количеста функций #4
То есть заменить вот на эту часть:

C++
1
2
3
4
    printf("\nFunkciya f(x)min=%f\n",fm,locale);
    printf("Argument x=%f\n",xm,locale);
    printf("Kolichestvo iteracii i=%ld\n",i,locale);
    printf("Kolichestvo vizovov funkcii j=%ld\n",j,locale);
А саму прогу,я правильно-то написал, вроде все верно, но все же неуверен?
Feytan
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 93
09.06.2011, 19:20  [ТС]     Затруднения с итерацией и подсчетом количеста функций #5
Вот что получилось в итоге:

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
#include <iostream>
#include <conio.h>  //для _getch()
#include <math.h>   //для pow(), sqrt()
 
float a,b,c=1;
float k,e,x_a,x_b,l,xm,fm,x1,x2,f1,f2;
long int i, j;
 
float f(float fa, float fb, float fc, float fx)
{
      ++j;
      return fa*(pow(fx,2))+fb*fx+fc;
}
void proc1(void)
{
     x1=x_a+(1-k)*(x_b-x_a);
     f1=f(a,b,c,x1);
}
void proc2(void)
{
     x2=x_a+k*(x_b-x_a);
     f2=f(a,b,c,x2);
}
int main(int argc)
{
    char *locale;
    
    printf("===Metodi zolotogo secheniya===\n\n",locale); //Метод золотого сечения
    printf("Funkciya: f(x)=Ax2+Bx+C\n",locale);
    printf("\nKoefficienti:",locale);
    printf("\nA=",locale); scanf("%f",&a);
    printf("\nB=",locale); scanf("%f",&b);
    printf("\nC=",locale); scanf("%f",&c);
    printf("\nInterval:",locale);
    printf("\not a=",locale); scanf("%f",&x_a);
    printf("\ndo b=",locale); scanf("%f",&x_b);
    printf("\nTochnost:",locale);
    printf("\ne=",locale); scanf("%f",&e);
    
    i=0;
    j=0;
    k=(sqrt(5.0)-1)/2;
    
    proc1();
    proc2();
    
    do
    {
            ++i;
            l=x2-x1;
            if(f1<f2)
            {
                     x_b=x2;
                     x2=x1;
                     f2=f1;
                     proc1();
            }
            if (f1>f2)
            {
                      x_a=x1;
                      x1=x2;
                      f1=f2;
                      proc2();
            }
    }
    while (l>=e);
    xm=(x1+x2)/2;
    fm=f(a,b,c,xm);
    
    printf("\n===OTVET===\n");
    printf("\nFunkciya f(x)min=%f\n",fm,locale);
    printf("Argument x=%f\n",xm,locale);
    printf("Kolichestvo iteracii i=%ld\n",i,locale);
    printf("Kolichestvo vizovov funkcii j=%ld\n",j,locale);
    
    _getch();
    return 0;
}
Yandex
Объявления
09.06.2011, 19:20     Затруднения с итерацией и подсчетом количеста функций
Ответ Создать тему
Опции темы

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