Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,268
1

Функция: получение векторов (строк и столбцов), куда будут записываться индексы нулевых элементов матрицы

25.04.2016, 14:38. Показов 864. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго дня!

Вы могли бы мне помочь объяснить чего они хотят от этого задания, что им надо только более человечным языком, ну или на скидку, если не сложно накинуть код кто что сможет)))

Задача следующая: Определить интерфейс (тип, имя, входные и выходные параметры) функции.
Написать основной модуль и функцию (по вариантам). Протестировать работу программы.
Вар №14 Получение векторов (строк и столбцов), куда будут записываться индексы нулевых элементов матрицы.

Заранее спасибо

Добавлено через 40 минут
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2016, 14:38
Ответы с готовыми решениями:

Функция суммирования элементов матрицы с заданными номерами строк и столбцов
Описать функцию,что вычисляет сумму тех элементов матрицы А(нхн), номера строк и столбцов которой...

Удаление нулевых строк/ столбцов из матрицы
Добрый день! помогите написать код, желательно на С Тема: многомерные массивы Выделить память...

Подсчитать количество нулевых элементов матрицы и напечатать их индексы
определить номера строки и столбца максимального простого числа прямоугольной матрицы A(n,m)...

Подсчитать количество нулевых элементов матрицы и напечатать их индексы
Определить номера строки и столбца максимального простого числа прямоугольной матрицы A(n, m)....

15
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
25.04.2016, 14:50 2
Цитата Сообщение от ShmelVG Посмотреть сообщение
Определить интерфейс (тип, имя, входные и выходные параметры) функции.
интерфейс == прототип типа такого
C++
1
int foo(const char a);
Цитата Сообщение от ShmelVG Посмотреть сообщение
Написать основной модуль и функцию
основной модуль == main.cpp
функцию == реализацию типа такой
C++
1
2
3
4
5
int foo(const char a)
{
  std::cout << a << std::endl;
  return 0;
}
Цитата Сообщение от ShmelVG Посмотреть сообщение
Протестировать работу программы.
Означает
осуществить хотя бы один вызов написанной функции из главной функции с конкретными данными в качестве аргумента
.
0
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,268
25.04.2016, 14:56  [ТС] 3
Спасибо, а вот с этим что делать:
"Вар №14 Получение векторов (строк и столбцов), куда будут записываться индексы нулевых элементов матрицы."
Не пойму им надо получить вектора с новой строки одинаковые, или им матрицу надо с нулями?))
0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
25.04.2016, 15:01 4
ShmelVG, имхо это значит следующее: у вас есть матрица, в которой есть нулевые элементы. Они обладают двумя индексами: строки и столбца. Вот вам и надо получить два вектора (строк и столбцов) в которых будут записаны индексы нулевых элементов строки и столбцов соответственно. Например:
Код
0 1 2 3
1 2 3 4
1 2 0 5
1 0 2 3
-->
V1 (row indexes): [0, 2, 3]
V2 (col indexes): [0, 2, 1]
0
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,268
25.04.2016, 15:32  [ТС] 5
Цитата Сообщение от HighPredator Посмотреть сообщение
V1 (row indexes): [0, 2, 3]
V2 (col indexes): [0, 2, 1]
А почему размерность 3 указывается, ведь в матрице 4 получается..
0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
25.04.2016, 15:36 6
Цитата Сообщение от ShmelVG Посмотреть сообщение
А почему размерность 3 указывается, ведь в матрице 4 получается..
А сколько нулевых элементов в приведенной матрице?
0
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,268
25.04.2016, 15:39  [ТС] 7
3, я просто подумал что им в матрице всем нули надо , а потом я их раскидаю отдельно вектор на строку, отдельно на столбец, размерность задам произвольную(ибо нет в дано) и заполню всё нулями , но тогда первую часть я не могу понять как применить к задаче...
Цитата Сообщение от ShmelVG Посмотреть сообщение
Определить интерфейс (тип, имя, входные и выходные параметры) функции.
0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
25.04.2016, 15:55 8
Цитата Сообщение от ShmelVG Посмотреть сообщение
могу понять как применить к задаче
Вы думать не хотите. Вам выше написано, как эту фразу трактовать надо. Также вам известно, что должно быть на входе (т.е. что дано), плюс, что должно быть на выходе. Все у вас есть.
0
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,268
27.04.2016, 09:47  [ТС] 9
Я вообщем подумал и понял что я ни фига не понял, если кто сможет помочь, подскажите!!

Добавлено через 20 часов 58 минут
Помогите решить задание!!!
0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
27.04.2016, 10:10 10
ShmelVG, вам все уже разжевано. В чем трудности?
0
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,268
27.04.2016, 14:04  [ТС] 11
Я вас понял, помогли бы...

Вот я состряпал следующее:
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
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Rus");
    int day;
    cout<<"\nОпределите интерфейс: \
            \n 1-Тип\
            \n 2-Имя \
            \n 3-Входные параметры \
            \n 4-Выходные параметры \
            \n ----> "; cin>>day; 
    switch (day)
    {
    case 1: cout<<"Выбран Тип\n";
        break;
    case 2: cout<<"Выбрано Имя\n";
        break;
    case 3: cout<<"Выбраны Входные параметры\n";
        break;
    case 4: cout<<"Выбраны Выходные параметры\n";
        break;
    default:
        cout<<"Не верно определён интерфейс\n";
    }
    int i, j;
    int N, M;
    cout<<"Введите размерность по строкам -> ";  cin>>N;
    cout<<"Введите размерность по столбцам ->"; cin>>M;
    float **mas1;
    mas1 = new float *[N];
    for(i=0; i<N; i++) mas1[i] = new float[M];
    for(i=0; i<N; i++)
    {
    for(j=0; j<M; j++) mas1[i][j] = (float)(0);
    }
    for(i=0; i<N; i++)
    {
        for(j=0; j<M; j++) 
        cout<<" "<<mas1[i][j];
        cout<<endl;
    }
    for(i=0; i<N; i++)  delete[] mas1[i]; //удаляем массив шаг 1
    delete[] mas1; //шаг 2
return 0;
}
Не могу понять следующее: как выполнить эту часть задания"Получение векторов (строк и столбцов), куда будут записываться индексы нулевых элементов матрицы."
0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
27.04.2016, 15:01 12
C++
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
#include <iostream>
#include <iterator>
#include <vector>
 
const int n = 5;
 
// function prototype, e.g. interface
std::pair<std::vector<size_t>, std::vector<size_t>> GetIndexes(int arr[][n], const size_t rowCount, const size_t colCount, const int val);
 
int main()
{
  // test data
  int a[n][n] = {
    {1, 2, 3, 4, 5},
    {0, 1, 2, 3, 4},
    {1, 2, 3, 4, 0},
    {1, 0, 2, 3, 4},
    {0, 0, 5, 6, 7}
  };
 
  std::pair<std::vector<size_t>, std::vector<size_t>> indexes = GetIndexes(a, n, n, 0);
 
  // results
  std::cout << "Row indexes vector: ";
  std::copy(indexes.first.begin(), indexes.first.end(), std::ostream_iterator<size_t>(std::cout, " "));
  std::cout << std::endl;
 
  std::cout << "Col indexes vector: ";
  std::copy(indexes.second.begin(), indexes.second.end(), std::ostream_iterator<size_t>(std::cout, " "));
  std::cout << std::endl;
 
  return 0;
}
 
// definition
std::pair<std::vector<size_t>, std::vector<size_t>> GetIndexes(int arr[][n], const size_t rowCount, const size_t colCount, const int val)
{
  std::vector<size_t> rowIndexes;
  std::vector<size_t> colIndexes;
 
  for (size_t i = 0; i < rowCount; i++)
  {
    for (size_t j = 0; j < colCount; j++)
    {
      if (arr[i][j] == val)
      {
        rowIndexes.push_back(i);
        colIndexes.push_back(j);
      }
    }
  }
 
  return std::make_pair<std::vector<size_t>, std::vector<size_t>>(rowIndexes, colIndexes);
}
Hardcore:
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
73
74
75
76
77
78
79
80
#include <iostream>
 
const int n = 5;
 
size_t GetCount(int arr[][n], const size_t rowCount, const size_t colCount, const int val)
{
  size_t count = 0;
 
  for (size_t i = 0; i < rowCount; i++)
  {
    for (size_t j = 0; j < colCount; j++)
    {
      if (arr[i][j] == val) count++;
    }
  }
 
  return count;
}
 
void GetIndexes(int arr[][n], const size_t rowCount, const size_t colCount, const int val, size_t rowIndexes[], size_t colIndexes[])
{
  size_t k = 0;
 
  for (size_t i = 0; i < rowCount; i++)
  {
    for (size_t j = 0; j < colCount; j++)
    {
      if (arr[i][j] == val)
      {
        rowIndexes[k] = i;
        colIndexes[k] = j;
        k++;
      }
    }
  }
}
 
int main()
{
  // test data
  int a[n][n] = {
    {1, 2, 3, 4, 5},
    {0, 1, 2, 3, 4},
    {1, 2, 3, 4, 0},
    {1, 0, 2, 3, 4},
    {0, 0, 5, 6, 7}
  };
 
  size_t* cols = nullptr;
  size_t* rows = nullptr;
 
  size_t count = GetCount(a, n, n, 0);
  
  if (count > 0)
  {
    cols = new size_t[count];
    rows = new size_t[count];
 
    GetIndexes(a, n, n, 0, rows, cols);
 
    std::cout << "Row indexes vector: ";
    for (size_t i = 0; i < count; i++)
    {
      std::cout << rows[i] << " ";
    }
    std::cout << std::endl;
 
    std::cout << "Col indexes vector: ";
    for (size_t i = 0; i < count; i++)
    {
      std::cout << cols[i] << " ";
    }
    std::cout << std::endl;
 
    delete[] rows;
    delete[] cols;
  }
 
  return 0;
}
0
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,268
27.04.2016, 15:25  [ТС] 13
Первый код не откомпелировался(вроде шаблоны требует), на счёт второго, то слишком жёстко для меня, а как-то можно упростить?))...Как вообще до этого дошли?КАК??)))))
0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
27.04.2016, 15:44 14
Цитата Сообщение от ShmelVG Посмотреть сообщение
Первый код не откомпелировался(вроде шаблоны требует)
Первый код мог не откомпилироваться только если у вас выставлен 11 стандарт или старше.
Цитата Сообщение от ShmelVG Посмотреть сообщение
слишком жёстко для меня
Для вас два прохода по матрице и один счетчик это "жестко"? Даже комментировать не буду.
0
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,268
27.04.2016, 16:02  [ТС] 15
Это же заочка первый курс, чего вы ожидали))

Добавлено через 10 минут
Тем более только учимся...Вспомни себя на начале, не думаю что код писал килограммами...
0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
27.04.2016, 16:19 16
Короче так: смысл формулировки задачи вам разжеван, раз. Два рабочих варианта решения вам предоставлены, два. Разбирайтесь. На этом вопрос по сути исчерпан.
0
27.04.2016, 16:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2016, 16:19
Помогаю со студенческими работами здесь

Получить массив, где будут храниться индексы строк матрицы, в которых есть равные элементы
2. Дан прямоугольный массив A. Получить линейный массив B, в котором будут храниться номера тех...

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

Определить номера столбцов матрицы не содержащих нулевых элементов
Задание: Определить номера столбцов без нулевых элементов. Вывести на экран исходный массив и...

Составить вектор из количества нулевых элементов столбцов матрицы
Составить вектор из колличества нулевых элементов столбцов матрицы А{5x6} (-1; 0; 1;-5; 3; 5) (...


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

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