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

Найти максимальный среди всех элементов тех строк заданной матрицы, которые упорядочены - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Чтение из бинарного файла http://www.cyberforum.ru/cpp-beginners/thread362613.html
Ну собственно,у меня есть некий двоичный файл,в него записана моя информация в двоичном виде,требуется считать эту информацию и вывести на экран.Перепробовал уже кучу способов,выдает "левые" символы,значки всякие.Подскажите пожалуйста как это сделать правильно?И умоляю,не надо перекидывать меня на другие темы,где читают числа из двоичного файла,я их пересмотрел и делал похожим методом,но все...
C++ одномерный массив помощь в отладке программы #include <iostream> #include <conio.h> #include <locale.h> #include <stdlib.h> #include <iomanip> #define m 12 using namespace std; void main() { http://www.cyberforum.ru/cpp-beginners/thread362603.html
Массив C++
Есть рабочая программа. Она удаляет в массиве элементы кратные семи и после каждого нечетного элемента массива добавляет элемент со значением 4. Подскажите, как сделать, чтобы в конечном массиве не отображались пустые элементы. Заранее спасибо! #include "stdafx.h" #include <iostream> #include <stdio.h> #include <iomanip> #include <stdlib.h> #include <time.h>
Работа с "Логин и пароль" на с++ C++
Здравствуйте! Вот возник вопрос да и кончились идеи.. Вот написал простую программу для входа с логина и пароля... И хочу спросить каким способом можно тоже самое сделать, только не через циклы... #include <iostream.h> #include <conio.h> #include <string.h> void main() { clrscr();
C++ Работа с масивом http://www.cyberforum.ru/cpp-beginners/thread362544.html
Как предоставить пользователю ввод кол-ва элементов масива вручную. cout<<"input number of mas element and press Enter..."; cin>>n; double mas1; double mas2; double mas3
C++ Вывести на экран последовательность целых чисел в обратном порядке Помогите) Задание: Вывести на экран : целые числа 10, 12, 14, ... , 60 в обратном порядкев столбик))( в С ++ для начинающих, напишите программу) подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
07.10.2011, 15:45     Найти максимальный среди всех элементов тех строк заданной матрицы, которые упорядочены
TBIKC, всё же отмечу что вот это
Цитата Сообщение от OstapBender Посмотреть сообщение
if (arr[i]<arr[i-1])
ни есть полный критерий отсортированности, в любом случае в реальных условиях в матрицах могут идти одинаковые элементы например такая строка
1 2 2 3 является сортированной!
При этом 3 2 2 1 тоже сортированная,
только порядок элементов по убыванию, ниже код на С++ с моим взглядом на решение данной задачи
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
#include <iostream>
#include <conio.h>
using namespace std;
 
//Проверяет отсортирована ли строка row
bool isSorted(long n, long * row);
//Возвращает макс элемент строки
long GetMax(long n, long * row);
 
int main()
{
    long i,j,m,n,val, maxv;
    long ** arr;//Пусть будет массив с длинными целыми
    bool bSorted = false;//Флаг сигнализирующий есть ли 
    //в массиве хоть 1-на сортированная строка     
    do
    {
        //Вводим строки и столбцы матрицы
        std::cout<<"Rows in matrix : ";std::cin>>m;
        std::cout<<"Cols in matrix : ";std::cin>>n;
 
        arr = new long*[m];//Память под указатели на строки матрицы
        for(i = 0; i < m; i++)
        {
            arr[i] = new long[n];//Память под элементы строки
            for(j = 0; j < n;  j++)
            {
                std::cout<<"arr["<<i + 1<<"]["<<j + 1<<"] = ";
                std::cin>>arr[i][j];//Вводим эл-ты массива
            }
        }
        //Теперь отыскиваем отсортированную строку
        //конечно если такие строки есть
 
        //я решил сэкономить на коде и попутно ищу
        //первый максимальный элемент сортированных строк
        //как только строка isSorted в maxv уже
        //будет первый макс элемент отсортированных строк
        //при этом поиск последующих строк уже буду вести 
        //с i-ой строки - вобщем удобно
        while(0 < (i--) )
        {
            if((bSorted = isSorted(n, arr[i])))
            {
                maxv = GetMax(n, arr[i]);
                break;
            }
        }
        if(!bSorted)
            //Если сортированных строк в массиве нет bSorted = false
            //выводим соответсвующее уведомление
            std::cout<<"Input array not contain sorted rows!\r\n";
        else
        {
            //Завершаем пробор массива
            while(0 < (i--))
            {
                if(isSorted(n, arr[i]))//Работаем только с сортированными строками
                if(maxv < (val = GetMax(n, arr[i])))
                    maxv = val;
            }
            std::cout<<"Max value in sorted rows : "<<maxv<<"\r\n";
        }
        std::cout<<"Press Y for new input\r\n";
    }//Если нажали Y можем повторить алгоритм для новй матрицы
    while(toupper(getch()) == 'Y');
    return 0;
}
 
bool isSorted(long n, long * row)
{
    bool bRet = true;//полагаем вначале ччто строка отсортирована
    long i; 
    //Ну а теперь сравниваем элементы строки row
    //Проверяем сортированность по возрастанию
    for(i = 0; i < n - 1 && bRet; i++)
    {
        if(row[i] > row[i + 1])
            bRet = false;
    }
    //если строка не отсортирована по возрастанию
    //проверим отсортирована ли она по убsванию
    if(!bRet)
    {
        bRet = true;
        for(i = n - 1; 0 <= i && bRet; i--)
        {
            if(row[i] < row[n - i - 1])
                bRet = false;
        }
    }
    return bRet;
}
 
long GetMax(long n, long * row)
{
    long ret = row[0];
    for(long i = 1; i < n; i++)
    {
        if(ret < row[i])
            ret = row[i];
    }
    return ret;
}
Миниатюры
Найти максимальный среди всех элементов тех строк заданной матрицы, которые упорядочены  
Вложения
Тип файла: rar SortedArr.exe.rar (45.2 Кб, 38 просмотров)
 
Текущее время: 18:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru