Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

19.11.2011, 07:59. Просмотров 644. Ответов 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;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2011, 07:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массив в C++ (подмога с исправлением ошибки) (C++):

Нужен совет с исправлением ошибки - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;locale.h&gt; #include &lt;Windows.h&gt; #include &lt;time.h&gt; #include &lt;stdio.h&gt; using...

как написать программу с исправлением ошибкой??? - C++
Вводятся две строки типа Слово1 Слово2. Необходимо исправить ошибки, связанные с неверным использованием прописных и строчных букв....

Нужна подмога - C++
нужно составить программу Дан массив а(50), заполненный значениями в диапазоне от 160 до 310. Создать программу (функцию), определяющую...

Требуется ваша подмога! - C++
Здравствуйте,хэлпуйте кто чем может с этими заданиями,заранее спасибо! 1. Ввести с клавиатуры последовательность из N элементов....

Нужна подмога по классам (Создать класс матрица) - C++
Вопщем так. мне завтра нужно сдать эту лабу. помогите пожалуйста доделать. ниже прикрепляю тект задания и часть программы, что уже сделала....

Многомерный массив(ошибки в коде) - C++
Здравствуйте. Необходимо было написать программу: Для матрицы из 3 столбцов и 7 строк определить номера строк где третий элемент больше...

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

Не забудьте объяснить, когда нельзя таким образом узнать размер массива
2
Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 725
20.11.2011, 00:36 #12
Уважаемый Bers,а не могли бы вы уточнить?
Когда нельзя пользоваться таким методом?
1
Bers
Заблокирован
20.11.2011, 04:23 #13
Цитата Сообщение от Rexer Посмотреть сообщение
Уважаемый Bers,а не могли бы вы уточнить?
Когда нельзя пользоваться таким методом?
Таким способом нельзя узнать под какое количество элементов было зарезервировано памяти для динамического массива. Только для статического.
2
YuninDen
1 / 1 / 0
Регистрация: 22.10.2011
Сообщений: 14
20.11.2011, 14:39  [ТС] #14
Ну так поможете с полным кодом программы? (т.е. ввести ф-ию в майн, вызвать её оттуда с правильными значениями)

P.S. Посмотрите сколько библиотек подключил . Это извращение какое-то
0
20.11.2011, 14:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2011, 14:39
Привет! Вот еще темы с ответами:

Динамический массив, ошибки в программе - C++
Пробовала поразному описывать динамический массив и всё равно программка не работает... со статическими работает идеально, а начинаю...

Указатель на массив и ошибки С2057, С2540 - C++
Мне нужно создать внутри функции 2D массив, размер `_count`которого передаётся в функцию параметром. Т.к. C++ не разрешает создать такой...

массив:выдает ошибки не могу исправить - C++
#include &lt;iostream&gt; #include &quot;stdafx.h&quot; #include&quot;math.h&quot; using namespace std; int main() { srand(time(0)); const int N = 3, M...

двумерный массив поиски ошибки в коде - C++
В двумерном массиве записаны слова, представляющие собой последовательность цифр, завершающихся 0. Необходимо распечатать слова через...


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

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

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