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

где ошибка - C++

Восстановить пароль Регистрация
 
Zuko66
0 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 2
11.11.2013, 15:30     где ошибка #1
у меня такая программа для создание матриц. но условие if(j==i-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
#include <iostream>
using namespace std;
int n=5,m;
int main(){
    m=4*n;
    double Array[m][m];
    float G=1,H=2,C=3,A1=4;
    
    for (int i=1;i<m+1;i++)
    for (int j=1;j<m+1;j++){
            Array[i][j]=0;
    }   
 
    for (int i=1;i<n+1;i++){
        for (int j=1;j<4*n+1;j++){
            if(j==i-1) {Array[i][j]=G;}
            else{   if((i<n)&&(j==i+1)) Array[i][j]=-G;}
        }   
    }
 
    for (int i=1;i<n+1;i++){
        for (int j=1;j<n+1;j++){
            cout<<i<<j<<"="<<Array[i][j]<<" ";
        }   
        cout<<endl;
    }
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
11.11.2013, 15:40     где ошибка #2

Не по теме:

тут ничего не было сказано



Добавлено через 4 минуты
Zuko66, у Вас вообще массив создается? Потому что статическое создание массива предусматривает константный размер, то есть, m и n должны быть типа const int
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 684
11.11.2013, 15:44     где ошибка #3
Скорей всего проблема в этом:
C++
1
2
    for (int i=1;i<n+1;i++){
        for (int j=1;j<4*n+1;j++){
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
11.11.2013, 15:45     где ошибка #4
кроме того, нумерация всех массивов в с(да и большинстве языков) начинается с 0,а не с 1. потому в цикле
C++
1
2
3
4
for (int i=1;i<m+1;i++)
    for (int j=1;j<m+1;j++){
            Array[i][j]=0;
    }
Вы вылазите за пределы массива.
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 684
11.11.2013, 15:47     где ошибка #5
А как там у вас создается матрица 25х25, затем n = 5, и вы пытаетесь
бегать
for (int i=1;i<n+1;i++){
for (int j=1;j<4*n+1;j++){
Переделайте вообще создание массива, а то вы сами запутались.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
11.11.2013, 15:48     где ошибка #6
Цитата Сообщение от Zuko66 Посмотреть сообщение
условие if(j==i-1) {} не выполняется
А должно. Прям на второй итерации уже.
Поставьте точку остановки, посмотрите пошагово какие у вас там значения в i и j лежат.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
11.11.2013, 15:56     где ошибка #7
SatanaXIII, да выполняется оно. странно, что компилятор вообще до этого доходить должен. он там несколько раз вылазит за пределы до этого цикла.

Добавлено через 17 секунд
у меня условие выполняется, если все правильно написать
Zuko66
0 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 2
11.11.2013, 16:37  [ТС]     где ошибка #8
у Вас вообще массив создается? Потому что статическое создание массива предусматривает константный размер, то есть, m и n должны быть типа const int
да. я всегда делаю так.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
11.11.2013, 16:53     где ошибка #9
Цитата Сообщение от Zuko66 Посмотреть сообщение
да. я всегда делаю так.
не любая среда такое захавает. по стандарту нельзя такое писать.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
11.11.2013, 16:55     где ошибка #10
Zuko66, metaluga145 прав. Но в этом ли была ошибка?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2013, 16:57     где ошибка
Еще ссылки по теме:

C++ Где ошибка?
C++ Где ошибка ?
C++ Где ошибка?

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

Или воспользуйтесь поиском по форуму:
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
11.11.2013, 16:57     где ошибка #11
SatanaXIII, да пускай поисправляет все с границами в циклах. у меня все работает
Yandex
Объявления
11.11.2013, 16:57     где ошибка
Ответ Создать тему
Опции темы

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