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

От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
gangstaboy
1 / 1 / 0
Регистрация: 29.08.2010
Сообщений: 7
02.09.2010, 20:34     От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки #1
От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2010, 20:34     От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки
Посмотрите здесь:

Вывести максимальное значение по модулю элемента каждой строки массива C++
C++ Замена первых элементов каждой строки квадратной матрицы на сумму элементов этой строки
C++ Массив: Напечатать номер каждой строки, в которой второй элемент меньше среднего арифметического элементов этой строки, и число таких строк.
Найти номер строки и столбца двумерного массива для минимального элемента этого массива C++
Вычислить среднюю арифметическую величину для элементов каждой строки двумерного массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
02.09.2010, 21:34     От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки #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
#include <iostream>
#include <ctime>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <iterator>
 
int rnd ()
{
    return rand()%50;
}
 
void show (int x)
{
    std::cout << std::setw(3) << x;
}
 
int main (void)
{
    const int SIZE=5;
    int MAS[SIZE][SIZE];
    // fill and output
    srand (time (NULL));
    std::cout << "Start matrix:\n";
    for (int i=0; i<SIZE; i++)
    {
        std::generate_n (MAS[i], SIZE, rnd);
        std::for_each (MAS[i], MAS[i]+SIZE, show);
        std::cout << std::endl;
    }
    std::cout << "\n\n";
    //
    int max;
    for (int i=0; i<SIZE; i++)
    {
        max=*std::min_element (MAS[i], MAS[i]+SIZE);
        for (int j=0; j<SIZE; j++, MAS[i][j]-=max);
    }
 
    // output
    std::cout << "Finish matrix:\n";
    for (int i=0; i<SIZE; i++)
    {
        std::for_each (MAS[i], MAS[i]+SIZE, show);
        std::cout << std::endl;
    }
    // exit
    return 0;
}
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
02.09.2010, 21:56     От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки #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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
 
#define ROWS 4
#define COLS 5
 
void exchange(int **mas)
{
    int min;
    int i, j;
    
    for (i = 0; i < ROWS; i++)
    {
        min = mas[i][0];
        
        for (j = 0; j < COLS; j++)
            if (mas[i][j] < min)
                min = mas[i][j];
 
        for (j = 0; j < COLS; j++)
            mas[i][j] -= min;
    }
}
 
int main()
{
    int **mas;
    int i, j;
    
    mas = (int **)malloc(ROWS * sizeof(int *));
    
    for (i = 0; i < ROWS; i++)
        mas[i] = (int *)malloc(COLS * sizeof(int));
    
    srand(time(NULL));
    
    printf("Ishodniy massiv:\n\n");
    
    for (i = 0; i < ROWS; i++)
    {
        for (j = 0; j < COLS; j++)
        {
            mas[i][j] = -10 + rand() % 21;
            printf("%3d  ", mas[i][j]);
        }
 
        printf("\n");
    }
    
    exchange(mas);
    
    printf("\n\nIzmenyonniy massiv:\n\n");
 
    for (i = 0; i < ROWS; i++)
    {
        for (j = 0; j < COLS; j++)
            printf("%3d  ", mas[i][j]);
 
        printf("\n");
    }
    
    getch();
    return 0;
}
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
02.09.2010, 22:19     От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки #4
Я тут немного поупражнялся и написал алгоритмик для одного ряда массива.
По-моему для всего массива написать не так уж сложно если потратить минут 15

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 <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    
int Arr[5][5];
Arr[0][0] = 3; Arr[0][1] = 5; Arr[0][2] = 7; Arr[0][3] = 1; Arr[0][4] = 10;
 
int i = 1;
int min = Arr[0][0] < Arr[0][0+i] ? Arr[0][0] : Arr[0][0+i];
for(i = 2;i < 5;i++)
{
    min = min < Arr[0][0+i] ? min : Arr[0][0+i];
}
cout << min << endl;
for(i = 0;i < 5;i++)
{
    Arr[0][i] -= min;
    cout << Arr[0][i] << " ";
}
 
 
    _getch();
}
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
02.09.2010, 22:27     От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки #5
NikolaWhite,
Извините, не сдержался... какую цель вы преследовали, когда писали Arr[0][0+i]? Меня интересует 0+i...
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
02.09.2010, 22:30     От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки #6
gangstaboy, решение neske в виде отдельной функции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <algorithm>
#include <cstddef>
 
// Вычитает из каждого элемента строки значение
// минимального элемента строки
template<std::size_t n, std::size_t m>
void SubstractMinimum(int (&matrix)[n][m]) {
  for (std::size_t i = 0; i < n; ++i) {
    int min = *std::min_element(matrix[i], matrix[i] + m);
    for (std::size_t j = 0; j < m; ++j)
      matrix[i][j] -= min;
  }
}
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
02.09.2010, 22:49     От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки #7
какую цель вы преследовали, когда писали Arr[0][0+i]? Меня интересует 0+i...
Элементарно min сравнивается со следующим элементом массива.
Я это больше для собственной практики писал, а потом решил что мой вариант для gangstaboyя просто
понятнее будет
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
02.09.2010, 23:01     От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки #8
Цитата Сообщение от NikolaWhite Посмотреть сообщение
Элементарно min сравнивается со следующим элементом массива.
Я это больше для собственной практики писал, а потом решил что мой вариант для gangstaboyя просто
понятнее будет
Все это хорошо, но 0 + i = i. Почему бы не написать просто Arr[0][i]
ISergey
02.09.2010, 23:06
  #9

Не по теме:

neske, CyBOSSeR издеваетесь как можете над бедными студентами

CyBOSSeR
02.09.2010, 23:15
  #10

Не по теме:

ISergey, мы ж из лучших побуждений
А то они все ручками да ручками, велосипед за велосипедом

silent_1991
02.09.2010, 23:22
  #11

Не по теме:

CyBOSSeR,
Знаете, а не такое уж это и бесполезное занятие - изобретать велосипед... Изобретая велосипед, понимаешь многие вещи, о которых просто не задумывался до того, как начал его изобретать)))

ForEveR
02.09.2010, 23:30
  #12

Не по теме:

silent_1991, Конечно. Но вы же не изобретаете велосипед для подсчета длины строки, возведения в степень, сравнения строк (в основном) и так далее. Не так-ли?) Так почему бы не юзать стл так же как привычные функции?

silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
02.09.2010, 23:48     От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки #13
C
1
Lavroff
,
Вчера я например писал функцию для вычисления корня n-ой степени, для задачи, где нельзя было пользоваться math.h... Фишка в том, что в таких простеньких задачках как раз-таки запрещается использовать библиотечные функции, и делается это с одной простой целью - научить людей программировать на простых примерах...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2010, 00:23     От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки
Еще ссылки по теме:

Найти среднее арифметическое элементов каждой строки матрицы Q (lm) и отнять его от элементов этой строки. размер матрицы 7х7.заранее спасибо C++
8. Найти среднее арифметическое элементов каждой строки матрицы Q(l,m) и вычесть его из элементов этой строки C++
Прибавить ко всем элементам каждой строки максимальное значение этой строки C++

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

Или воспользуйтесь поиском по форуму:
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
03.09.2010, 00:23     От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки #14
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
#include <cstdlib>
#include <vector> 
#include <algorithm>
#include <iterator>
#include <iostream>
#include <functional>
 
typedef vector<unsigned> VInt;
typedef vector<VInt> VVInt;
typedef VVInt::const_iterator VVIntIt;
typedef VVInt::iterator VVIntit;
 
unsigned _rand(){ return rand() % 100; }
 
const unsigned nX = 5, nY = 10;
 
int main(){
  VVInt v( nY );
  VVIntit it = v.begin();
  VVIntIt end = v.end();
  unsigned nMin;
  for( ;it!=end;++it ){
    it->resize( nX );
    generate( it->begin(), it->end(), _rand );
    copy( it->begin(), it->end(), ostream_iterator<unsigned>(cout," ") );
    cout << endl;
  }
  for( it = v.begin(), nMin = it->front();it!=end;++it ){
    nMin = min( nMin, *min_element( it->begin(), it->end() ) );
  }
  cout << "=========\n" << nMin << "\n=========\n";
  for( it = v.begin();it!=end;++it ){
    transform( it->begin(), it->end(), it->begin(), bind2nd( minus<unsigned>(), nMin ) );
    copy( it->begin(), it->end(), ostream_iterator<int>(cout," ") );
    cout << endl;
  }  
}
Добавлено через 38 секунд
silent_1991, не для тех, кто сюда обычно стучится
Yandex
Объявления
03.09.2010, 00:23     От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки
Ответ Создать тему
Опции темы

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