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

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

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

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

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

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

Переписать произвольный двумерный массив в одномерный по столбцам - C++
-Переписать произвольный двумерный массив в одномерный по столбцам.

Дан массив A(23). Переписать в новый массив все элементы, расположенные после последнего отрицательного. - C++
Задача Дан массив A(23). Переписать в новый массив все элементы, расположенные после последнего отрицательного. В новом массиве...

Одномерный массив (элементы с четными индексами переписать в массив z.в массиве z поменять местами максимальный и минимальный элементы) - C++
задан массив x(n).элементы с четными индексами переписать в массив z.в массиве z поменять местами максимальный и минимальный...

Элементы, расположеные на главной диагонали, в первых 3 строках выше диагонали и в последних 2 строках ниже диагонали переместить в одномерный массив - C++
Нужно элементы расположены на главной диагонали, в первых 3 строках выше диагонали и в последних 2 строках ниже диагонали переместить в...

Поменять местами элементы главной и вспомогательной диагонали - C++
Проверьте, пожалуйста на правильность! Задание: поменять местами элементы главной и вспомогательной диагонали! for (int i = 0; i <...

Элементы матрицы переписать построчно в одномерный массив - C++
Задача - элементы заданой матрицы A(N,N) переписовать построчно в одномерный массив до тех пор, пока не встретится нулевой элемент.(в С++)

30
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
04.06.2014, 23:57 #2
на курсовую это никак не тянет...даже на лабораторную. Даже на контрольную работу в девятом классе не тянет - максимум проверочную!
0
Danikor
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
05.06.2014, 00:03  [ТС] #3
к сожалению с С++ у меня общение на ВЫ, по-этому прошу руку помощи ибо не получается написать прогу.
0
Pjeroo
Землянин
34 / 34 / 12
Регистрация: 15.01.2013
Сообщений: 313
05.06.2014, 00:05 #4
Danikor, а Вы вообще пробовали?
0
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];
    }
0
IchMors
97 / 93 / 4
Регистрация: 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
Danikor
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
05.06.2014, 01:35  [ТС] #7
спасибо! буду разбираться.
0
Danikor
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
07.06.2014, 17:46  [ТС] #8
спасибо за помощь, но когда я вставил текст проги - то выбивало ошибки и в конечном итоге когда ее запускаешь что выдает окно "закрыть программу или отладить ее" и когда что-нибудь выбираешь то программа закрывается. если же выбираю "закрыть" то остается только выход из программы тобиж я ничего ввести не могу. может я должен что-то изменить в тексте программы?
0
Kerry_Jr
Модератор
Эксперт PHP
2206 / 2002 / 701
Регистрация: 14.05.2014
Сообщений: 5,865
Записей в блоге: 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;   
}
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;
}
0
IrineK
Заблокирован
08.06.2014, 04:33 #11
Danikor,
а такое словосочетание "динамический массив" не встречалось в связи с заданием?
0
Danikor
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
08.06.2014, 14:26  [ТС] #12
нет. не встречалось такое выражение в задании.
0
Kerry_Jr
Модератор
Эксперт PHP
2206 / 2002 / 701
Регистрация: 14.05.2014
Сообщений: 5,865
Записей в блоге: 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;   
}
0
Danikor
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
08.06.2014, 16:28  [ТС] #14
не говорю что он плох. просто я вот не могу в нем разобраться. мне же нужно объяснять что где и как работает.
вот например я не могу изменить ввод размера матрицы. как не меняю значение N - постоянно ввожу более 20 элементов матрицы. может я не там меняю значения?
0
IrineK
Заблокирован
09.06.2014, 12:14 #15
Цитата Сообщение от Danikor Посмотреть сообщение
вот например я не могу изменить ввод размера матрицы
Повторю еще раз ключевое слово - динамический массив.
И меняйте размерность как угодно.
0
09.06.2014, 12:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2014, 12:14
Привет! Вот еще темы с ответами:

Переписать в одномерный массив элементы матриц А и В, имеющие одинаковые индексы - C++
Помогите. Вот задачка: Заданные две квадратные матрицы одинакового размера - А и В. Переписать в одномерный массив R те элементы...

переписать в одномерный массив ненулевые элементы и найти наибольшее по модулю - C++
Из матрицы В(4,4) переписать в одномерный массив С ненулевые элементы и найти наибольшее из них по модулю Не знаю как переисывать из...

Переписать в одномерный массив элементы матриц А и В, имеющие одинаковые индексы - C++
Помогите. Заданные две квадратные матрицы одинакового размера - А и В. Переписать в одномерный массив R те элементы матриц А и В, имеющие...

Переписать все элементы з матрицы С в одномерный массив F, отсортировать его по возрастанию - C++
В мастрици С количество столбик в каждой строке случайным натуральным числом с интервала (a; b) но общее количество элементов ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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