Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
1

Побочная линия

31.01.2014, 19:12. Показов 1758. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здаров!
http://informatics.mccme.ru/mo... erid=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 минуты
ап!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.01.2014, 19:12
Ответы с готовыми решениями:

Главная и побочная диагонали С++
Пусть A - двумерный массив целых чисел размерности NxN. Ввести его и найти: Минимальный из...

Побочная диагональ матрицы
Подскажите, как в динамической квадратной матрице поменять элементы главной и побочной диагонали...

Матрица (побочная диагональ)
Создать матрицу, все элементы, которые ниже побочной диагонали сложить и этим числом заменить...

Двумерный массив. Матричные вычисления. Побочная диагональ
Дан массив действительных чисел размером nхn(n&lt;10). Найти наименьшее из значений элементов...

27
571 / 539 / 280
Регистрация: 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;
    }
}
0
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
31.01.2014, 19:41  [ТС] 3
а можно без size_t , new_size..
итд.
просто я начинающий и не понимаю этого
0
62 / 62 / 33
Регистрация: 14.01.2014
Сообщений: 145
31.01.2014, 19:46 4
Цитата Сообщение от Dias Aijanov Посмотреть сообщение
а можно без size_t , new_size..
итд.
просто я начинающий и не понимаю этого
Дык замени на int, в чем проблема?
0
33 / 28 / 9
Регистрация: 13.09.2013
Сообщений: 250
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 экран)

0
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
31.01.2014, 19:49  [ТС] 6
а что значит **
0
571 / 539 / 280
Регистрация: 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;
    }
}
Здесь без динамического выделения памяти не обойтись, так как размер массива мы узнаем в процессе выполнения, а не на этапе компиляции. Конечно на некоторых компиляторах может и сработать статика, но не советую
0
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
31.01.2014, 19:50  [ТС] 8
http://informatics.mccme.ru/mo... erid=354#1
там есть разбор. по нему сделайте очень прошу. Учитель не поймет меня)
0
571 / 539 / 280
Регистрация: 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 должна быть константой
0
33 / 28 / 9
Регистрация: 13.09.2013
Сообщений: 250
31.01.2014, 19:54 10
Dias Aijanov, разбор какой-то странный там ....

Не по теме:

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

0
cooller
31.01.2014, 19:57
  #11

Не по теме:

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

0
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;
}

в чем ошибка? если можно редактировать это чтоб работало
0
33 / 28 / 9
Регистрация: 13.09.2013
Сообщений: 250
31.01.2014, 20:00 13
Dias Aijanov, как минимум нету _getch() или system("pause"), чтобы останавливало программу после выполнения
0
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
31.01.2014, 20:04  [ТС] 14
клянусь я уже 4ый час пытаюсь сделать эту задачу. ВСЕ ДЕЛАЮ ПО РАЗБОРУ ЧТО ЗА ХРЕНЬ ЕБ*
0
571 / 539 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
31.01.2014, 20:05 15
Dias Aijanov,
Цитата Сообщение от Dias Aijanov Посмотреть сообщение
if(j=i)
Для сравнения нужно использовать два равно
И формулы составлены не верно
0
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;
}
0
33 / 28 / 9
Регистрация: 13.09.2013
Сообщений: 250
31.01.2014, 20:05 17
Dias Aijanov, разбор мутноват
0
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
31.01.2014, 20:06  [ТС] 18
как вставлять код со строками?
0
571 / 539 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
31.01.2014, 20:06 19
Лучший ответ Сообщение было отмечено Dias Aijanov как решение

Решение

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;
}
1
Xopecc
31.01.2014, 20:08     Побочная линия
  #20

Не по теме:

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

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.01.2014, 20:08

Проверить отсортирована ли главная по возрастанию и побочная по убыванию диагонали
Проверить отсортирована ли главная по возростанию если да то проверить побочная по убыванию ли ...

Главная диагональ, побочная и наименьшее из значений элементов побочной диагонали
Дан массив действительных чисел размера nxn (n&lt;=10) а) Найти сумму элементов главной и побочной...

Линия симметрии
Как найти линию симметрии многоугольника, заданного набором вершин? Работаю с OpenCascade,...

Класс линия
Задание: описать класс линии, в котором конструктор ещё и рисует её. (это сделано). Доп. задание:...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru