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

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

Войти
Регистрация
Восстановить пароль
 
KrotZaDroT
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 22
#1

Заполнить матрицу ЛП, от правого верхнего угла по диагонали: влево - вниз - C++

24.04.2014, 11:06. Просмотров 935. Ответов 5
Метки нет (Все метки)


не могу понять что у меня не правильно, помогите пожалуйста.
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
#include <stdio.h>
#include <conio.h>
#include <iostream>
int main()
{
    setlocale(LC_ALL, "Russian");
    int n, k, j, i;
    int *a= new int[i][j];
    k = 1;
    printf_s("ввелите размерность матрицы i и j= \n");
    scanf_s("%d%d", i, j);
    for (i = 1; i < n; i++)
    {
        for (j = 0; j <= i ; j++);
        {
            a[i - j][j] = k++; 
        }
    }
    for (j = 1; j < n; j++);
    {
        for (i = 0; i <= n - 1 - j; i++)
        {
            a[n - 1 - i][j + 1] = k++;
        }
    }
    for(i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++);
    }
    printf_s("%3d", &*a[i][j]);
    printf_s("\n");
    delete[]a;
    _getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2014, 11:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заполнить матрицу ЛП, от правого верхнего угла по диагонали: влево - вниз (C++):

Заполнить матрицу ЛП, от левого верхнего угла по спирали: вправо - вниз - влево - вверх. - C++
Заполнить матрицу ЛП, от левого верхнего угла по спирали: вправо - вниз - влево - вверх.

Заполнить матрицу от левого верхнего угла по диагонали - C++
Заполнить матрицу А(9,9), от левого верхнего угла по диагонали: вправо - вверх.

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

Заполнить матрицу ЛП, от левого верхнего угла по диагонали: вправо - вверх - C++
Здравствуйте, уважаемые форумчане. Я новичок в С++. Прошу помочь. Заполнить матрицу ЛП, от левого верхнего угла по диагонали: вправо -...

Заполнить матрицу, от левого верхнего угла по диагонали: вправо - вверх - C++
Помогите пожалуйста, уже второй день мучаюсь...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
_Ellen_
15 / 15 / 5
Регистрация: 28.11.2013
Сообщений: 50
24.04.2014, 12:18 #2
Для начала Вы умудряетесь динамически (?) создать массив, если я правильно поняла эту строку
Цитата Сообщение от KrotZaDroT Посмотреть сообщение
int *a= new int[i][j];
до того, как узнаете его размерность. Сначала нужно узнать значения i и j.

Двумерный массив создается немного иначе

C++
1
2
3
int ** a = new int * [i];
for (int count = 0; count < i; count++)
     a[count] = new int [j];
И удалить не забыть нужно.
KrotZaDroT
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 22
24.04.2014, 12:44  [ТС] #3
сделал примерно как вы сказали, но все равно выдает ошибку.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
setlocale(LC_ALL, "Russian");
    int n, i, j, k;
    int **a = new int*[i];
    for (int i = 0; i < n; i++) a[i] = new int[j];
    k = 1;
    printf_s("введите размерность массива n: \n");
    scanf_s("%d",&n);
    for (i = n; i = -n + 1; i--)
    for (j = 1; j < n; j++)
    if (j + i>0  && j + i <= n)
    {
        k = k + 1;
        a[i + j] = k;
    }
    for (i = 1; i < n; i++)
    for (j = 1; j < n; j++)
        printf_s("%d%d", a[i], a[j]);
    _getch();
    return 0;
_Ellen_
15 / 15 / 5
Регистрация: 28.11.2013
Сообщений: 50
24.04.2014, 13:01 #4
Примерно

Сначала мы вводим размерность массива (n).

Потом создаем динамический двумерный массив. В Ваших буквах это так:
C++
1
2
3
int ** a = new int * [n];
for (int count = 0; count < n; count++) 
    a[count] = new int[n];
А после этого уже начинаем заполнять.

Цитата Сообщение от KrotZaDroT Посмотреть сообщение
a[i + j] = k;
Вот эта строка непонятна. Должно быть два индекса типа a[i][j].
KrotZaDroT
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 22
24.04.2014, 13:13  [ТС] #5
простите, если надоедаю из за своей тупости.
так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int n, i, j, k;
    int **a = new int*[i];
    for (int i = 0; i < n; i++) 
        a[i] = new int[j];
    k = 1;
    printf_s("введите размерность массива n: \n");
    scanf_s("%d",&n);
    for (i = 0; i = -n + 1; i--)
    for (j = 1; j < n; j++)
    if (j + i>0  && j + i <= n)
    {
        k = k + 1;
        a[i + j][j] = k;
    }
    for (i = 1; i < n; i++)
    for (j = 1; j < n; j++)
    printf_s("%d%d", a[i][j]);
    _getch();
    return 0;
_Ellen_
15 / 15 / 5
Регистрация: 28.11.2013
Сообщений: 50
24.04.2014, 15:49 #6
C++
1
2
3
4
5
6
printf_s("введите размерность массива n: \n");
scanf_s("%d",&n); // узнали размерность
 
int ** a = new int * [n];
for (int count = 0; count < n; count++) 
     a[count] = new int[n]; // только после этого создаем массив размером nxn
Переменную k сначала скорее всего нужно инициализировать нулем (иначе первому элементу будет сразу присвоено значение 2), но в алгоритме заполнения сейчас нет в времени разобраться, к сожалению. Чуть позже.

Добавлено через 2 часа 3 минуты
Заполнять, например, так:
C++
1
2
3
4
5
6
7
k = 0;
 
for (int s = 0; s < 2*n - 1; s++)
    for (i = 0; i < n; i++)
        for (j = 0; j < n; j++)
            if (i+j == s)
                a[i][j] = ++k;
И массив Вы же двумерный удаляете...

C++
1
2
3
for (i = 0; i<n; i++)
        delete [] a[i];
delete [] a;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2014, 15:49
Привет! Вот еще темы с ответами:

Заполнить матрицу ЛП, от левого нижнего угла по диагонали: влево - вверх - C++
Здравствуйте! Помогите с кодом. Заполнить матрицу ЛП, от левого нижнего угла по диагонали: влево - вверх.

Заполнить матрицу от левого нижнего угла по диагонали: влево - вверх - C++
Заполнить матрицу А(9,9), от левого нижнего угла по диагонали: влево - вверх. Помогите пожалуйста

Заполнить матрицу ЛП, от левого нижнего угла по диагонали: влево - вверх. - C++
Здравствуйте, уважаемые форумчане. Очень нужна ваша помощь: перевести код из С в С++. Сам пытался но ничего путного не вышло. Очень буду...

Заполнить матрицу линейной последовательностью (0-81), от левого верхнего угла по диагонали: вправо - вверх - C++
Помогите пожалуйста написать программу: Заполнить матрицу линейной последовательностью (1-81), от левого верхнего угла по диагонали:...


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

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

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