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

Побочная линия - C++

Восстановить пароль Регистрация
 
 
Dias Aijanov
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
31.01.2014, 19:12     Побочная линия #1
Здаров!
http://informatics.mccme.ru/mod/stat...hapterid=354#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
int n;
int j;
cin>>n;
int arr[n][n];
 
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
if(j<i)
arr[n-i-1][j] = 0;
if(j=i)
arr[n-i-1][j] =1;
else
arr[n-i-1][j]=2;
 
for (i=0;i<n;++i)
{
for (j=0;j<n;++j)
cout<<arr[i][j]<<" ";
cout<<endl;
 
}
}
}
return 0;
}
то что получилось у меня. При нажатии 4 выдает 4 строки и 4 столбца только числа огромные!
В чем проблема ?

Добавлено через 4 минуты
ап!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2014, 19:12     Побочная линия
Посмотрите здесь:

Матрица (побочная диагональ) C++
Главная и побочная диагонали С++ C++
Наибольшая средняя линия треугольника C++
Побочная диагональ матрицы C++
Линия кода 'S':'C' C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
31.01.2014, 19:34     Побочная линия #2
Dias Aijanov,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
#include<iomanip>
int main()
{
    int N;
    std::cin>>N;
    size_t **arr = new size_t *[N];
    for(size_t i=0; i<N; i++)
        arr[i] = new size_t [N];
    for(size_t i=0; i<N; i++)
    {
        for(size_t j=0; j<N; j++)
        {
            if(i + j == N - 1) arr[i][j] = 1;
            if(i + j > N - 1) arr[i][j] = 2;
            if(i + j < N - 1) arr[i][j] = 0;
            std::cout<<std::setw(5)<<arr[i][j];
 
        }
        std::cout<<std::endl;
    }
}
Dias Aijanov
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
31.01.2014, 19:41  [ТС]     Побочная линия #3
а можно без size_t , new_size..
итд.
просто я начинающий и не понимаю этого
vovacreme
-16 / 61 / 13
Регистрация: 14.01.2014
Сообщений: 145
31.01.2014, 19:46     Побочная линия #4
Цитата Сообщение от Dias Aijanov Посмотреть сообщение
а можно без size_t , new_size..
итд.
просто я начинающий и не понимаю этого
Дык замени на int, в чем проблема?
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 246
31.01.2014, 19:48     Побочная линия #5
Dias Aijanov, как и просили, без неведомого вам :
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
 using namespace std;
 
int main(){
    setlocale(LC_ALL, "Russian");
     int N;
    cin>>N;
    int **arr = new int *[N];
    for(int i=0; i<N; i++)
        arr[i] = new int [N];
    for(int i=0; i<N; i++)
    {
        for(int j=0; j<N; j++)
        {
            if(i + j == N - 1) arr[i][j] = 1;
            if(i + j > N - 1) arr[i][j] = 2;
            if(i + j < N - 1) arr[i][j] = 0;
            cout<<arr[i][j];
        }
        cout<<endl;
    }
    cout<<"\n\nДля выхода нажмите любую клавишу...";
    _getch();
    return 0;
}

Не по теме:

Только не пойму почему n <= 100, ведь в строчку консоли влазит максимум 80 символов(1280x1024 экран)

Dias Aijanov
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
31.01.2014, 19:49  [ТС]     Побочная линия #6
а что значит **
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
31.01.2014, 19:50     Побочная линия #7
Цитата Сообщение от Dias Aijanov Посмотреть сообщение
а можно без size_t , new_size..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
#include<iomanip>
int main()
{
    int N;
    std::cin>>N;
    int **arr = new int *[N];
    for(int i=0; i<N; i++)
        arr[i] = new int [N];
    for(int i=0; i<N; i++)
    {
        for(int j=0; j<N; j++)
        {
            if(i + j == N - 1) arr[i][j] = 1;
            if(i + j > N - 1) arr[i][j] = 2;
            if(i + j < N - 1) arr[i][j] = 0;
            std::cout<<std::setw(5)<<arr[i][j];
 
        }
        std::cout<<std::endl;
    }
}
Здесь без динамического выделения памяти не обойтись, так как размер массива мы узнаем в процессе выполнения, а не на этапе компиляции. Конечно на некоторых компиляторах может и сработать статика, но не советую
Dias Aijanov
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
31.01.2014, 19:50  [ТС]     Побочная линия #8
http://informatics.mccme.ru/mod/stat...hapterid=354#1
там есть разбор. по нему сделайте очень прошу. Учитель не поймет меня)
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
31.01.2014, 19:53     Побочная линия #9
Цитата Сообщение от Dias Aijanov Посмотреть сообщение
а что значит **
указатель на указатель.
То есть в данном примере это объявления динамического массива

Добавлено через 2 минуты
Dias Aijanov,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    int N;
    cin>>N;
    int arr[N][N];
    for(int i=0; i<N; i++)
    {
        for(int j=0; j<N; j++)
        {
            if(i + j == N - 1) arr[i][j] = 1;
            if(i + j > N - 1) arr[i][j] = 2;
            if(i + j < N - 1) arr[i][j] = 0;
            cout<<setw(5)<<arr[i][j];
 
        }
        cout<<endl;
    }
}
Ну как я уже сказал, этот вариант будет работать не на всех компиляторах. Например VS скажет вам что N должна быть константой
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 246
31.01.2014, 19:54     Побочная линия #10
Dias Aijanov, разбор какой-то странный там ....

Не по теме:

не пойму почему там задается двухмерный массив a [1...300] [1...300]

cooller
31.01.2014, 19:57
  #11

Не по теме:

Цитата Сообщение от Xopecc Посмотреть сообщение
разбор какой-то странный там ....
Перефразировали условие

Dias Aijanov
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
31.01.2014, 19:59  [ТС]     Побочная линия #12
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
#include <iostream>
using namespace std;
 
int main()
{
int a[100][100];
int i, j, n;
cin>>n;
 
for(i=0; i<n; i++)
{ 
for(j=0; j<n; j++)
{
if(j<i){a[n-i-1][j]=0;}
if(j=i){a[n-1-i][j]=1;}
else {a[n-1-i][j]=2;}
}
}
for(i=0;i<n;i++)
{
cout<<endl;
for(j=0;j<n;j++){
cout<<a[i][j]<<" ";
}
}
return 0;
}

в чем ошибка? если можно редактировать это чтоб работало
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 246
31.01.2014, 20:00     Побочная линия #13
Dias Aijanov, как минимум нету _getch() или system("pause"), чтобы останавливало программу после выполнения
Dias Aijanov
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
31.01.2014, 20:04  [ТС]     Побочная линия #14
клянусь я уже 4ый час пытаюсь сделать эту задачу. ВСЕ ДЕЛАЮ ПО РАЗБОРУ ЧТО ЗА ХРЕНЬ ЕБ*
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
31.01.2014, 20:05     Побочная линия #15
Dias Aijanov,
Цитата Сообщение от Dias Aijanov Посмотреть сообщение
if(j=i)
Для сравнения нужно использовать два равно
И формулы составлены не верно
Dias Aijanov
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
31.01.2014, 20:05  [ТС]     Побочная линия #16
знакомый скинул вот такой код. Вроде работает но есть вопросы
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
#include <iostream>
using namespace std;
 
int main()
{
int a[100][100];
int n;
cin>>n;
for(int i=0;i<n;i++)
{ a[n-i-1][i]=1;
for(int j=i+1;j<n;j++) a[n-i-1][j]=2;
for(int k=n-i-1; k>0;k--) a[k-1][i]=0;
}
for(int i=0;i<n;i++)
{
cout<<"\n";
 
for(int j=0;j<n;j++) 
{
cout<< a[i][j]<<" ";
}}
    
    return 0;
}
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 246
31.01.2014, 20:05     Побочная линия #17
Dias Aijanov, разбор мутноват
Dias Aijanov
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
31.01.2014, 20:06  [ТС]     Побочная линия #18
как вставлять код со строками?
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
31.01.2014, 20:06     Побочная линия #19
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Dias Aijanov, Держи
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>
using namespace std;
 
int main()
{
    int a[100][100];
    int i, j, n;
    cin>>n;
 
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            if(i + j == n - 1)
                a[i][j] = 1;
            if(i + j > n - 1)
                a[i][j] = 2;
            if(i + j < n - 1)
                a[i][j] = 0;
        }
    }
    for(i=0; i<n; i++)
    {
        cout<<endl;
        for(j=0; j<n; j++)
        {
            cout<<a[i][j]<<" ";
        }
    }
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2014, 20:08     Побочная линия
Еще ссылки по теме:

Класс линия C++
Прямая линия на плоскости C++
C++ Двумерный массив. Матричные вычисления. Побочная диагональ

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

Или воспользуйтесь поиском по форуму:
Xopecc
31.01.2014, 20:08     Побочная линия
  #20

Не по теме:

cooller_94, почему никто не использует остановку, для того, чтобы увидеть результат??!?

Yandex
Объявления
31.01.2014, 20:08     Побочная линия
Ответ Создать тему
Опции темы

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