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

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

04.06.2014, 23:53. Показов 2982. Ответов 30
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть два задания, честно говоря очень сложно представить как их сделать .
помогите люди добрые!
1. Переписать элементы, расположенные на вспомогательной диагонали и под ней в одномерный массив по столбцам.
2. Записать на место отрицательных элементов нули, а на место положительных - единицы
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2014, 23:53
Ответы с готовыми решениями:

В одномерный массив переписать отрицательные элементы элементов, расположенные ниже главной диагонали
Дан массив X(N,M). 1. В одномерный массив переписать отрицательные элементы элементов,...

Переписать элементы матрицы над второстепенной диагональю по столбцам в одномерный массив
Переписать элементы матрицы (7*7) которые находятся над второстепенной диагональю (с верхнего...

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

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

30
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
04.06.2014, 23:57 2
на курсовую это никак не тянет...даже на лабораторную. Даже на контрольную работу в девятом классе не тянет - максимум проверочную!
0
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
05.06.2014, 00:03  [ТС] 3
к сожалению с С++ у меня общение на ВЫ, по-этому прошу руку помощи ибо не получается написать прогу.
0
Землянин
34 / 34 / 16
Регистрация: 15.01.2013
Сообщений: 312
05.06.2014, 00:05 4
Danikor, а Вы вообще пробовали?
0
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];
    }
0
98 / 94 / 16
Регистрация: 16.05.2010
Сообщений: 310
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"
}
Ну и учтите, без ошибок в коде не обойтись разбирайтесь.
Надеюсь правильно понял что Вам необходимо в задании
0
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
05.06.2014, 01:35  [ТС] 7
спасибо! буду разбираться.
0
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
07.06.2014, 17:46  [ТС] 8
спасибо за помощь, но когда я вставил текст проги - то выбивало ошибки и в конечном итоге когда ее запускаешь что выдает окно "закрыть программу или отладить ее" и когда что-нибудь выбираешь то программа закрывается. если же выбираю "закрыть" то остается только выход из программы тобиж я ничего ввести не могу. может я должен что-то изменить в тексте программы?
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
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;   
}
0
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;
}
0
Заблокирован
08.06.2014, 04:33 11
Danikor,
а такое словосочетание "динамический массив" не встречалось в связи с заданием?
0
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
08.06.2014, 14:26  [ТС] 12
нет. не встречалось такое выражение в задании.
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
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;   
}
0
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
08.06.2014, 16:28  [ТС] 14
не говорю что он плох. просто я вот не могу в нем разобраться. мне же нужно объяснять что где и как работает.
вот например я не могу изменить ввод размера матрицы. как не меняю значение N - постоянно ввожу более 20 элементов матрицы. может я не там меняю значения?
0
Заблокирован
09.06.2014, 12:14 15
Цитата Сообщение от Danikor Посмотреть сообщение
вот например я не могу изменить ввод размера матрицы
Повторю еще раз ключевое слово - динамический массив.
И меняйте размерность как угодно.
0
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
09.06.2014, 13:45  [ТС] 16
еще раз повторяю что про динамический массив и не упоминалось ни в задании ни в лекциях.
вторая проблема - программа попросту не работает ( пишу ее в dev c++) или же выбивает такую ошибку:
[Error] ярярш.cpp: No such file or directory
в чем проблема?
уже какой день не могу с этим заданием разобраться
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
09.06.2014, 14:09 17
Цитата Сообщение от Danikor Посмотреть сообщение
уже какой день не могу с этим заданием разобраться
ты по-нормальному опиши, что не так? А-то вторую страницу уже не пойму что обсуждают тут. Тебя Kerry_Jr спросил, чем тот вариант не нравится? У него никаких динамических массивов нет, а значит проблема решена несколько постов назад. Что теперь-то не так?
0
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
09.06.2014, 14:20  [ТС] 18
значит было так . скопировал текст проги . потом скомпилировал - все окей, без ошибок, запустил прогу - и когда я вводил значения - то вводил более 20 раз.
изменил некоторые цифры в тексте - сохранил - опять компилирую - все окей - запускаю - опять та же штука: заполняю матрицу цифрами с каждой строки т.е. я не вижу какие цифры будут в строках или же столбцах. потом уже если есть результат то выводит только те цифры которые изменило, по идее все элементы матрицы но не выводит полученную матрицу.
0
IrineK
09.06.2014, 16:20
  #19

Не по теме:

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

0
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
10.06.2014, 00:08  [ТС] 20
если это показалось грубо , то прошу прощения, просто уже реально время поджимает.
0
10.06.2014, 00:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2014, 00:08
Помогаю со студенческими работами здесь

Переписать в одномерный массив сначала элементы, расположенные на главной, а затем на побочной диагоналях.
Не могу написать программу по условию: Дан массив А (n,n). Переписать в одномерный массив сначала...

Переписать элементы главной диагонали в одномерный массив
Дан двумерный массив A(N, N). Перепишите элементы его главной диагонали в одномерный массив Y(N).

Переписать элементы главной диагонали массива А[6,6] в одномерный массив
Переписати елементи головної діагоналі масиву А(6,6) в одновимірний масив В Переписать элементы...

[Fortran-98] Переписать элементы главной диагонали матрицы А в одномерный массив В
Помогите решить задачу или наведите на её решение, если не трудно :) Текст задачи: ...

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

Переписать положительные элементы главной диагонали, матрицы в одномерный массив Y
Задание: Переписать положительные элементы главной диагонали, матрицы в одномерный массив Y. В...


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

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