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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.70
Cubix_System
0 / 0 / 0
Регистрация: 29.03.2012
Сообщений: 3
#1

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

30.03.2012, 00:11. Просмотров 4807. Ответов 4
Метки нет (Все метки)

Ввожу последовательно числа от 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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2012, 00:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ввод двумерного массива. (C++):

ввод двумерного массива,ввод размерности массива,заполнение массива случайными числами - C++
#include &quot;stdafx.h&quot; #include &quot;locale.h&quot; #include &quot;stdlib.h&quot; #include &quot;math.h&quot; void main() { setlocale(LC_ALL,&quot;rus&quot;); int...

Функции двумерного массива. Транспонировать матрицу через ввод вывод функции двумерного массива. - C++
Транспонировать матрицу через ввод вывод функции двумерного массива.Сначала вывести ее,а потом провести транспонирование.

ввод двумерного массива - C++
Как ввести двумерный массив с помощью объекта cin в виде прямоуголника с числами?

Ввод двумерного массива - C++
Немного не получается,проверьте пожалуйста,спасибо #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main () { int m,n,i,j; printf...

ввод двумерного массива - C++
Дана функция ввода массива (vvod) и ввода строки массива (vvodStr) с динамическим распределением памяти. float* vvodStr (int n) { ...

Написать программу, которая вычисляет сумму элементов двумерного массива по столбцам. Организовать ввод массива с клавиатуры по строкам - C++
Написать программу, которая вычисляет сумму элементов двумерного массива по столбцам. Организовать ввод массива с клавиатуры по строкам.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Algiz
160 / 160 / 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++)...
0
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++)...
Эти части кода не равны друг другу.
0
CyBOSSeR
Эксперт C++
2302 / 1672 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
30.03.2012, 01:04 #4
Цитата Сообщение от Cubix_System Посмотреть сообщение
Эти части кода не равны друг другу.
Ваша "часть кода" неверна, т.к. при y равном m, Вы выходите за пределы массива. То же самое c x.
1
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
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2012, 01:26
Привет! Вот еще темы с ответами:

Ввод с клавиатуры двумерного массива - C++
Подскажите, как ввести с клавиатуры двухмерный массив и вывести его на экран?

Ввод двумерного массива из файла - C++
#include &quot;stdafx.h&quot; #include &lt;stack&gt; #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;algorithm&gt; #include &lt;locale&gt; const int...

ввод двумерного массива по строкам - C++
Подскажите пожалуйста, как правильно организовать ввод данных с клавиатуры в нединамический двумерный массив. Сколько ни бьюсь над кодом,...

Ввод с клавиатуры двумерного массива - C++
for (int i = 0; i &lt; massize;i++) { for (int b = 0; b &lt; massize; b++) { cin &gt;&gt; mas; } } Код довольно простой,но...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.03.2012, 01:26
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru