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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
YuninDen
1 / 1 / 0
Регистрация: 22.10.2011
Сообщений: 14
#1

Массив в C++ (подмога с исправлением ошибки) - C++

19.11.2011, 07:59. Просмотров 616. Ответов 13
Метки нет (Все метки)

Проблема в том, что никак не могу заставить нижнюю функцию (is_sorted) работать. Смысл её в том, чтобы проверить упорядочен ли массив по возрастанию.

Спасибо всем откликнувшимся.

P.S. Код C++


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
#include<iostream>    
#include<locale>    //!!! Отвечает за работу с локализацией ОС
#include<iomanip>
#include<math.h>
#include<conio.h>
#include<String.h>
#include<ctype.h>
#include<stdlib.h>
#include<windows.h>
#include <vector>
#include <iterator>
#include <algorithm>
#include <numeric>
 
 
#include<fstream> // Этот файл обеспечивает работу с файлами
using namespace std; 
/* если с файлом работают как главная программа, так и функции, лучше объявить его как глобальную переменную */
ifstream file("test.txt");
// Объявляем функцию, которая будет выдавать индексы:
void ShowIndex( int , float );
 
bool is_sorted(int *array, int size);
 
int main()
{    
    if(SetConsoleCP(1251)==0)
    {
        cerr<<"Fialed to set codepage!"<<endl;
    }
    if(SetConsoleOutputCP(1251)==0)
    {
        cerr<<"Failed to set OUTPUT page!"<<endl;
    }
    if(!file)
    {
        cerr<<"Файл test.txt не существует\n";
        return 0;
    }
    float n, min, max; // число, считываемое из файла, минимум и максимум 
    int k=0; // количество чисел в файле
 
 
    while (1) // как бы бесконечный цикл
    {
        file>>n;
        if (file.eof()) break; 
// если достигнут конец файла, выходим из цикла
        if (!k) // если считано первое число (k=0)
        {
            min = n; 
            max = n;
        }
        else // если число – не первое
        {
            if (n<min) min=n; 
            // если встретилось число меньше, заменяем значение min
            if (n>max) max=n; 
            // если встретилось число больше, заменяем значение max
        }
        cout<<n<<' '; k++; 
        /* выводим считанное число на экран и увеличиваем счетчик прочитанных чисел */
    }
    cout << endl; // завершаем вывод переводом курсора
    cout<<"Количество чисел в файле: " << k << endl;
    cout<<"Минимальный элемент: " << min<<endl;
    cout<<"Номер(а) минимального элемента: ";
    ShowIndex(k, min); 
    // вызываем функцию и передаем ей количество элементов и значение min
    cout<<"Максимальный элемент: " << max <<endl;
    cout<<"Номер(а) максимального элемента: " ;
    ShowIndex(k, max); 
    // вызываем функцию и передаем ей количество элементов и значение max
 
 
 
    
 
    _getch();
    return 0;
}
 
    bool is_sorted(int *array, int size) {  //Никак не могу заставить эту ф-ию работать
    for (int i = 0; i < size-1; i++) {
    if (array[i+1] > array[i])
    return false;
    }
    return true;
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2011, 07:59     Массив в C++ (подмога с исправлением ошибки)
Посмотрите здесь:

C++ проверить массив двумерный выдает ошибки..
C++ массив:выдает ошибки не могу исправить
как написать программу с исправлением ошибкой??? C++
Многомерный массив(ошибки в коде) C++
C++ двумерный массив поиски ошибки в коде
C++ Нужна подмога по классам (Создать класс матрица)
C++ Динамический массив, ошибки в программе
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rexer
 Аватар для Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 723
19.11.2011, 09:49     Массив в C++ (подмога с исправлением ошибки) #2
я не очень понял как вы хотите чтобы она работала..
C++
1
2
3
4
5
6
7
bool is_sorted(int *array, int size) {  //Никак не могу заставить эту ф-ию работать
    for (int i = 0; i < size-1; i++) {
    if (array[i+1] > array[i])
    return false;
    }
    return true;
    }
Если элемент i+1 больше i,то мы возвращаем 0?
я думаю вот так
C++
1
2
3
4
5
6
bool is_sorted(int *array, int size) {  //Никак не могу заставить эту ф-ию работать 
for (int i = 0; i < size-1; i++) {
    if (array[i+1] < array[i])
return false;
}
return true;    }
вроде так должно работать
YuninDen
1 / 1 / 0
Регистрация: 22.10.2011
Сообщений: 14
19.11.2011, 10:30  [ТС]     Массив в C++ (подмога с исправлением ошибки) #3
=) - Смысл в том, что я её никак в "main" не затощу. Какие значения из майн брать, вместо *array и size?
Rexer
 Аватар для Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 723
19.11.2011, 17:58     Массив в C++ (подмога с исправлением ошибки) #4
всмысле?те же и берите.
Значения массива то у вас изменится,размер остается таким же.
Вот и все)
Или я не прав?
thick_int
Заблокирован
19.11.2011, 18:42     Массив в C++ (подмога с исправлением ошибки) #5
По всей видимости (логически) функция написана правильно. Но сами посмотрите, что будет, если внутри этой функции выполняяется оператор из строки 3, когда
C++
1
i ==  size-1
.
Очевидно имеем выход за границы массива.
Bers
Заблокирован
19.11.2011, 18:57     Массив в C++ (подмога с исправлением ошибки) #6
Цитата Сообщение от thick_int Посмотреть сообщение
Очевидно имеем выход за границы массива.
с какой стати?
thick_int
Заблокирован
19.11.2011, 19:05     Массив в C++ (подмога с исправлением ошибки) #7
Спутал просто знак < с <=.
Тогда, как вариант.
Что нужно узнать просто упорядоченность или строгую упорядоченность?
Bers
Заблокирован
19.11.2011, 19:07     Массив в C++ (подмога с исправлением ошибки) #8
действительно)
YuninDen
1 / 1 / 0
Регистрация: 22.10.2011
Сообщений: 14
19.11.2011, 19:44  [ТС]     Массив в C++ (подмога с исправлением ошибки) #9
Ну просто значения *array и size до этого не фигурируют (вроде) - вопрос в том как мне их получить чтобы ф-ия работала правильно ))
Rexer
 Аватар для Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 723
19.11.2011, 20:46     Массив в C++ (подмога с исправлением ошибки) #10
Создаем массив и считываем туда данные,размер массива узнаем либо как при считывании i++ и запоминаем это значение ,либо как
C++
1
sizeof(array)/sizeof(int);
Bers
Заблокирован
19.11.2011, 20:47     Массив в C++ (подмога с исправлением ошибки) #11
Цитата Сообщение от Rexer Посмотреть сообщение
Создаем массив и считываем туда данные,размер массива узнаем либо как при считывании i++ и запоминаем это значение ,либо как
Код C++
1
sizeof(array)/sizeof(int);

Не забудьте объяснить, когда нельзя таким образом узнать размер массива
Rexer
 Аватар для Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 723
20.11.2011, 00:36     Массив в C++ (подмога с исправлением ошибки) #12
Уважаемый Bers,а не могли бы вы уточнить?
Когда нельзя пользоваться таким методом?
Bers
Заблокирован
20.11.2011, 04:23     Массив в C++ (подмога с исправлением ошибки) #13
Цитата Сообщение от Rexer Посмотреть сообщение
Уважаемый Bers,а не могли бы вы уточнить?
Когда нельзя пользоваться таким методом?
Таким способом нельзя узнать под какое количество элементов было зарезервировано памяти для динамического массива. Только для статического.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2011, 14:39     Массив в C++ (подмога с исправлением ошибки)
Еще ссылки по теме:

C++ Указатель на массив и ошибки С2057, С2540
Преобразование из int в массив. Исправить ошибки C++
Нужен совет с исправлением ошибки C++
Ошибки при помещении гласных в массив C++

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

Или воспользуйтесь поиском по форуму:
YuninDen
1 / 1 / 0
Регистрация: 22.10.2011
Сообщений: 14
20.11.2011, 14:39  [ТС]     Массив в C++ (подмога с исправлением ошибки) #14
Ну так поможете с полным кодом программы? (т.е. ввести ф-ию в майн, вызвать её оттуда с правильными значениями)

P.S. Посмотрите сколько библиотек подключил . Это извращение какое-то
Yandex
Объявления
20.11.2011, 14:39     Массив в C++ (подмога с исправлением ошибки)
Ответ Создать тему
Опции темы

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