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

Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам - C++

Восстановить пароль Регистрация
 
 
Danikor
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
04.06.2014, 23:53     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам #1
есть два задания, честно говоря очень сложно представить как их сделать .
помогите люди добрые!
1. Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам.
2. Записать на место отрицательных элементов нули, а на место положительных - единицы
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2014, 23:53     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам
Посмотрите здесь:

Дан массив A(23). Переписать в новый массив все элементы, расположенные после последнего отрицательного. C++
C++ переписать в одномерный массив ненулевые элементы и найти наибольшее по модулю
C++ Элементы матрицы переписать построчно в одномерный массив
C++ Переписать в одномерный массив элементы матриц А и В, имеющие одинаковые индексы
Одномерный массив (элементы с четными индексами переписать в массив z.в массиве z поменять местами максимальный и минимальный элементы) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
04.06.2014, 23:57     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам #2
на курсовую это никак не тянет...даже на лабораторную. Даже на контрольную работу в девятом классе не тянет - максимум проверочную!
Danikor
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
05.06.2014, 00:03  [ТС]     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам #3
к сожалению с С++ у меня общение на ВЫ, по-этому прошу руку помощи ибо не получается написать прогу.
Pjeroo
Землянин
 Аватар для Pjeroo
33 / 33 / 12
Регистрация: 15.01.2013
Сообщений: 313
05.06.2014, 00:05     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам #4
Danikor, а Вы вообще пробовали?
Danikor
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
05.06.2014, 00:10  [ТС]     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам #5
да. вот на чем я остановился. дальше думал писать условие (сравнивать A[i][j] с нулем и потом уже присваивать новой матрице значение в зависимости от условия "больше = 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
#include <iostream>
#include <conio.h>
#include <math.h>
#include <string.h>
 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main()
 {
    int A[3][3],B[3][3],i,j;
    cout<<"Vvedit mass A:"<<"\n";
    for(i=1;i<=3;i++)
    for(j=1;j<=3;j++)
    {
        cout<<"["<<i<<","<<j<<"]=";
        cin>>A[i][j];
    }
    for(i=1;i<=3;i++)
    for(j=1;j<=3;j++)
    {
        
        cout<<"\t"<<A[i][j];
    }
IchMors
96 / 92 / 4
Регистрация: 16.05.2010
Сообщений: 307
05.06.2014, 01:08     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам #6
Здрасьте!
С++ видел в глаза давно, а компилятор и подавно (писал в блокноте), а посему не судите строго ересь написанную снизу. Да и к тому же, код за Вас писать не собираюсь

Размер и заполнение, как я понимаю - матрицы, это уж без меня. И кстати, а с чего Вы взяли что размер будет фиксированного значения??

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
int = w; //допустим ширина, значение
int = h; //допустим высота, а с const и т.д. разбирайтесь сами :)
 
int A[h][w]; //любая Ваша матрица
 
const int size = w * 2 + 5;
int mass[size]; //конечный одномерный массив
int count = 0; //
 
int iH = h -1; //счетчик по вертикали, покуда подниматься
int iW = 0; //и вот тут становится интересно! а матрица равносторонняя?
 
do
{
    mass[count] = A[h][w];
    if(iH + 1 != h) //проверка, не выходит ли считуемое, за нижнюю границу 
    {
        count++;
        mass[count] = A[h + 1][w]; запись диагонали под вспомогательной
    }
    count++;
    iH--; iW++; // переход на следующую ячейку вспомогательной линии
}while(iH != 0)
//ну вродь в одномерный записали
 
for(unt i = 0; i < count; i++)
{
    if(mass[i])//тут уж не обессудьте, но и при значении "0" будет 0, ибо в условии не указано
        mass[i] = 1; //таки больше "0"
    else
        mass[i] = 0; //таки меньше "1"
}
Ну и учтите, без ошибок в коде не обойтись разбирайтесь.
Надеюсь правильно понял что Вам необходимо в задании
Danikor
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
05.06.2014, 01:35  [ТС]     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам #7
спасибо! буду разбираться.
Danikor
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
07.06.2014, 17:46  [ТС]     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам #8
спасибо за помощь, но когда я вставил текст проги - то выбивало ошибки и в конечном итоге когда ее запускаешь что выдает окно "закрыть программу или отладить ее" и когда что-нибудь выбираешь то программа закрывается. если же выбираю "закрыть" то остается только выход из программы тобиж я ничего ввести не могу. может я должен что-то изменить в тексте программы?
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1863 / 1659 / 578
Регистрация: 14.05.2014
Сообщений: 4,770
Записей в блоге: 1
Завершенные тесты: 5
07.06.2014, 19:05     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам #9
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
37
38
39
#include <iostream>
#include <iomanip>
 
int main()
{
    setlocale(LC_ALL, "");
 
    const int N = 100;//максимальный размер матрицы
    int matrix[N][N], massive[N*(N-1)/2+N], n;
    std::cout << "Введите размер матрицы (не более 100): ";
    std::cin >> n;
    std::cout << "Введите значения матрицы: " << std::endl;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            std::cin >> matrix[i][j];
    std::cout << std::endl;
    int k = 0;
    for (int i = 0; i < n; i++)
    {   
        for (int j = 0; j < n; j++)
        {
            if(j >= n-i-1)
            {
                massive[k] = matrix[j][i];
                std::cout << std::setw(3) << massive[k++] << " ";
            }
        }
    }
    std::cout << std::endl;
    for (int i = 0; i < k; i++)
    {   
        if (massive[i] < 0)
            massive[i] = 0;
        else
            massive[i] = 1;
        std::cout << std::setw(3) << massive[i] << " ";
    }
    return 0;   
}
Danikor
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
07.06.2014, 20:07  [ТС]     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам #10
вот у меня есть прога она вычисляет максимальное значение в каждом рядке , а что нужно писать чтобы с этих значений создать одномерный массив?

вот:
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <iomanip>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main()
{
    // зададим размерность массива с помощью констант
    const int m = 3;
    const int n = 2;
    int A[m][n];  // объявление двумерного массива
    
    // ======  ПЕРВЫЙ ЭТАП =========
    // приглашение пользователю ввести данные в массив
    cout << "Vvedit danni v massiv \n";
    
    // построчный ввод данных в массив 
    for (int i=0; i<m; i++)  // изменение индекса строки
        for (int j=0; j<n; j++) // изменение индекса столбца
        {
            cout << "a[" << i << "][" << j << "] = ";
            cin >> A[i][j];
        }
 
    cout << "\nVuhidnuy massiv \n";
    // выведем массив на экран в виде таблицы
    for (int i=0; i<m; i++)   // изменение индекса строки
    {
        for (int j=0; j<n; j++)  // изменение индекса столбца
            cout << setw(5) << A[i][j] << "  ";
        cout << endl; // переход на следующую строку
    }
 
    // ======  ВТОРОЙ ЭТАП =========
    cout << endl;
    // поиск в строках максимального элемента
    for (int i=0; i<m; i++)    // изменение индекса строки
    {
        int max = A[i][0]; /* предполагаем, что максимальный - 
                    первый элемент строки  */
        // поиск максимального элемента в i-ой строке
        for (int j=0; j<n; j++)  // изменение индекса столбца
        {
            if (A[i][j] > max) max = A[i][j];
        }
        cout << "Maxim element  " << i 
             << "-togo ryadka = " << max << endl;
    }
 
return 0;
}
IrineK
Заблокирован
08.06.2014, 04:33     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам #11
Danikor,
а такое словосочетание "динамический массив" не встречалось в связи с заданием?
Danikor
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
08.06.2014, 14:26  [ТС]     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам #12
нет. не встречалось такое выражение в задании.
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1863 / 1659 / 578
Регистрация: 14.05.2014
Сообщений: 4,770
Записей в блоге: 1
Завершенные тесты: 5
08.06.2014, 14:37     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам #13
Зачем создавать тему снова, если она уже есть? Это раз. И два, а чем этот вариант плох?
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
37
38
39
#include <iostream>
#include <iomanip>
 
int main()
{
    setlocale(LC_ALL, "");
 
    const int N = 100;//максимальный размер матрицы
    int matrix[N][N], massive[N*(N-1)/2+N], n;
    std::cout << "Введите размер матрицы (не более 100): ";
    std::cin >> n;
    std::cout << "Введите значения матрицы: " << std::endl;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            std::cin >> matrix[i][j];
    std::cout << std::endl;
    int k = 0;
    for (int i = 0; i < n; i++)
    {   
        for (int j = 0; j < n; j++)
        {
            if(j >= n-i-1)
            {
                massive[k] = matrix[j][i];
                std::cout << std::setw(3) << massive[k++] << " ";
            }
        }
    }
    std::cout << std::endl;
    for (int i = 0; i < k; i++)
    {   
        if (massive[i] < 0)
            massive[i] = 0;
        else
            massive[i] = 1;
        std::cout << std::setw(3) << massive[i] << " ";
    }
    return 0;   
}
Danikor
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
08.06.2014, 16:28  [ТС]     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам #14
не говорю что он плох. просто я вот не могу в нем разобраться. мне же нужно объяснять что где и как работает.
вот например я не могу изменить ввод размера матрицы. как не меняю значение N - постоянно ввожу более 20 элементов матрицы. может я не там меняю значения?
IrineK
Заблокирован
09.06.2014, 12:14     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам #15
Цитата Сообщение от Danikor Посмотреть сообщение
вот например я не могу изменить ввод размера матрицы
Повторю еще раз ключевое слово - динамический массив.
И меняйте размерность как угодно.
Danikor
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
09.06.2014, 13:45  [ТС]     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам #16
еще раз повторяю что про динамический массив и не упоминалось ни в задании ни в лекциях.
вторая проблема - программа попросту не работает ( пишу ее в dev c++) или же выбивает такую ошибку:
[Error] ярярш.cpp: No such file or directory
в чем проблема?
уже какой день не могу с этим заданием разобраться
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
09.06.2014, 14:09     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам #17
Цитата Сообщение от Danikor Посмотреть сообщение
уже какой день не могу с этим заданием разобраться
ты по-нормальному опиши, что не так? А-то вторую страницу уже не пойму что обсуждают тут. Тебя Kerry_Jr спросил, чем тот вариант не нравится? У него никаких динамических массивов нет, а значит проблема решена несколько постов назад. Что теперь-то не так?
Danikor
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
09.06.2014, 14:20  [ТС]     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам #18
значит было так . скопировал текст проги . потом скомпилировал - все окей, без ошибок, запустил прогу - и когда я вводил значения - то вводил более 20 раз.
изменил некоторые цифры в тексте - сохранил - опять компилирую - все окей - запускаю - опять та же штука: заполняю матрицу цифрами с каждой строки т.е. я не вижу какие цифры будут в строках или же столбцах. потом уже если есть результат то выводит только те цифры которые изменило, по идее все элементы матрицы но не выводит полученную матрицу.
IrineK
09.06.2014, 16:20
  #19

Не по теме:

Цитата Сообщение от Danikor Посмотреть сообщение
не упоминалось ни в задании ни в лекциях
Плохо, чтоб не сказать грубее, но по сути.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2014, 00:08     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам
Еще ссылки по теме:

Элементы, расположеные на главной диагонали, в первых 3 строках выше диагонали и в последних 2 строках ниже диагонали переместить в одномерный массив C++
Поменять местами элементы главной и вспомогательной диагонали C++
C++ Переписать произвольный двумерный массив в одномерный по столбцам

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

Или воспользуйтесь поиском по форуму:
Danikor
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
10.06.2014, 00:08  [ТС]     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам #20
если это показалось грубо , то прошу прощения, просто уже реально время поджимает.
Yandex
Объявления
10.06.2014, 00:08     Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам
Ответ Создать тему
Опции темы

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