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

Ввод двумерного массива. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.70
Cubix_System
0 / 0 / 0
Регистрация: 29.03.2012
Сообщений: 3
30.03.2012, 00:11     Ввод двумерного массива. #1
Ввожу последовательно числа от 1 до 6, однако на выходе имею :

1 2 4
4 5 6

A[0][2] всегда становится равен A[1][0]
Прошу помочь с объяснением.

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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE,"RUSSIAN");
    int m = 1 ,n = 2;
    int a[m][n];
    for(int y=0;y<=m;y++)
    {
        for(int x=0;x<=n;x++)
        {
            cout << "Введите A[" << y << ' ' << x <<"]: ";
            cin >> a[y][x];
        }
    }
    cout << '\n';
    cout << "A[" << m+1 << ' ' << n+1 <<"]: "<<endl;
    for(int y=0;y<=m;y++)
    {
        for(int x=0;x<=n;x++)
        {
            cout << a[y][x] << ' ';
        }
        cout << '\n';
    }
    getch();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Algiz
159 / 159 / 13
Регистрация: 23.02.2011
Сообщений: 347
30.03.2012, 00:23     Ввод двумерного массива. #2
C++
1
2
 int m = 1 ,n = 2;
    int a[m][n];
вот так делать нельзя!

C++
1
2
3
for(int y=0;y<=m;y++)
    {
        for(int x=0;x<=n;x++)...
==>

C++
1
2
3
for(int y=0;y<m;y++)
    {
        for(int x=0;x<n;x++)...
Cubix_System
0 / 0 / 0
Регистрация: 29.03.2012
Сообщений: 3
30.03.2012, 01:00  [ТС]     Ввод двумерного массива. #3
Цитата Сообщение от Algiz Посмотреть сообщение
C++
1
2
 int m = 1 ,n = 2;
    int a[m][n];
вот так делать нельзя!
Почему? Я же присвоил значение переменным, правда грамотнее было написать:
C++
1
int const m = 1 ,n = 2;
Добавлено через 2 минуты
Цитата Сообщение от Algiz Посмотреть сообщение
C++
1
2
3
for(int y=0;y<=m;y++)
    {
        for(int x=0;x<=n;x++)...
==>

C++
1
2
3
for(int y=0;y<m;y++)
    {
        for(int x=0;x<n;x++)...
Эти части кода не равны друг другу.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
30.03.2012, 01:04     Ввод двумерного массива. #4
Цитата Сообщение от Cubix_System Посмотреть сообщение
Эти части кода не равны друг другу.
Ваша "часть кода" неверна, т.к. при y равном m, Вы выходите за пределы массива. То же самое c x.
Cubix_System
0 / 0 / 0
Регистрация: 29.03.2012
Сообщений: 3
30.03.2012, 01:26  [ТС]     Ввод двумерного массива. #5
Цитата Сообщение от Cubix_System Посмотреть сообщение
Почему? Я же присвоил значение переменным, правда грамотнее было написать:
C++
1
int const m = 1 ,n = 2;
После изменения этой строки теперь выдает:
1 2 4
4 5 7

A[1][2] по непонятной причине увеличился на 1...

Добавлено через 7 минут
Если я правильно понимаю, то y и x увеличиваются сразу после проверки условия в цикле,а не после исполнения тела цикла.

Добавлено через 11 минут
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Ваша "часть кода" неверна, т.к. при y равном m, Вы выходите за пределы массива. То же самое c x.
Спасибо, все адекватно заработало, сейчас вспомнил и стало стыдно - максимальный номер ячейки массива размерностью n является n-1
Yandex
Объявления
30.03.2012, 01:26     Ввод двумерного массива.
Ответ Создать тему
Опции темы

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