Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.66/29: Рейтинг темы: голосов - 29, средняя оценка - 4.66
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 10

Сформировать массив С из элементов четных столбцов и массив В из элементов нечетных строк массива А

09.11.2012, 22:58. Показов 5588. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана матрица А= 4.8, 3.2, 9.1, 5
5.1, 6, 1.4, -1
4.3, 1.15, 2.8, 3.14 в которой m=3 n=4.
Необходимо сформировать массив С из элементов четных столбцов и массив В из элементов нечетных строк массива А.
Я сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int z=0;
    double c [3] [4] = {{ 4.8, 3.2, 9.1, 5},
                        {5.1, 6, 1.4, -1},
                        {4.3, 1.15, 2.8, 3.14}};
 
 
    double a[8]; double b[6];
 
for (int i=0; i<4; i++) a[i]=c[0][i];
for (int i=4; i<8; i++) a[i]=c[2][i-4];
 
for (int i=0; i<3; i++) b[i]=c[i][1];
for (int i=3; i<6; i++) b[i]=c[i-3][3];
 
for (int i=0; i<8; i++) cout<<a[i]<<" ";
 
 
cout<<"\n\n\n\n\n\n\n";
 
for (int i=0; i<6; i++) cout<<b[i]<<" ";
cout<<"\n";
Но мне нужно сделать универсальную программу, то есть я не должен задавать номера строк и столбцов сам, а программа сама должна определять эти номера, мол массив мог бы быть и 100х100 и я не буду задавать номера вручную, можно кажется как то сделать через if\else, только не до конца понимаю как именно. Подскажите пожалуйста как)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.11.2012, 22:58
Ответы с готовыми решениями:

Сформировать массив А из четных элементов исходного массива, а массив В - из нечетных
Элементы массива Т формируются по правилу: Т(к)=15к-12. Сформировать массив А из четных элементов массива Т, а массив В- из нечетных(к=20)

Сформировать массив состоящий из четных и нечетных элементов помещеных в порядке следования исходного массива
Создать массив с размерностью 200 элементов со значениями от 0 до 100. Требуется сформировать массив А в который помещены в порядке...

Массив: Сформировать одномерный массив, содержащий количество отрицательных элементов нечетных столбцов
Обшарил форум, но решения для данной задачи так и не нашел. Подскажите, каким способом перебрать двумерный массив? ЗАДАЧА: Сформировать...

21
 Аватар для strange_man
13 / 13 / 2
Регистрация: 17.05.2012
Сообщений: 121
09.11.2012, 23:16
C++
1
2
3
4
5
6
7
8
cout << "Введите размерность матрицы: ";
cin >> m >> n;
 
cout << "Введите элементы: " << endl;
 
for (int i = 0; i < m; i++)
    for (int j = 0; j < n; j++)
        cin >> c[i][j];
Так что ли?
0
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 10
09.11.2012, 23:29  [ТС]
Цитата Сообщение от strange_man Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
cout << "Введите размерность матрицы: ";
cin >> m >> n;
 
cout << "Введите элементы: " << endl;
 
for (int i = 0; i < m; i++)
    for (int j = 0; j < n; j++)
        cin >> c[i][j];
Так что ли?
Матрицу и размерность я должен прописать в условии.
Просто программа должна сама определить нечетные строки и столбцы и записать их в массив, а я же просто переписал матрицу задав номера строк и столбцов.
0
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
09.11.2012, 23:35
C++
1
2
3
4
for (int j = 0; j < column_size; j +=2)
   for (int i = 0; i < row_size; ++i)
      std::cout << c[i][j] << std::endl;
      //так проходим по всем четным столбцам
1
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 10
09.11.2012, 23:44  [ТС]
Цитата Сообщение от I.M. Посмотреть сообщение
C++
1
2
3
4
for (int j = 0; j < column_size; j +=2)
   for (int i = 0; i < row_size; ++i)
      std::cout << c[i][j] << std::endl;
      //так проходим по всем четным столбцам
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
 
 
int main ()
{
    setlocale (LC_ALL, "rus");
    int const m=3, n=4;
    double c [m] [n] = {{ 4.8, 3.2, 9.1, 5},
                        {5.1, 6, 1.4, -1},
                        {4.3, 1.15, 2.8, 3.14}};
    int const x=n*((m/2)+1); //нечетные строки
    int const y=m*(n/2); //четные строки
 
 
    double a[x]; double b[y];
 
for (int i=0; i<n; i++) a[i]=c[0][i];
for (int i=n; i<x; i++) a[i]=c[2][i-n];
 
for (int i = 0; i < 4; i+=2) b[i]=c[i][1];
 for (int i = 0; i < 3; i++) b[i]=c[i-m][m];
cout<<"Массив из элементов нечётных строк"<<endl;
for (int i=0; i<x; i++) cout<<a[i]<<" ";
cout<<"\n\n\n\n\n\n\n";
cout<<"Массив из элементов чётных столбцов"<<endl;
for (int i=0; i<y; i++) cout<<b[i]<<" ";
cout<<"\n";
    
    system ("pause");
    
    return 0;
}
так что-ли?)
не получается у меня что-то..
не могли бы вы написать как это будет в коде выглядет полностью, просто так не особо понятно
0
4 / 4 / 0
Регистрация: 23.09.2012
Сообщений: 83
09.11.2012, 23:49
вместо
C++
1
2
for (int i=0; i<4; i++) a[i]=c[0][i];
for (int i=4; i<8; i++) a[i]=c[2][i-4];
напишите
C++
1
2
3
4
5
int k=0;
for (int i=0; i<m; i++) if (i % 2 == 1 ) {
      for (int j=0; j<n;j++)a[k+j]=c[i][j];
      k=k+n;
}
вроде это, если правильно понял
0
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 10
09.11.2012, 23:53  [ТС]
Цитата Сообщение от 1ropb Посмотреть сообщение
вместо
C++
1
2
for (int i=0; i<4; i++) a[i]=c[0][i];
for (int i=4; i<8; i++) a[i]=c[2][i-4];
напишите
C++
1
2
3
4
5
int k=0;
for (int i=0; i<m; i++) if (i % 2 == 1 ) {
      for (int j=0; j<n;j++)a[k+j]=c[i][j];
      k=k+n;
}
вроде это, если правильно понял
я должен получить одномерный массив
и если просто заменяю - пишет несуществующие числа.
0
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
09.11.2012, 23:56
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
#include <array>
#include <iostream>
 
int main()
{
    std::array<std::array<double, 4>, 3> matrix = 
    {
        4.8, 3.2,  9.1,  5.0,
        5.1, 6.0,  1.4, -1,
        4.3, 1.15, 2.8,  3.14
    };
 
    std::cout << "C array : ";
    for (size_t j = 0; j < matrix[0].size()/*4*/; j +=2)
        for (size_t i = 0; i < matrix.size() /*3*/; ++i)
            std::cout << matrix[i][j] << " ";
    std::cout << std::endl;
 
    std::cout << "B array : ";
    for (size_t i = 1; i < matrix.size() /*3*/; i += 2)
        for (size_t j = 0; j < matrix[0].size()/*4*/; ++j)
            std::cout << matrix[i][j] << " ";
    std::cout << std::endl;
    system("pause");
    return 0;
}
Добавлено через 58 секунд
Собственно, я тут использую std::array. Вы можете продолжать использовать обычный массив.
И данные я вывожу в консоль, а вам их надо сохранять в какой-то массив
1
4 / 4 / 0
Регистрация: 23.09.2012
Сообщений: 83
10.11.2012, 00:02
а вы не присвоили m и n значения?
тогда в начале еще напишите
C++
1
2
int m=3;
int n=4;
0
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 10
10.11.2012, 00:08  [ТС]
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
 
 
int main ()
{
    setlocale (LC_ALL, "rus");
    int const m=3, n=4;
    double c [m] [n] = {{ 4.8, 3.2, 9.1, 5},
                        {5.1, 6, 1.4, -1},
                        {4.3, 1.15, 2.8, 3.14}};
    int const x=n*((m/2)+1); //нечетные строки
    int const y=m*(n/2); //четные строки
 
 
    double a[x]; double b[y];
 
for (int j = 1; j < n; j +=2)
   for (int i = 0; i < m; ++i)
      std::cout << c[i][j] << std::endl; cout<<"Массив из элементов чётных столбцов"<<endl;
 
for (int i=0; i<m; i++) b[i]=c[i][1];
for (int i=m; i<y; i++) b[i]=c[i-m][m];
 
for (int j = 0; j < n; ++j )
   for (int i = 0; i < m; i+=2)
      std::cout << c[i][j] << std::endl;
cout<<"Массив из элементов чётных столбцов"<<endl;
 
 
    
    system ("pause");
    
    return 0;
}
в итоге сделал так)
Всем спасибо)

Добавлено через 3 минуты
Обьясните пожалуйста только, что такое std::cout
и можно ли из этого сделать, чтоб матрица в итоге была одномерная?)
0
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
10.11.2012, 00:11
В смысле, чтобы все-таки выполнить задание и сделать одномерные массивы В и С? Да легко)
вместо std::cout << c[i][j];
пишите B[k] = c[i][j]; не забудьте перед циклом сделать k = 0; а внутри увеличивать k на 1
1
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 10
10.11.2012, 00:26  [ТС]
Цитата Сообщение от I.M. Посмотреть сообщение
В смысле, чтобы все-таки выполнить задание и сделать одномерные массивы В и С? Да легко)
вместо std::cout << c[i][j];
пишите B[k] = c[i][j]; не забудьте перед циклом сделать k = 0; а внутри увеличивать k на 1
C++
1
2
3
4
5
6
int k=0;
    for (int j = 1; j < n; j +=2)
    for (int i = 0; i < m; ++i)
       B[k]=c[i][j];
      cout << B[k] << endl;
      cout<<"Массив из элементов чётных столбцов"<<endl;
Что не так сделал опять?
0
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
10.11.2012, 00:29
Во-первых, не вижу k++;
Во-вторых, не вижу, где и как объявлен массив В
В-третьих, нужны {} в цикле
1
4 / 4 / 0
Регистрация: 23.09.2012
Сообщений: 83
10.11.2012, 00:32
Цитата Сообщение от OldUnion Посмотреть сообщение
C++
1
    for (int i = 0; i < m; ++i)
Что не так сделал опять?
i++ правильнее
0
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
10.11.2012, 00:32
1ropb, нет. По результату равносильно (в этой ситуации)
1
4 / 4 / 0
Регистрация: 23.09.2012
Сообщений: 83
10.11.2012, 00:35
ну это уже к оформлению тогда
0
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 10
10.11.2012, 00:37  [ТС]
Цитата Сообщение от I.M. Посмотреть сообщение
Во-первых, не вижу k++;
Во-вторых, не вижу, где и как объявлен массив В
В-третьих, нужны {} в цикле
C++
1
2
3
4
5
6
7
8
9
10
int k=0;
    double B[k];
    {
    for (int k=0; k<100; k++)
    for (int j = 1; j < n; j +=2)
    for (int i = 0; i < m; ++i)
    }
        B[k]=c[i][j];
      cout << B[k] << endl;
      cout<<"Массив из элементов чётных столбцов"<<endl;
что-то я не особо как-то сейчас понимаю...
0
4 / 4 / 0
Регистрация: 23.09.2012
Сообщений: 83
10.11.2012, 00:40
C++
1
2
3
4
5
6
7
int k=0;
    for (int j = 1; j < n; j +=2)
    for (int i = 0; i < m; ++i){
       B[k]=c[i][j];
       k++;}
      cout << B[k] << endl;
      cout<<"Массив из элементов чётных столбцов"<<endl;
0
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
10.11.2012, 00:40
1ropb, ну в общем, я понял вашу мысль, что ++i и i++ ведет себя по-разному. Но к данному циклу это замечание неуместно.

C++
1
2
3
4
5
6
7
8
9
10
int k=0;
double B[k];//надо массив с нормальным размером задать, а не с нулевым. Посчитайте, сколько должно быть и запишите это вместо k
    for (int j = 1; j < n; j +=2)
    for (int i = 0; i < m; ++i)
    {
        B[k]=c[i][j];
      cout << B[k] << endl;
k++;
}
      cout<<"Массив из элементов чётных столбцов"<<endl;
1
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 10
10.11.2012, 00:52  [ТС]
I.M.,
C++
1
2
3
4
5
6
7
8
9
10
int k=0;
    double B[6];//k=6,  k=m*(n/2); //четные столбцы
    for (int j = 1; j < n; j +=2)
    for (int i = 0; i < m; ++i)
    {
      B[6]=c[i][j];
      cout << B[k] << endl;
      ++k;
}
      cout<<"Массив из элементов чётных столбцов"<<endl;
warning C4789: конечная область для копирования памяти слишком мала
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.11.2012, 00:52
Помогаю со студенческими работами здесь

Сформировать одномерный массив, состоящий из максимальных элементов четных столбцов матрицы
Дана целочисленная матрица 10x12. Найти сумму элементов в заштрихованной области. Сформировать одномерный массив, состоящий из максимальных...

Сформировать массив из сумм четных элементов строк матрицы
Помогите с задачей, пожалуйста. Составить подпрограмму формирующую одномерный массив из сумм четных(по номеру) элементов в каждой строке...

Найти сумму элементов четных строк и произведение элементов нечетных строк массива
дан двумерный массив динамический массив. Найти сумму элементов четных строк и произведение элементов нечетных строк. помогите...

Сформировать массив из нечетных элементов введенного массива
вводится одномерный массив из целых чисел ,состоящих из n элементов. Требуется сформировать новый одномерный массив, состоящих из нечетных...

Сформировать одномерный массив, состоящий из произведений отрицательных элементов четных строк матрицы
Помогите, я сделала программу на делфи - работает, переделала на си не работает, помогите что бы выводилось.. ЗАДАНИЕ: Сформировать...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru