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

Немного изменил код программы и она перестала работать. Не пойму почему. - C++

Восстановить пароль Регистрация
 
s3423
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 31
19.12.2012, 18:02     Немного изменил код программы и она перестала работать. Не пойму почему. #1
Программа работала, но нужно было вынести вывод суммы в main( до этого выводилась в sum). Для этого удалил строчку из sum, и добавил новую строку cout<< Sum(n,a); в main, теперь выдает ошибку.

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
#include<iostream>
#include<locale>
#define N 100
 
using namespace std;
 
void inMas1(int& n,int a[N][N])
{
    cout<<"\nВвод элементов матрицы A \n";
    for (int i=0; i<n; i++)      
        for (int j=0; j<n; j++)  
        {   
            cout<<"a["<<i<<"]["<<j<<"]=";
            cin>>a[i][j];    
        }   
}
 
void outMas1(int n,int a[N][N])
{
    cout<<"\nВведена матрица A \n";
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        cout<<a[i][j]<<"\t"; 
        cout<<endl; 
    }
}
 
bool uslov (int n, int a[N][N])
//В каждом столбце все элементы на чётных местах нечётны.
{
    int k=0;
    for(int j=0; j<n; j++)      
    {
        
        for(int i=1; i<n; i+=2)
        {
            if(a[i][j]%2!=0);  
            else 
                return 0;
            }
    }
    return 1;
}
 
 
int Sum(int& n, int a[N][N])
//Вычислить сумму элементов в области 3-4
{
    int s=0,i,j;
    for(int i=0;i<n;i++)
    {
        int j;
        if(i<(n/2)) j=n-i-1;
        else j=i;
        for(;j<n;j++)
    
}
    return s;
}
 
int main()
{
    setlocale (LC_ALL, "RUS");
    int i,j,n,m,a[N][N];
    cout<<"n="; 
    cin>>n;                                             
    inMas1(n,a);
    outMas1(n,a);
    if(uslov(n,a))
    {
        cout<<"\nМатрица верна, в столбцах на четных местах все элементы нечетны."<<endl;
        
    }
    else
  
        cout<<"\nМатрица не верна, программа будет закрыта."<<endl;
    cout<< Sum(n,a);
    
        system("pause");
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
379 / 225 / 2
Регистрация: 17.12.2011
Сообщений: 816
Записей в блоге: 1
19.12.2012, 18:06     Немного изменил код программы и она перестала работать. Не пойму почему. #2
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
#include<iostream>
#include<locale>
#define N 100
 
using namespace std;
 
void inMas1(int& n,int a[N][N])
{
    cout<<"\nВвод элементов матрицы A \n";
    for (int i=0; i<n; i++)
        for (int j=0; j<n; j++)
        {
            cout<<"a["<<i<<"]["<<j<<"]=";
            cin>>a[i][j];
        }
}
 
void outMas1(int n,int a[N][N])
{
    cout<<"\nВведена матрица A \n";
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        cout<<a[i][j]<<"\t";
        cout<<endl;
    }
}
 
bool uslov (int n, int a[N][N])
//В каждом столбце все элементы на чётных местах нечётны.
{
    int k=0;
    for(int j=0; j<n; j++)
    {
 
        for(int i=1; i<n; i+=2)
        {
            if(a[i][j]%2!=0);
            else
                return 0;
            }
    }
    return 1;
}
 
 
int Sum(int& n, int a[N][N])
//Вычислить сумму элементов в области 3-4
{
    int s=0,i,j;
    for(int i=0;i<n;i++)
    {
        int j;
        if(i<(n/2)) j=n-i-1;
        else j=i;
        for(;j<n;j++);
 
}
    return s;
}
 
int main()
{
    setlocale (LC_ALL, "RUS");
    int i,j,n,m,a[N][N];
    cout<<"n=";
    cin>>n;
    inMas1(n,a);
    outMas1(n,a);
    if(uslov(n,a))
    {
        cout<<"\nМатрица составлена верно, в столбцах на четных местах все элементы нечетны."<<endl;
 
    }
    else
 
        cout<<"\nМатрица не подходит по условию,программа будет закрыта."<<endl;
    cout<< Sum(n,a);
 
 
 
 
    return 0;
}
s3423
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 31
19.12.2012, 18:11  [ТС]     Немного изменил код программы и она перестала работать. Не пойму почему. #3
Подправил код в первом сообщении, вот он не работает, выдает ошибку


sovaz1997, Она работает? А что было не так?

Еще вопрос по функции условия
C++
1
2
3
4
5
6
7
8
9
10
11
12
    for(int j=0; j<n; j++)
    {
 
        for(int i=1; i<n; i+=2)
        {
            if(a[i][j]%2!=0);
            else
                return 0;
            }
    }
    return 1;
}
Как изменить, чтобы упростился код и не использовать else?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,843
Записей в блоге: 2
Завершенные тесты: 1
19.12.2012, 18:13     Немного изменил код программы и она перестала работать. Не пойму почему. #4
Цитата Сообщение от s3423 Посмотреть сообщение
Как изменить, чтобы упростился код и не использовать else?
C++
1
if(a[i][j]%2==0) return 0;
s3423
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 31
19.12.2012, 18:16  [ТС]     Немного изменил код программы и она перестала работать. Не пойму почему. #5
Croessmah, Она теперь проверяет по другому?
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
379 / 225 / 2
Регистрация: 17.12.2011
Сообщений: 816
Записей в блоге: 1
19.12.2012, 18:17     Немного изменил код программы и она перестала работать. Не пойму почему. #6
Цитата Сообщение от s3423 Посмотреть сообщение
sovaz1997, Она работает? А что было не так?
Работает
s3423
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 31
19.12.2012, 19:49  [ТС]     Немного изменил код программы и она перестала работать. Не пойму почему. #7
sovaz1997, Сейчас попробывал на vs2010, ошибок нет, но консоль сразу закрывается после ввода матрицы. Это от студии зависит, или прграмма так работает, мгновенно закрывает, что я даже результат не успеваю разглядеть?

Добавлено через 1 минуту
Этот кусок
C++
1
2
3
  if(a[i][j]%2!=0);
            else
                return 0;
заменить на
C++
1
if(a[i][j]%2==0) return 0;
?
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
379 / 225 / 2
Регистрация: 17.12.2011
Сообщений: 816
Записей в блоге: 1
19.12.2012, 19:49     Немного изменил код программы и она перестала работать. Не пойму почему. #8
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
#include<iostream>
#include<locale>
#define N 100
 
using namespace std;
 
void inMas1(int& n,int a[N][N])
{
    cout<<"\nВвод элементов матрицы A \n";
    for (int i=0; i<n; i++)
        for (int j=0; j<n; j++)
        {
            cout<<"a["<<i<<"]["<<j<<"]=";
            cin>>a[i][j];
        }
}
 
void outMas1(int n,int a[N][N])
{
    cout<<"\nВведена матрица A \n";
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        cout<<a[i][j]<<"\t";
        cout<<endl;
    }
}
 
bool uslov (int n, int a[N][N])
//В каждом столбце все элементы на чётных местах нечётны.
{
    int k=0;
    for(int j=0; j<n; j++)
    {
 
        for(int i=1; i<n; i+=2)
        {
            if(a[i][j]%2!=0);
            else
                return 0;
            }
    }
    return 1;
}
 
 
int Sum(int& n, int a[N][N])
//Вычислить сумму элементов в области 3-4
{
    int s=0,i,j;
    for(int i=0;i<n;i++)
    {
        int j;
        if(i<(n/2)) j=n-i-1;
        else j=i;
        for(;j<n;j++);
 
}
    return s;
}
 
int main()
{
    setlocale (LC_ALL, "RUS");
    int i,j,n,m,a[N][N];
    cout<<"n=";
    cin>>n;
    inMas1(n,a);
    outMas1(n,a);
    if(uslov(n,a))
    {
        cout<<"\nМатрица составлена верно, в столбцах на четных местах все элементы нечетны."<<endl;
 
    }
    else
 
        cout<<"\nМатрица не подходит по условию,программа будет закрыта."<<endl;
    cout<< Sum(n,a);
 
 
    cin >> n;
 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2012, 16:01     Немного изменил код программы и она перестала работать. Не пойму почему.
Еще ссылки по теме:

C++ Логические выражения - программа на следующий день просто перестала работать
C++ IDE wxDev-C++, при создании кнопки на форме она почему-то становится во весь экран, почему?
Почему не хочет работать код? C++

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

Или воспользуйтесь поиском по форуму:
s3423
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 31
20.12.2012, 16:01  [ТС]     Немного изменил код программы и она перестала работать. Не пойму почему. #9
sovaz1997, Теперь консоль норм работает, но сумму не выводит

Добавлено через 24 минуты
Такой код получился, сумму не считает
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
#include<iostream>
#include<locale>
#define N 100
 
using namespace std;
 
void inMas1(int& n,int a[N][N])
{
    cout<<"\nВвод элементов матрицы A \n";
    for (int i=0; i<n; i++)
        for (int j=0; j<n; j++)
        {
            cout<<"a["<<i<<"]["<<j<<"]=";
            cin>>a[i][j];
        }
}
 
void outMas1(int n,int a[N][N])
{
    cout<<"\nВведена матрица A \n";
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        cout<<a[i][j]<<"\t";
        cout<<endl;
    }
}
 
bool uslov (int n, int a[N][N])
//В каждом столбце все элементы на чётных местах нечётны.
{
    int k=0;
    for(int j=0; j<n; j++)
    {
 
        for(int i=1; i<n; i+=2)
        {
            if(a[i][j]%2==0) return 0;
            }
    }
    return 1;
}
 
 
int Sum(int& n, int a[N][N])
//Вычислить сумму элементов в области 3-4
{
    int s=0,i,j;
    for(int i=0;i<n;i++)
    {
        int j;
        if(i<(n/2)) j=n-i-1;
        else j=i;
        for(;j<n;j++);
 
}
    return s;
}
 
int main()
{
    setlocale (LC_ALL, "RUS");
    int i,j,n,m,a[N][N];
    cout<<"n=";
    cin>>n;
    inMas1(n,a);
    outMas1(n,a);
    if(uslov(n,a))
    {
        cout<<"\nМатрица составлена верно, в столбцах на четных местах все элементы нечетны."<<endl;
 
    }
    else
 
        cout<<"\nМатрица не подходит по условию,программа будет закрыта."<<endl;
    cout<< Sum(n,a);
 
 
    cin >> n;
 
    return 0;
}
Добавлено через 1 час 10 минут
Как сделать, чтобы считалась и выводилась сумма? В чем ошибка?
Yandex
Объявления
20.12.2012, 16:01     Немного изменил код программы и она перестала работать. Не пойму почему.
Ответ Создать тему
Опции темы

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