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

ошибка square root - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ структура абитуриент http://www.cyberforum.ru/cpp-beginners/thread285021.html
язык с++. структуры задача такая, нужно организовать ввод\вывод структуры абитуриент (фио, год рождения, 3 оценки за экзамены и средний был аттестата) при этом фио и 3 оценки должны быть массивами! нужно ввести данные для 5-6 абитуриентов. после ввода вывода надо удалить элемент с указанным средним баллом и добавить после указанной фамилии. я сделал какую то часть, ввод вывод только для одного...
C++ Заполнение Матрици задача предстоит в том, чтоб заполнить матрицу таким образом, код надо на Си http://www.cyberforum.ru/cpp-beginners/thread285013.html
C++ Рекурсивное определение действия лекарств
Реакция организма на действие лекарственного препарата через n часов после инъекции выражается показателем Rn. Экспериментально установлено, что для лекарственных препаратов некоторой группы показатель реакции Rn = aRn-1 +0,4 n, где R0 = 1, а а-меньше единицы любое положительное число. Определить, через сколько часов наступает максимальная реакция организма. (описать рекурсивную процедуру поиска...
В текстовом файле найти все варианты вхождения подстроки, используя символы шаблона * и ? C++
Народ,помогите плиз с задачей! В текстовом файле найти все варианты вхождения подстроки, используя символы шаблона * и ? Результат сохранить в новом файле. Имена входного и выходного файлов спросить у пользователя. :wall:
C++ сформировать квадратную матрицу порядка n по заданному образцу http://www.cyberforum.ru/cpp-beginners/thread284984.html
сформировать квадратную матрицу порядка n по заданному образцу
C++ "О шахматной доске и зернах" "О шахматной доске и зернх". Известная индийская легенда утверждает, что когда великий гроссмейстер выиграл у падишаха в награду он попросил положить на первую клетку шахматной доски 1 зерно, на вторую - 2, на третью - 4, на четвертую - 16 и т.д. Опишите программу, содержащую рекурсивную процедуру вычисления количества зерен на n-й ячейке шахматной доски. подробнее

Показать сообщение отдельно
kjahert
48 / 48 / 5
Регистрация: 08.04.2011
Сообщений: 124
28.04.2011, 12:42     ошибка square root
Вообщем переделал программу, которая считает методом Гаусса-Зейделя
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
#include "stdafx.h"
#include <math.h>
 
// Матрица порядка 3x3
const int n=3;
 
int Zeidel (float a[n][n], float b[n], float x[n], float e)
{
    int i,j;
    float s1, s2, s, v, m;
    int iCount=0;
    do
    {
        
        m = 0;
        for (i=0;i<n;i++)
        {
            // Вычисляем суммы
                 s1 = 0;
                 s2 = 0;
 
        for (j=0;j<i;j++)  s1+=  a[i][j] * x[j];
        for( j = i; j<n;j++)  s2 += a[i][j] * x[j];
 
                 // Вычисляем новое приближение и погрешность
                 v = x[i];
                 x[i] -= (1 / a[i][i]) * (s1 + s2 - b[i]);
 
        if (fabs (v-x[i]) >m ) m = fabs(v - x[i]);
        }
        iCount++;
    }
    while (m >= e);
    printf("Number of Iterations: %i\n",iCount);
    return 1;
 
}
 
 
 
 
    /*
    A     1     2     3     4     b
 
    1     4.1   0.1   0.2   0.2   21.14
    2     0.3   5.3   0.9   -0.1  -17.82
    3     0.2   0.3   3.2   0.2   9.02
    4     0.1   0.1   0.2   -9.1  17.08
 
    Верный результат:
    x1 =  5.2000000008E+00
    x2 = -4.2000000028E+00
    x3 =  3.0000000003E+00
    x4 = -1.8000000000E+00
 
    */
 
 
int main(int argc, char* argv[])
{
    
    // Точность вычислений
    float eps = 0.0001;
    
    int i;
 
    // Матрица коэффициентов
    float a[n][n];
 
    // Столбец правых частей
    float b[n];
 
    // Вектор решения
    float x[n];
 
 
    a[0][0]=2.f;    a[0][1]=1.f;    a[0][2]=1.f; 
    a[1][0]=1.f;    a[1][1]=3.f;    a[1][2]=1.f; 
    a[2][0]=1.f;    a[2][1]=1.f;    a[2][2]=4.f; 
 
    
    b[0]=4.f;   b[1]=5.f;   b[2]=6.f; 
 
 
    // Начальное приближение - нулевой вектор
    for (i=0;i<n;i++)
    {
        x[i]=0;
    }
 
    
    if (Zeidel (a,b,x,eps))
    {
       printf ("Solution found.\n");
        for (i=0;i<n;i++)
        {
            printf ("%f\n",x[i]);
        }
    }
    else
    {
        printf ("Solution not found\n");
    }
    return 0;
 
}
на эту, которая работает под borland c 3.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
#include <iostream.h>
#include <conio.h>
#include <math.h>
const int n=4;
double eps = 0.0001;
double i;
double x[n];
 
double b[n]={5.458, 3.460, 18.515, 5.478};
 
double a[n][n]={{0.060, 0.048, 0.700, 0.550},
           {0.020, 0.333, 0.080, 0.300},
           {1.250, 0.400, 0.092, 0.248},
           {0.034, 0.650, 0.067, 0.300}};
 
double Zeydel (double a[n][n], double b[n], double x[n], double e)
{
 double i,j;
 double s1, s2, s, v, m;
 double ii=0;
 do
 {
  m = 0;
  for (i=0;i<n;i++)
  {
   s1=0;
   s2=0;
 
   for (j=0;j<i;j++)  s1+= a[i][j]*x[j];
   for (j=i;j<n;j++)  s2+= a[i][j]*x[j];
    v=x[i];
    x[i]-=(s1+s2-b[i])/a[i][i];
 
    if (fabs(v-x[i])>m)
     m=fabs(v-x[i]);
   }
    ii++;
   }
  while (m>=e);
 
    cout<<"Chislo iteraciy: "<<ii<<endl;
   return 1;
 }
 
void main()
{
 clrscr();
 
 for (i=0;i<n;i++)
 {
  x[i]=0;
 }
 
 if (Zeydel (a,b,x,eps))
 {
  for (i=0;i<n;i++)
  {
   cout<<"\n"<<"x"<<i+1<<" = "<<x[i];
  }}  
 getch();
}
Выдает ошибку floating point square root of negative number
Хотя когда подставляю матрицу как в первой проге, работает нормально
В чем проблема помогите пожалуйста
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru