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

Найти ошибку в коде - C++

Восстановить пароль Регистрация
 
Насютка
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 36
27.02.2014, 14:45     Найти ошибку в коде #1
помогите написать программу. есть код, но в нем ошибка, сама не разберусь какая

а)a[i][j]=(j-5.5)(i-3.2)(i-7.4)
б)В качестве компонент вектора x выбрать минимальные элементы диагоналей матрицы А, параллельных побочной диагонали, включая побочную диагональ.
в)http://www.cyberforum.ru/cgi-bin/latex.cgi?\sum_{i=0}^{2n-1}\left(x[i]+x[i+1] \right)

Добавлено через 54 секунды
там в скобках (x[i]+x[i+1])

Добавлено через 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
#include <stdio.h>
#include <stdafx.h>
#include <iostream>
 
typedef double TMatrix[10][10]; 
typedef double TVector[19]; 
const int N=10; 
void FillMatrix(TMatrix A); 
void PrintMatrix(TMatrix A); 
void GetVector(TVector M, TMatrix A); 
void PrintVector(TVector M); 
double G(TVector M); int main() 
{ 
double u; 
TMatrix A; 
TVector M; 
FillMatrix(A); 
PrintMatrix(A); 
GetVector(M,A); 
PrintVector(M); 
u=G(M); 
printf("G=%9.5f\n", u); 
system("pause"); 
return 0; 
} 
void FillMatrix(TMatrix A) 
{ 
int i,j; 
for (i=0; i<N; i++) 
for (j=0; j<N; j++) 
A[i][j]=(j-5.5)*(i-3.2)*(i-7.4); 
} 
void PrintMatrix(TMatrix A) 
{ 
int i,j; 
printf("Matrix\n"); 
for (i=0; i<N; i++) { 
for (j=0; j<N; j++) 
printf ("%7.2f ",A[i][j]); 
printf ("\n"); 
} 
} 
void GetVector(TVector M, TMatrix A) 
{ int i, k; 
for (k=-10; k<=8; k++)
{for (i=0; i<N; i++)
{if ((N-i+k)<N && (N-i+k)>=0 && M[k]>A[i][N-i+k])
M[k]=A[i][N-i+k];
}
} 
}
void PrintVector(TVector M) 
{ 
int k; 
printf("Vector: \n"); 
for (k=-10; k<=8; k++) 
printf ("%5.2f ", M[k]); 
printf("\n"); 
} 
double G(TVector M) 
{int k; 
double s=0; 
for (k=-10; k<=8; k++) 
s=s+M[k]+M[k+1]; 
return s; 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2014, 14:45     Найти ошибку в коде
Посмотрите здесь:

Найти ошибку в коде. C++
найти ошибку в коде C++
C++ Найти ошибку в коде
Найти ошибку в коде C++
Найти ошибку в коде C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
27.02.2014, 15:36     Найти ошибку в коде #2
Насютка, не надо дублировать темы. Если у вас появилась какая-либо информация по именно этому вашему заданию, то приводите ее в этой теме.
zss
Модератор
Эксперт С++
 Аватар для zss
5951 / 5556 / 1787
Регистрация: 18.12.2011
Сообщений: 14,200
Завершенные тесты: 1
27.02.2014, 16:42     Найти ошибку в коде #3
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
#include <stdio.h>
#include <conio.h>
#include <float.h>
typedef double TMatrix[10][10]; 
typedef double TVector[19]; 
const int N=10; 
void FillMatrix(TMatrix A); 
void PrintMatrix(TMatrix A); 
void GetVector(TVector M, TMatrix A); 
void PrintVector(TVector M); 
double G(TVector M); 
int main() 
{ 
    double u; 
    TMatrix A; 
    TVector M; 
    FillMatrix(A); 
    PrintMatrix(A); 
    GetVector(M,A); 
    PrintVector(M); 
    u=G(M); 
    printf("G=%9.5f\n", u); 
    getch(); 
    return 0; 
} 
void FillMatrix(TMatrix A) 
{ 
    int i,j; 
    for (i=0; i<N; i++) 
    for (j=0; j<N; j++) 
        A[i][j]=(j-5.5)*(i-3.2)*(i-7.4); 
} 
void PrintMatrix(TMatrix A) 
{ 
    int i,j; 
    printf("Matrix\n"); 
    for (i=0; i<N; i++) 
    { 
        for (j=0; j<N; j++) 
            printf ("%7.2f ",A[i][j]); 
        printf ("\n"); 
    } 
} 
void GetVector(TVector M, TMatrix A) 
{ 
    int i, k,j; 
    for (k=0; k<2*N-1; k++)
        M[k]=DBL_MAX;
    for (i=0; i<N; i++)
    {
        for (j=0; j<N; j++)
        {
            k=i+j;
            if (M[k]>A[i][j])
                M[k]=A[i][j];
        }
    }
}
void PrintVector(TVector M) 
{ 
    int k; 
    printf("Vector: \n"); 
    for (k=0; k<2*N-1; k++) 
        printf ("%5.2f ", M[k]); 
    printf("\n"); 
} 
double G(TVector M) 
{
    int k; 
    double s=0; 
    for (k=0; k<2*N-2; k++) 
        s+=M[k]+M[k+1]; 
    return s; 
}
Насютка
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 36
27.02.2014, 18:48  [ТС]     Найти ошибку в коде #4
zss, подскажите, пожалуйста, в чем заключается функция DBL_MAX ?
KOPOJI
Модератор
 Аватар для KOPOJI
16242 / 6453 / 390
Регистрация: 12.06.2012
Сообщений: 19,355
27.02.2014, 18:58     Найти ошибку в коде #5
Это не функция, а константа. Она хранит максимальное значение числа с плавающей точкой двойной точности (double), объявляется в файле float.h, что, имхо, вполне ясно из названия константы..
Насютка
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 36
27.02.2014, 19:22  [ТС]     Найти ошибку в коде #6
KOPOJI, задание еще в том, что конкретных значений, констант указывать нельзя
zss
Модератор
Эксперт С++
 Аватар для zss
5951 / 5556 / 1787
Регистрация: 18.12.2011
Сообщений: 14,200
Завершенные тесты: 1
27.02.2014, 21:11     Найти ошибку в коде #7
{
Цитата Сообщение от Насютка Посмотреть сообщение
конкретных значений, констант указывать нельзя
Без констант ну никак не обойтись:
1-я: 10
const int N=10;
2-я: 0
for (i=0; i<N; i++)
и т.д. и т.п.
Так что, я думаю DBL_MAX не подпадает под юрисдикцию запретных.
Насютка
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 36
27.02.2014, 21:19  [ТС]     Найти ошибку в коде #8
zss, преподаватель сказал, ни в коем случае нельзя учитывать конкретных значений, он с ними просто не принимает. вот как ему объяснить, что по-другому нельзя-вопрос
zss
Модератор
Эксперт С++
 Аватар для zss
5951 / 5556 / 1787
Регистрация: 18.12.2011
Сообщений: 14,200
Завершенные тесты: 1
27.02.2014, 21:37     Найти ошибку в коде #9
Тогда нельзя и
C++
1
for (i=0; i<N; i++)
Добавлено через 5 минут
Если уж обойтись без DBL_MAX,
то придется завести еще целый массив признаков:
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
void GetVector(TVector M, TMatrix A) 
{ 
    int i, k,j; 
    bool P[2*N-1];
    for (k=0; k<2*N-1; k++)
    {
        P[k]=true;
     }
    for (i=0; i<N; i++)
    {
        for (j=0; j<N; j++)
        {
            k=i+j;
            if(P[k]) 
            {
                // первый раз встретился индекс k
                P[k]=false;
                M[k]=A[i][j];
            }else
            if (M[k]>A[i][j])
                M[k]=A[i][j];
        }
    }
}
Насютка
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 36
27.02.2014, 21:45  [ТС]     Найти ошибку в коде #10
zss, по формуле, указанной в пункте «а» задания, используя значения номеров строк и столбцов, вычисляет элементы квадратной матрицы А={ aij| i, j=0, …, n-1}, где n – размер матрицы;
при разработке программы не следует учитывать конкретных значений элементов, полученных по формуле из пункта «а»
zss
Модератор
Эксперт С++
 Аватар для zss
5951 / 5556 / 1787
Регистрация: 18.12.2011
Сообщений: 14,200
Завершенные тесты: 1
27.02.2014, 21:52     Найти ошибку в коде #11
Цитата Сообщение от Насютка Посмотреть сообщение
В качестве компонент вектора x выбрать минимальные элементы диагоналей матрицы А, параллельных побочной диагонали, включая побочную диагональ.
А это тогда что такое?
Насютка
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 36
27.02.2014, 22:52  [ТС]     Найти ошибку в коде #12
zss, а что там не так?
zss
Модератор
Эксперт С++
 Аватар для zss
5951 / 5556 / 1787
Регистрация: 18.12.2011
Сообщений: 14,200
Завершенные тесты: 1
28.02.2014, 06:29     Найти ошибку в коде #13
А что Вы хотели сказать своим постом №10?
Насютка
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 36
28.02.2014, 06:45  [ТС]     Найти ошибку в коде #14
zss, то, что нельзя учитывать конкретных значений в программе.
там нужно каким-то образом разделить матрицу на 2 части(до побочной диагонали, включая ее, и после нее). и, исходяя из этого, инициализировать минимальные значения
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2014, 18:29     Найти ошибку в коде
Еще ссылки по теме:

Найти ошибку в коде C++
C++ найти ошибку в коде
C++ найти ошибку в коде

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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
 Аватар для zss
5951 / 5556 / 1787
Регистрация: 18.12.2011
Сообщений: 14,200
Завершенные тесты: 1
28.02.2014, 18:29     Найти ошибку в коде #15
Зачем делить, я привел Вам код, который не использует злополучную константу.
Yandex
Объявления
28.02.2014, 18:29     Найти ошибку в коде
Ответ Создать тему
Опции темы

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