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

Найти в массиве максимальный элемент и заменить все вышестоящие на минимальный из последней строки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти сумму тех членов ряда, модуль которых больше ли равен заданному е http://www.cyberforum.ru/cpp-beginners/thread1077472.html
Даны числовой ряд и некоторое число е. Найти сумму тех членов ряда, модуль которых больше ли равен заданному е.общий член ряда имеет вид: {a}_{n}=\frac{{2}^{n}}{(n-1)!}
C++ Подсобите собрать в одну программу, заодно проверить 1) в стpoкe пoслe каждой бyквы Ch вставить cтpoкy Str1 2) в cимвoльной стpoке зaкaнчивaющейся тoчкoй вывecти cлoвa из 3 бyкв 3)Дaны двe cимвoльныe cтpoки А и В. Cocтaвьтe пpoгpaммy, прoвеpяющую, мoжнo ли из бyкв, вхoдящих в А, составить В. бyквы мoжнo пeрecтaвлять и иcпoльзовaть 1 рaз. нужно объединить в прогу, которая будет запрашивать какую из этих 3 -х задачу решать (чтобы запрашивал... http://www.cyberforum.ru/cpp-beginners/thread1077461.html
динамические переменные C++
1. Составьте программу, в которой 8-10 переменных разной длины, например, строки символов, размещаются в ДРП, причем размещение чередуется с освобождением памяти так, что возникает фрагментация. Переменные меньшей длины размещайте после освобождения памяти 1-2 переменных большей длины. Используя функции Ofs, Seg, получите карту распределения памяти на промежуточных и окончательных этапах. 2. С...
Необходимо описать функцию, выводящую на печать слова в алфавитном порядке C++
Помогите, пожалуйста, описать функцию Текст задания: описать функцию sort(A), которая принимает в виде параметра строку А, состоящую из 3х слов, в каждом из которых от 2 до 6 латинских букв и за каждым из которых следует пробел. Функция sort(A) выводит на печать эти слова в алфавитном порядке
C++ Системы счисления 2 и 16, выполнить операцию сложение http://www.cyberforum.ru/cpp-beginners/thread1077427.html
Помогите пожалуйста, если возможно, то с объяснением.
C++ Дано натуральное число n. Вычислить выражение Дано натуральное число n. Вычислить выражение: 2/1+3/2+4/3...+(n+1)/n подробнее

Показать сообщение отдельно
some_name
Вежливость-главное оружие
 Аватар для some_name
219 / 219 / 55
Регистрация: 19.02.2013
Сообщений: 1,419
21.01.2014, 17: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
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include "stdafx.h"
#include<iostream>
#include<iomanip>
 
using namespace std;
//создает матрицу размер size
int** matrix_constructor(int size)
{
    int** matrix_new = new int* [size]; 
    for (int i = 0; i < size; i++) matrix_new[i] = new int[size];
    return matrix_new;
}
//удаляем матрицу
void matrix_destructor(int** matrix, int size)
{   
    for (int i = 0; i < size; i++) delete matrix[i];
    delete matrix;  
}
заполняет матрицу : если random_fill == true - случайно, иначе вводит ручками
void matrix_fill(int** matrix, int size, bool random_fill = true)
{
    if(random_fill) 
    {
        srand((unsigned)time(NULL));
        for (int i = 0; i < size; i++)
            for (int j = 0; j < size; j++)
            {
                int temp = matrix[i][j] = rand() % 80 + 10; 
                if(temp > 70) matrix[i][j] = 0;
                else matrix[i][j] = temp;
            }
    }
    else
    {
        for(int i = 0; i < size; i++)
        {
            for(int j = 0; j < size; j++)
            {
                cout<<"Enter {"<<i<<":"<<j<<"}"<<"element"; cin>>matrix[i][j];
            }
            cout<<endl;
        }
    }
}
//печатаем матрицу
void matrix_print(int** matrix, int size)
{
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++) cout<<matrix[i][j]<<" ";     
        cout<<endl;
    }
    cout<<endl;
}
 
void matrix_copy(int** orignal, int** copy, int size)
{
    for (int i = 0; i < size; i++)  
        for (int j = 0; j < size; j++)
            copy[i][j] = orignal[i][j];
}
//первый пункт задания
void matrix_action1(int** matrix, int size)
{   
    int maximal_index[2], //строка и столбец максимального элемента
        minimal_last_row = matrix[size - 1][0], //минимальный элемент последней строки
        maximal = matrix[0][0]; //максимальный элемент матрицы
 
    int** copy = matrix_constructor(size);//делаем 
    matrix_copy(matrix, copy, size);////////копию матрицы
 
    for (int i = 0; i < size; i++)
    {                   
        for (int j = 0; j < size; j++)
        {            
            if(copy[i][j] > maximal)    //если текущий больше максимального
            {
                maximal = copy[i][j];//значит максимальным становится текущий
                maximal_index[0] = i;//строка
                maximal_index[1] = j;//стролбец
            }
            if(i == size - 1)//если мы на последней строке, то ищем минимум
                if(copy[i][j] < minimal_last_row)
                    minimal_last_row = copy[i][j];          
        }       
    }   
 
         //заменяем все элементы до максимального на минимум последней строки
    for (int i = 0; i <= maximal_index[0]; i++) 
        for (int j = 0; j <= (i == maximal_index[0] ? maximal_index[1] : size - 1); j++)        
            copy[i][j] = minimal_last_row;
        
    matrix_print(copy, size);//выводи отредактированную матрицу
    matrix_destructor(copy, size);//удаляем ее
}
 
//второй пункт задания
void matrix_action2(int** matrix, int size)
{
    int counter_temp = 0;//временный счетчик нулей
 
    int** copy = matrix_constructor(size);//делаем копию
    matrix_copy(matrix, copy, size);//матрицы
 
    for (int i = 0; i < size; i++)
    {
        int counter_null = 0;//счетчик нулей в текущей строке
        for (int j = 0; j < size; j++)  
        {           
            if(!copy[i][j]) counter_null++;//если ноль, то увеличиваем счетчик
            if(counter_temp == 2) copy[i - 1][j] = 0;//если временный счетчик равен 2, значик в предыдущей строке было 2 нуля, значит обнуляем все ее элементы
        }
        counter_temp = counter_null;
    }
 
    matrix_print(copy, size);//выводи отредактированную матрицу
    matrix_destructor(copy, size);//удаляем ее
}
 
 
int main()
{
    int size;
    int** matrix;
 
    cout<<"Matrix size : "; cin>>size;
 
    matrix = matrix_constructor(size);
    matrix_fill(matrix, size);
    matrix_print(matrix, size);
    matrix_action1(matrix, size);   
    matrix_action2(matrix, size);   
    matrix_destructor(matrix, size);
 
    getchar(); getchar();
 
    return 0;
}
 
Текущее время: 12:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru