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

Перезапись данных из одной матрицы в другую - C++

Восстановить пароль Регистрация
 
barselona1994
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 88
07.04.2013, 12:13     Перезапись данных из одной матрицы в другую #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
30
31
32
33
34
35
36
// ConsoleApplication7.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <conio.h>
 
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{   
    int matrix1[3][5] ;
    for (int i=0; i<3; i++)
        for (int j=0; j<5;  j++)
            matrix1[i][j]=0;
    //for (int i=0; i<3; cout << endl, i++)
        //for (int j=0; j<5; j++)
            //printf (" %3d ", matrix1[i][j]);
 
    int matrix2[4][2] = { {1, 2}, {1, 3}, {2,5}, {3,2} };
    //for (int i=0; i<4; cout << endl, i++)
        //for (int j=0; j<2; j++)
            //printf("%3d ", matrix2[i][j]);
    //printf(" \n");
 
    for (int i = 0; i < 4; ++i) 
        matrix1 [matrix2[i][0]] [matrix2[i][1]] = 1;
 
    for (int i=0; i<3; cout << endl, i++)
        for (int j=0; j<5; j++)
            printf (" %3d ", matrix1[i][j]);
 
    return 0;
}
ошибка в строках 28-29...
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11827 / 6806 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 1
07.04.2013, 12:30     Перезапись данных из одной матрицы в другую #2
Цитата Сообщение от barselona1994 Посмотреть сообщение
C++
1
2
3
4
5
6
int matrix1[3][5];
//...
int matrix2[4][2] = { {1, 2}, {1, 3}, {2,5}, {3,2} };
//...
matrix1 [matrix2[i][0]] [matrix2[i][1]] = 1;
//...
получается
matrix1 [2][5] = 1 и matrix1 [3][2] =1
Индексация в массиве с нуля. Выходим за пределы массива, портим память, программа падает
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
07.04.2013, 12:38     Перезапись данных из одной матрицы в другую #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
barselona1994,

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
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <conio.h>
 
int _tmain(int argc, _TCHAR* argv[])
{   
    int matrix1[3][5] ;
    for (int i=0; i<3; i++)
        for (int j=0; j<5;  j++)
            matrix1[i][j]=0;
    //for (int i=0; i<3; cout << endl, i++)
        //for (int j=0; j<5; j++)
            //printf (" %3d ", matrix1[i][j]);
 
    int matrix2[4][2] = { {1, 2}, {1, 3}, {2,3}, {2,2} };
    //for (int i=0; i<4; cout << endl, i++)
        //for (int j=0; j<2; j++)
            //printf("%3d ", matrix2[i][j]);
    //printf(" \n");
 
    for (int i = 0; i < 4; ++i) 
        matrix1 [matrix2[i][0]] [matrix2[i][1]] = 1;
 
    for (int i=0; i<3; cout << endl, i++)
        for (int j=0; j<5; j++)
            printf (" %3d ", matrix1[i][j]);
 
    return 0;
}
вы выходили за пределе массива. Следите за индексами.
barselona1994
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 88
07.04.2013, 12:47  [ТС]     Перезапись данных из одной матрицы в другую #4
Цитата Сообщение от Croessmah Посмотреть сообщение
получается
matrix1 [2][5] = 1 и matrix1 [3][2] =1
Индексация в массиве с нуля. Выходим за пределы массива, портим память, программа падает
а как правильно записать?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11827 / 6806 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 1
07.04.2013, 12:50     Перезапись данных из одной матрицы в другую #5
Цитата Сообщение от barselona1994 Посмотреть сообщение
а как правильно записать?
Цитата Сообщение от yoghurt92 Посмотреть сообщение
Следите за индексами.
сами же задали заведомо не верные значения
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
07.04.2013, 12:55     Перезапись данных из одной матрицы в другую #6
barselona1994, перепишите содержимое второй матрицы так, чтобы значения были меньше количества строк и столбцов первой матрицы.
barselona1994
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 88
07.04.2013, 13:03  [ТС]     Перезапись данных из одной матрицы в другую #7
Цитата Сообщение от yoghurt92 Посмотреть сообщение
barselona1994, перепишите содержимое второй матрицы так, чтобы значения были меньше количества строк и столбцов первой матрицы.
значения матрицы?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2013, 13:05     Перезапись данных из одной матрицы в другую
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
07.04.2013, 13:05     Перезапись данных из одной матрицы в другую #8
barselona1994,

C++
1
 int matrix2[4][2] = { {1, 2}, {1, 3}, {2,2}, {2,3} };
Yandex
Объявления
07.04.2013, 13:05     Перезапись данных из одной матрицы в другую
Ответ Создать тему
Опции темы

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