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

Найти наименьшие элементы матрицы - C++

Восстановить пароль Регистрация
 
Lokoss
0 / 0 / 0
Регистрация: 23.07.2012
Сообщений: 15
25.07.2012, 21:00     Найти наименьшие элементы матрицы #1
Всем привет! Ребят помогите пожалуйста с заданием Найти наименьшие элементы в каждой строке матрицы и номер максимального с них. Саму матрицу я задал, а дальше не знаю, перепробовал кучу вариантов, ничто не подходит. Может как-то по методу пузырька? Заранее огромное спасибо!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
#include <conio.h>
void main()
{
    int i, j,;
    int matr[4][3], mas[4];
    cout<<"Input matr\n";
 
    for(i=0;i<4;i++)
    for(j=0;j<3;j++) cin>>matr[4][3];
     
 
        
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2012, 21:00     Найти наименьшие элементы матрицы
Посмотрите здесь:

В квадратной матрице определить наименьшие элементы каждого рядка C++
C++ Наибольший и наименьшие значения в заштихованной части матрицы
C++ Разукрасить разними цветами самые большие и самые наименьшие элементы массива
C++ Работа с матрицами (Получить элементы квадратной матрицы, где элементы матрицы зависят от параметров)
C++ Найти наименьшие элементы в каждой матрице и напечатать их номера
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LEQADA
Мастер кустарных методов
 Аватар для LEQADA
227 / 222 / 9
Регистрация: 09.11.2010
Сообщений: 680
25.07.2012, 21:14     Найти наименьшие элементы матрицы #2
Lokoss, создаёшь ещё один массив, размер которого равен количеству строк матрицы. Записываешь туда найденные минимальные значения (нужно тупо пройтись по строке и сравнивать с минимальным на данный момент. На первом этапе в качестве минимального взять первый элемент).Потом проходишься по созданному одномерному массиву и сравниваешь элементы в поисках максимального. Никакая сортировка не нужна здесь.
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
25.07.2012, 21:29     Найти наименьшие элементы матрицы #3
То есть нужно вывести максимальное и минимальное число ? И индекс его ? или без индекса ?
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 14
Регистрация: 16.06.2009
Сообщений: 486
25.07.2012, 22:07     Найти наименьшие элементы матрицы #4
Lokoss,

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 <algorithm>
#include <random>
#include <vector>
 
#include <boost/multi_array.hpp>
 
const int M = 5;
const int N = 5;   
 
int main() {
   typedef boost::multi_array <int, 2> matrix_t;
   typedef boost::multi_array_types::index_range range;
   typedef matrix_t::array_view <1>::type matrix_view;
   typedef boost::multi_array_ref <int, 1> array_ref;
   
   std::mt19937 rng;
   std::uniform_int_distribution <int> int_dist(-50, 50);
   
   matrix_t matrix(boost::extents[M][N]);
   array_ref matrix_ref(
      matrix.data(),
      boost::extents[matrix.num_elements()]
   );
 
   std::generate(
      matrix_ref.begin(),
      matrix_ref.end(),
      [&int_dist, &rng]() -> int {
            return int_dist(rng);
      }
   );
   
   std::vector <int> min_vector;
   for (std::size_t index = 0; index < N; index++) {
      matrix_view row_view = matrix[boost::indices[index][range()]];
      min_vector.push_back(
         *std::min_element(
            row_view.begin(),
            row_view.end()
          )
      );  
   }
     
   for (std::size_t i = 0; i != matrix.size(); ++i) {
      std::copy(
         matrix[i].begin(),
         matrix[i].end(),
         std::ostream_iterator <int>(std::cout, "\t")
      );
      std::cout << '\n';
   }
   
   std::cout << "Minimum elements in rows: "; 
   std::copy(
      min_vector.begin(),
      min_vector.end(),
      std::ostream_iterator <int>(std::cout, " ")
   );
   
   std::cout << "Maximum element in minimum: "; 
   std::cout <<
      std::distance(
         min_vector.begin(),
         std::max_element(
            min_vector.begin(),
            min_vector.end()
         )
      );
 
   return 0;
}
http://liveworkspace.org/code/7f65a9...5cd1ee65fb95a7
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
25.07.2012, 22:15     Найти наименьшие элементы матрицы #5
Простенький алгоритмик (выводит мин.элемент каждой строки и в конце индекс максимального из этих минимальных):
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
#include<stdio.h>
#include<stdlib.h>
#define M 3
#define N 5
 
void Init(int *a, int *end)
{
   if (a < end)
   {
       *a = rand() % 100;
       Init(a + 1, end);
   }
}
 
void Print(int *a, int i, int *end)
{
   if (a < end)
   {
       printf("%d%c", *a, i%N ? ' ' : '\n');
       Print(a + 1, i + 1, end);
   }
}
 
int Min(int *beg, int *a)
{
   int buf;
   return (beg < a) ? ((buf = Min(beg, a - 1)) < *a ? buf : *a) : *beg;
}
 
int main()
{
   int i, a[M][N], max, imax = 0, min;
   srand(time(NULL));
   Init(*a, *a + M*N);
   Print(*a, 1, *a + M*N);
   printf("%d\n", max = Min(*a, *a + N - 1));
   for (i = 1; i < M; i++)
   {
      min = Min(*a + i*N, *a + (i + 1)*N - 1);
      if (min > max)
      {
          imax = i;
          max = min;
      }
      printf("%d\n", min);
   }
   printf("i = %d\n", imax);
   return 0;
}
Хотел совсем без for, но доп.память нужна
Lokoss
0 / 0 / 0
Регистрация: 23.07.2012
Сообщений: 15
26.07.2012, 13:36  [ТС]     Найти наименьшие элементы матрицы #6
Спасибо большое ребят, очень помогли!
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
26.07.2012, 14:16     Найти наименьшие элементы матрицы #7
Цитата Сообщение от Lokoss Посмотреть сообщение
Спасибо большое ребят, очень помогли!

Не по теме:

очень помогли сдать халявную лабу или правда помогли понять? Что-то во второе не верится совсем...

Lokoss
0 / 0 / 0
Регистрация: 23.07.2012
Сообщений: 15
26.07.2012, 14:19  [ТС]     Найти наименьшие элементы матрицы #8
Нет, не лабу, я учу на самом деле, хочу поступать
Thinker
26.07.2012, 14:24
  #9

Не по теме:

С этого и надо было начинать, а то моя программа "самое то для новичков"

Lokoss
0 / 0 / 0
Регистрация: 23.07.2012
Сообщений: 15
26.07.2012, 14:27  [ТС]     Найти наименьшие элементы матрицы #10
Так вот сейчас сижу и пытаюсь догнать
Насколько понимаю, вы делали через функции, вот здесь ошибки выдавало, сначала не могло найти переменную time, я ее объявил теперь проблема здесь:
C++
1
2
int i, a[M][N], max, imax = 0, min, time;
   srand( time(NULL));
пишет:C:\Documents and Settings\Daniil\Рабочий стол\С++\Masuv\testMas.cpp(33) : error C2064: term does not evaluate to a function
LEQADA
Мастер кустарных методов
 Аватар для LEQADA
227 / 222 / 9
Регистрация: 09.11.2010
Сообщений: 680
26.07.2012, 14:43     Найти наименьшие элементы матрицы #11
Lokoss, Вы не вручную будете матрицу заполнять? Уберите заполнение случайными числами.
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
26.07.2012, 14:58     Найти наименьшие элементы матрицы #12
Цитата Сообщение от Lokoss Посмотреть сообщение
сначала не могло найти переменную time, я ее объявил
Её не надо объявлять, надо подключить
C++
1
#include <time.h>
Добавлено через 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
40
41
42
43
44
45
46
47
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>
 
int main()
{      
    srand(static_cast<unsigned int>(time(0)));
 
    const int rows = 5, cols = 5;
 
    int matrix[rows][cols];    
    
    std::cout << "matrix:\n";
    for(int i = 0; i < rows; ++i)
    {
        for(int j = 0; j < cols; ++j)
        {
            matrix[i][j] = rand() % 100;
            std::cout << std::setw(3) << matrix[i][j] << " ";
        }
        std::cout << "\n";
    }
    
    int min, max, i_max = 0;
    std::cout << "\nmins:\n";
    for(int i = 0; i < rows; ++i)
    {
        min = matrix[i][0];
        
        for(int j = 0; j < cols; ++j)
            if(matrix[i][j] < min)
                min = matrix[i][j];
        
        std::cout << "row " << i << ": " << min << "\n";
        
        if(i == 0 || min > max)
        {
            max = min;
            i_max = i;
        }
    }
    
    std::cout << "\nmax = " << max << " (row " << i_max << ")";
    
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2012, 15:47     Найти наименьшие элементы матрицы
Еще ссылки по теме:

C++ Две матрицы размером 5 * 5. Найти детерминант их суммы, а также наименьшие и наибольшие элементы
C++ Поменять местами элементы главной и побочной диагонали матрицы и найти столбцы, элементы которых убывают
C++ Вывести наименьшие значения матрицы и их индексы

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

Или воспользуйтесь поиском по форуму:
Lokoss
0 / 0 / 0
Регистрация: 23.07.2012
Сообщений: 15
26.07.2012, 15:47  [ТС]     Найти наименьшие элементы матрицы #13
Уху! Спасибо, до меня дошло! Просто нужно было разобраться в цикле!!!!
Yandex
Объявления
26.07.2012, 15:47     Найти наименьшие элементы матрицы
Ответ Создать тему
Опции темы

Текущее время: 11:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru