Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
beats
100 / 38 / 9
Регистрация: 09.12.2012
Сообщений: 567
#1

пройтись по строке с закрепленным минимальным - C++

21.12.2012, 23:44. Просмотров 677. Ответов 6
Метки нет (Все метки)

Получить новую матрицу, каждый элемент строки которой получается путем деления на минимальный элемент этой же строки.
Вот нахождение минимального есть, а остальное не получаться...
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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    int const n=5, m=5;
    double A[n][m];
    double Anew[n][m];
    int i, j;
    for (i=0; i<n; i++)
    {
        for (j=0; j<m; j++)
        {
         A[i][j] = rand() % 99;
        }
    }   
    for (i=0; i<n; i++)
 {  
        for (j=0; j<m; j++)
        { 
          cout << setw(3) << A[i][j];
        }
        cout << endl;
    }
    cout << "Min v kagdoy stroke" <<endl;
    for (i=0; i<n; i++)
 {
        double min=A[i][0];
        for (j=1; j<m; j++)
        {
                if (min>A[i][j]) 
                {
                 min=A[i][j];        
                        } 
        }
        cout << min << endl;
    }
 
    system ("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2012, 23:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос пройтись по строке с закрепленным минимальным (C++):

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

Найти в каждой строке матрицы элемент с максимальным и минимальным значением
Дана матрица F(4,4). Найти в каждой строке матрицы элемент с максимальным и...

Найти элемент, являющийся максимальным в своей строке и минимальным в своем столбце
1. Дана целочисленная матрица размера M x N. Найти элемент, являющийся...

В каждой строке матрицы найти элемент с минимальным значением и его номер столбца
задан 2-умерный массив размерности М*N . В каждой строке найти элемент с...

Найти в матрице элемент, являющийся максимальным в своей строке и минимальным в своем столбце
Дана целочисленная матрица размера M х N. Найти элемент, являющийся...

Нахождение наибольшего элемента в строке и этот элемент должен быть минимальным в столбце
a)Матрица задана формулой A=0.1*(N*N-pow((j-N/2+0.2),2))*pow((i-N/2-0.3),2);...

6
MrGluck
Модератор
Эксперт CЭксперт С++
8021 / 4864 / 1425
Регистрация: 29.11.2010
Сообщений: 13,240
22.12.2012, 02:18 #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
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <iterator>
#include <random>
#include <cstddef>
#include <vector>
 
 
int main()
{
    std::size_t M, N;
    std::cin >> M >> N;
    std::vector <std::vector<double> > A (M, std::vector<double> (N));
    std::mt19937 gen { std::random_device()() };
    std::uniform_int_distribution<int> uid (10, 99);
    auto print_v = [](const std::vector<double>& v)
    {
        std::copy(v.begin(), v.end(), std::ostream_iterator<double>
            (std::cout << std::fixed << std::setprecision(2), " "));
        std::cout << std::endl;
    };
    std::cout << "Before:\n";
    for (auto &v : A)
    {
        std::generate(v.begin(), v.begin() + N, [&uid, &gen]
            { return static_cast<double> (uid(gen)); } );
        print_v(v);
        double min = *std::min_element(v.begin(), v.begin() + N);
        std::for_each(v.begin(), v.begin() + N, [&min](double &x) { x /= min; } );
    }
    std::cout << "\nAfter:\n";
    for (auto &v : A)
        print_v(v);
}
0
beats
100 / 38 / 9
Регистрация: 09.12.2012
Сообщений: 567
24.12.2012, 14:48  [ТС] #3
Спасибо конечно, но даже не знаю как это использовать((. ошибка на ошибке, да и синтаксис какой то замутный.
Ктонибудь может мой код подредактировать для окончательно решения?
0
Миниатюры
пройтись по строке с закрепленным минимальным  
SummerRain
327 / 326 / 92
Регистрация: 16.12.2012
Сообщений: 544
24.12.2012, 15:21 #4
создай массив размерностью n.
C++
1
int minArray[n]
запиши в него все минимумы строк. Потом уже циклы
A[i][j] /= minArray[i];
0
beats
100 / 38 / 9
Регистрация: 09.12.2012
Сообщений: 567
24.12.2012, 21:28  [ТС] #5
Спасибо! Сделал немного не так, как как A[i][j] /= minArray[i]; не работало.
Вот результат
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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    int const n=5;
    double A[n][n];
    double Anew[n][n];
    int minArray[n];
    int i, j;
    for (i=0; i<n; i++)
    {
        for (j=0; j<n; j++)
        {
         A[i][j] = rand() % 99;
        }
    }   
    for (i=0; i<n; i++)
 {  
        for (j=0; j<n; j++)
        { 
          cout << setw(3) << A[i][j];
        }
        cout << endl;
    }
    cout << "Min v kagdoy stroke" <<endl;
    for (i=0; i<n; i++)
 {
        double min=A[i][0];
        for (j=1; j<n; j++)
        {
                if (min>A[i][j]) 
                {
                 min=A[i][j]; 
                 minArray[i]=A[i][j];
                        } 
        }
        cout << min << endl;
    }
    // Новая
 
     for (i=0; i<n; i++)
    {
        for (j=0; j<n; j++)
        {
         Anew[i][j] = A[i][j]-minArray[i];
        }
    }   
 
    // Вывод 
   for (i=0; i<n; i++)
 {  
        for (j=0; j<n; j++)
        { 
          cout << setw(3) <<  Anew[i][j];
        }
        cout << endl;
    }
    system ("pause");
    return 0;
}
Скрин прикрепляю. Все работает (я только вместо деления сделал вычитание пока пусть будет оно), но не суть. Суть что первая и последняя строка матрицы выводит какую то фигню. А остальные правильно! В чем дело?
0
Миниатюры
пройтись по строке с закрепленным минимальным  
SummerRain
327 / 326 / 92
Регистрация: 16.12.2012
Сообщений: 544
24.12.2012, 22:34 #6
37 строчку
C++
1
minArray[i]=A[i][j]
нужно вынести за цикл for и поставить перед 40 строчкой
только уже заменить на
C++
1
minArray[i]= min;
0
beats
100 / 38 / 9
Регистрация: 09.12.2012
Сообщений: 567
25.12.2012, 01:45  [ТС] #7
Отлично получилось!! Спасибо!
0
25.12.2012, 01:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2012, 01:45
Привет! Вот еще темы с решениями:

Элементы матрицы расположенные в одной строке и в одном столбце с минимальным заменить на него
Дана квадратная матрица 5х5. Составить программу, которая находит минимальный...

Строка: удалить лишние пробелы и определить слово с минимальным кол-вом согласных в строке
мое задание : удалить лишние пробелы и определить слово с минимальным кол-вом...

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

Дана целочисленная матрица. Найти элемент, являющийся максимальным в своей строке и минимальным в своем столбце.
Дана целочисленная матрица размера M x N. Найти элемент, являющийся...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru