0 / 0 / 0
Регистрация: 11.04.2015
Сообщений: 9
1

Переписать из двумерного массива в одномерный

06.05.2015, 19:38. Показов 3312. Ответов 4
Метки нет (Все метки)

Дан массив 3*2.Надо переписать в одномерный массив элементы всех строк,где нет отрицательных элементов.
Помогите пожалуйста,код есть,но он просто вводит цифры,но не выводит положительные элементы,что у меня не так? и скажите пожалуйста,как работают флаги в этой задачи?Да,причем цифр он выводит намного больше,чем надо!!
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 <cstdlib>
#include<iostream>
 
using namespace std;
 
/*
 * 
 */
int main(int argc, char** argv) {
    int array[3][2];
    int a;
    for (int i=0;i<3;i++)
    for (int j=0;j<2;j++)
        cin>>array[i][j];
    
        int flag(0);
        
        for (int i=0;i<3;i++)
        {
        for (int j=0;j<2;j++)
        if (array[i][j]<0)
        {flag=1;
        }
        if (flag==0)
        {
            a=a+1;
        }
        flag=0;
        }
        int res[a];
        int k(0);
        for (int i=0;i<3;i++)
        
        {
        for (int j=0;j<2;j++)
        if (mas[i][j]<0)
        {
            flag=1;
        }
        if (flag==0)
        {
            res[k];
            k=k+1;
        }
        flag=0;
        }
        cout<<array;
    return 0;
 
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2015, 19:38
Ответы с готовыми решениями:

Переписать элементы двумерного массива удовлетворяющие заданным условиям в одномерный массив
Пожалуйста помогите написать эту программу Переписать элементы двумерного массива в одномерный...

Переписать символы двумерного массива в одномерный
Имеется символьная строка, записанная в двумерном массиве. Нужно с помощью функции переписать ее в...

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

Переписать элементы двумерного массива 3х3 в одномерный
переписать элементы двумерного массива 3х3 в одномерный Очень-очень жду! Заранее спасибо!

4
2753 / 1908 / 568
Регистрация: 05.06.2014
Сообщений: 5,559
06.05.2015, 19:41 2
Цитата Сообщение от Strin Посмотреть сообщение
a=a+1;
Начнем с того что a нигде не инициализировано, а компилятор должен был матюкнуться на эту строчку.
int flag(0);, кстати, поменять на bool flag=false;.
Цитата Сообщение от Strin Посмотреть сообщение
int res[a];
Это корректно для C, но некорректно для C++ (хотя, некоторые компиляторы могут проглотить). В плюсах надо или использовать std::vector, или жестко задавать размер массива на стадии компиляции.
1
3 / 3 / 8
Регистрация: 29.12.2014
Сообщений: 29
06.05.2015, 22:12 3
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    const int N = 3;
    const int M = 2;
 
    int array[N][M];
    int array2[N*M] = { 0 };
 
    cout << "Enter array elements:" << endl;
 
    //entering elements
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            cout << "A[" << i << "]" << "[" << j << "]:  ";
            cin >> array[i][j];
        }   
    }
 
    //analyse non-negative values
    int index = 0;
    for (int i = 0; i < N; i++)
    { 
        bool isNegative = false;
 
        for (int j = 0; j < M; j++)
        {
            if (array[i][j] < 0)
            {
                isNegative = true;
                break;
            }           
        }
 
        if (!isNegative)
        { 
            for (int j = 0; j < M; j++)
            {
                array2[index] = array[i][j];
                index++;
            }               
        }           
    }
 
    //print
    cout << "Array:" << endl;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            cout << setw(4) << array[i][j] << "  ";
            if (j == M - 1)
                cout << endl;
        }
    }
    cout << endl;
 
    cout << "Array2:" << endl;
    for (int i = 0; i < N*M; i++)
    {
        cout << setw(4) << array2[i] << "  ";
    }
 
    cout << endl;
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 11.04.2015
Сообщений: 9
13.05.2015, 16:08  [ТС] 4
Cпасибо всем!))Я поняла, в чем ошибки)

Добавлено через 27 минут
Цитата Сообщение от Brandi Посмотреть сообщение
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
    //analyse non-negative values
    int index = 0;
    for (int i = 0; i < N; i++)
    { 
        bool isNegative = false;
 
        for (int j = 0; j < M; j++)
        {
            if (array[i][j] < 0)
            {
                isNegative = true;
                break;
            }           
        }
 
        if (!isNegative)
        { 
            for (int j = 0; j < M; j++)
            {
                array2[index] = array[i][j];
                index++;
            }               
        }           
    }
Спасибо огромное!А вы можете подробнее написать,что делает этот фрагмент?
0
3 / 3 / 8
Регистрация: 29.12.2014
Сообщений: 29
13.05.2015, 20:42 5
Цитата Сообщение от Strin Посмотреть сообщение
А вы можете подробнее написать,что делает этот фрагмент?
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
    //анализируем наличие отрицательных элементов в каждой строке
    int index = 0;
    for (int i = 0; i < N; i++)//цикл по каждой строке
    {
        //здесь храним инфу, есть ли в i-той строке отриц.элемент. 
        //Сначала заведомо считаем, что отрицат.элементов нет (false)
        bool isNegative = false;  
 
        for (int j = 0; j < M; j++)//проходимся в цикле по столбцам
        {
            if (array[i][j] < 0) //если элемент отрицат.
            {
                isNegative = true; //выставляем, что отриц.элемент есть (true)
                break; //этот оператор осущес-ет немедленный выход из цикла. Раз нашли один отриц.элемент в этой строке, смысла искать дальше нет.
            }
        }
 
        if (!isNegative) //если отрицат.элементов не было в текущей i-той строке, то заполняет одномерный массив элементами i-той строки
        {
            for (int j = 0; j < M; j++)
            {
                array2[index] = array[i][j];
                index++;
            }
        }
    }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2015, 20:42
Помогаю со студенческими работами здесь

С помощью процедуры переписать четные элементы двумерного массива в одномерный
Переписать четные элементы двумерного массива в одномерный. Оформить процедурой. Помогите найти...

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

Запись двумерного массива в одномерный
Здравствуйте, вот решаю задачу. ((Ввести матрицу В(N,N). Определить номера столбцов, все...

Получить из двумерного массива одномерный
Написать многострочную программу для получения из двумерного массива А(4,5) одномерного

Преобразование из двумерного массива в одномерный
Всем доброго. У меня есть &quot;таблица&quot; ячеек. При клике на ячейку я могу получить ее координаты в...

Перевести из двумерного массива в одномерный
Здравствуйте, у меня есть вопрос. Нужно данный двумерный массив перевести в одномерный...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru