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

При наличие корней в системе уравнений выдает ошибку - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Builder Сформировать одномерный массив, состоящий из отрицательных элементов заданных матриц http://www.cyberforum.ru/cpp-beginners/thread374596.html
Заданы два массива B(10,10), C(10,10). Сформировать одномерный массив D, состоящий из отрицательных элементов заданных массивов. сделала автозаполнение массивов. как дальше???:sigh: void __fastcall TForm1::Button1Click(TObject *Sender) { for(int i=0; i<10; i++) for(int j=0; j<10; j++) StringGrid1->Cells = IntToStr((rand() % 100) - 50);
C++ Задержка Использую MinGW через NetBeans. Проблема состоит в том что такие команды как cin.get или же getchar() судя по всему игнорируются компилятором, так как в созданном исполняемом файле задержки в консоли нету: выполняется программма и консоль сразу закрывается, как будто и не писал этих команд. Команду же getch() не воспринимает консоль самого NetBeans, впрочем как и printf и scanf - попросту... http://www.cyberforum.ru/cpp-beginners/thread374591.html
ПОМОГИТЕ НАПИСАТЬ В С++ C++
Помогите написать прогу в С++ для задачи Log18. Даны координаты (как целые от 1 до 8) двух различных полей шахматной доски. Если король за один ход может перейти с одного поля на другое, вывести логическое значение True, в противном случае вывести значение False. Заранее спасибо! Капс заело?
Метод Крамера C++
Вот само задание: Написать программу, осуществляющую решение систем линейных уравнений методами Гаусса и Крамера. Программа должна обеспечить ввод с клавиатуры систем линейных уравнений произвольного порядка и нахождение их решений. Помогите,пожалуйста с комментариями,если можно. Особенно правильность проверять не будут, так как на компьютере не проверяют
C++ bitstream parsing http://www.cyberforum.ru/cpp-beginners/thread374560.html
Всем привет! Сейчас у меня возник вопрос парсинга битового потока. Но как то не совсем все понятно. Маски, байтовые смещения и т.д. Может кто подскажет литературу или хорошо прокомментированный примерчик! Спасибо!
C++ Вопрос про конструктор класса по умолчанию http://s2.ipicture.ru/uploads/20111029/A7AtbNYV.jpg Пункт первый не могу немного понять.Т.е получается,что всегда лучше создавать самому конструктор класса ? Ппц,как так можно книги выпускать.Сплошные опечатки,пропуски букв,не полный перевод комментариев... подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
31.10.2011, 11:55     При наличие корней в системе уравнений выдает ошибку
Larri, для начала решил оттестировать ваш алгоритм на счёт простой системы, как видите на скрине в алгоритме скорее всего логическая ошибка, т.к. всегда попадается b1[i] != b[i]
Цитата Сообщение от Larri Посмотреть сообщение
if(b1[i]!=b[i]) j++;
Ваш код с небоьшими изменениями, в плане его сокращения откомпилировал несколько раз в Release, даже на простой системе Ваш алгоритм не работает. Вообщем у меня многое под сомнением, но вот здесь особенно
Цитата Сообщение от Larri Посмотреть сообщение
w1[j]=(w1[j]+a[j*n+i]*w[i])%2;
a[j*n+i] - допустим j = n - 1 i = n тогда вы пытаетесь обратиться к несуществующему элементу
a[(n - 1)*n + (n - 1)] как я понял по программе в а всего n элементов.
Цитата Сообщение от Larri Посмотреть сообщение
http://lib.mexmat.ru/books/4633
Там книжку читать надо, а быстрый поиск по Ланцош ничего не дал, если можно сделайте принт скрин нужных страниц и сюда тогда смогу проверить что к чему

Цитата Сообщение от Larri Посмотреть сообщение
w=(w+w1[i]*w2[i])%2;
- ну и это мне не понятно, вы двоичное сложение хотите сделать или что этим хотели реализовать???Это не двоичное сложение - а остаток от целочисленного деления на два, поясню
2 + 3 = 5 (10 + 11 = 101)
5 % 2 = 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
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 4
 
typedef struct
{
    int*a;
    bool l;//нулевой ли вектор
}
lama;
 
int* WC(int *w1,int f,int n)//alfa na vector
{
    int i=0;
    int *w=(int*)malloc(n*sizeof(int));
    for(i=0;i<n;i++)
        w[i]=0;
    for(i=0;i<n;i++)
        w[i]=(w[i]+w1[i]*f)%2;
    return w;
}
 
int WW(int *w1,int *w2,int n)//skal proizv
{
    int i=0;
    int w=0;
    for(i=0;i<n;i++)
        w=(w+w1[i]*w2[i])%2;
    return w;
}
 
int* MW(int n, int *a, int *w)
{
    int i,j;
    int *w1=(int*)malloc(n*sizeof(int));
    for (j=0;j<n;j++)
        w1[j]=0;
    for (j=0;j<n;j++)
    for (i=0;i<n;i++)
        w1[j]=(w1[j]+a[j*n+i]*w[i])%2;
    return w1;
}
 
lama form(int n,int *a,int *w1, int *w0)
{
        int i=0;
        int *w2;
        lama w;
        w.l=false;      
        int q,q1,e=0;
        w.a=(int*)malloc(n*sizeof(int));
        w2=(int*)malloc(n*sizeof(int));
        w2=MW(n,a,w1);
        q=(WW(MW(n,a,w2),w1,n))*(WW(w2,w1,n));  
        if(w0==NULL)
        {
                for(i=0;i<n;i++)
                {
                        w.a[i]=(w2[i]+WC(w1,q,n)[i])%2; //в двоичном сложении 1+1=1-1=0, если не учитывать перенос разряда
                        e+=w.a[i];
                }
        }
        else
        {
                q1=(WW(MW(n,a,w2),w0,n))*(WW(MW(n,a,w0),w0,n));
                for(i=0;i<n;i++)
                {
                        w.a[i]=(w2[i]+WC(w1,q,n)[i]+WC(w0,q1,n)[i])%2;
                        e+=w.a[i];                      
                }
        }       
        if(e==0) 
            w.l=true;
        free(w2);
        return w;
}
int*XX(int*a,int*w,int k,int n)//nepr
{
        int j,i,q;
        int*x =(int*)malloc(n*sizeof(int));  
        for(i=0;i<n;i++)
            x[i]=0;
        for(i=0;i<=k;i++)
        {               
                q=WW((w+i*n),w,n)*WW(MW(n,a,(w+i*n)),(w+i*n),n);
                for(j=0;j<n;j++)
                    x[j]=(x[j]+q*w[i*n+j])%2;
        }       
        return x;
}
bool prov(int*a,int*x,int*b,int n)
{       
    int i,j = 0;
    int * b1=MW(n,a,x);
    for(i=0;i<n;i++)
    if(b1[i]!=b[i])
        j++;
    return (j == 0 ? true : false);
}
int main()
{
        int *x,i,j,k=0;
        lama p; 
        int * a=(int*)malloc(N*N*sizeof(int));
        int * b=(int*)malloc(N*sizeof(int));
        int * w=(int*)malloc(N*N*sizeof(int));
        for(i=0;i<N;i++)//-пользовательское задание матрицы А
                for(j=0;j<N;j++)
                {
                        printf("Enter a[%i,%i] : ",i,j);
                        scanf("%i",&a[i*N+j]);
                }
        for(i=0;i<N;i++)
        {
                printf("Enter b[%i] : ",i);
                scanf("%i",&b[i]);
        }
        for (i=0; i<N; i++)
        {
                for (j=0; j<N; j++)
                        printf("\t %i", a[i*N+j]);
                printf ("\n");
        }
        for(i=0;i<N;i++)        
                printf("b[%i]=%i\n",i,b[i]);
        for(j=0;j<N;j++)
                w[j]=b[j];
        i=1;
        do
        {
                if(i==1) 
                    p=form(N,a,b,NULL);
                else 
                    p=form(N,a,(w+(i-1)*N),(w+(i-2)*N));
                for(j=0;j<N;j++)//было j<=N
                {
                        w[i*N+j]=p.a[j];//запись вектора W[i] в матрицу омег                    
                }
                k++;
                i++;
        }
        while(!p.l);
        if(p.l)
        {
                for (i=0; i<=k; i++)
                {
                        for (j=0; j<N; j++)
                                printf("\t %i", w[i*N+j]);
                        printf ("\n");
                }
                x=XX(a,w,k,N); 
                prov(a,x,b,N);
               if(!prov(a,x,b,N)) 
                    printf("answer does not exist\n");
                else 
                {
                        printf("answer is true\n");
                        printf("answer: ");
                        for(i=0;i<N;i++)
                                printf("%i ",x[i]);
                        printf("\n");
                }
        }
        else 
            printf("algorithm does not work\n");
 /*       free(a);
        free(b);
        free(w);*/
        return 0;
}
Миниатюры
При наличие корней в системе уравнений выдает ошибку  
 
Текущее время: 03:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru