Форум программистов, компьютерный форум 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, 16:55     Найти максимальный среди всех элементов тех строк заданной матрицы, которые упорядочены
Цитата Сообщение от OstapBender Посмотреть сообщение
в моей программе всё правильно работает.
только не проверяется если массив состоит из 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
#include <iostream>
#include <conio.h>
using namespace std;
 
bool isSorted(long * arr, int n, long& max);
 
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(arr[i],n,maxv)))
                break;
        }
        if(!bSorted)
            //Если сортированных строк в массиве нет bSorted = false
            //выводим соответсвующее уведомление
            std::cout<<"Input array not contain sorted rows!\r\n";
        else
        {
            //Завершаем пробор массива
            while(0 < (i--))
            {
                if(isSorted(arr[i],n,val))//Работаем только с сортированными строками
                if(maxv < val)
                    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 * arr, int n, long& max) {
 
        bool sorted=true;
        int i;
        for (i=1; i<n ; i++) {
                if (arr[i]<arr[i-1]) {
                        sorted=false;
                        break;
                }
        }
 
        if (sorted) {
                max = arr[n-1];
                return true;
        }
        
        for (i=1; i<n ; i++) {
                if (arr[i]>arr[i-1]) {
                        max=0;
                        return false;
                }
        }
 
        max=arr[0];
        return true;
 
}

Ниже скрин работы, как видите не очень то правильно работает

Не по теме:

Если есть желание проверьте ваш алгоритм на такой ввод сами

Миниатюры
Найти максимальный среди всех элементов тех строк заданной матрицы, которые упорядочены  
 
Текущее время: 10:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru