#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>
Помогите исправить ошибку (Массив в c++)
Спасибо всем откликнувшимся.
P.S. =) - Смысл в том, что я её никак в "main" не затощу. Какие значения из майн брать, вместо *array и size?
P.S.S. Код C++
Код:
#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)
return false;
}
return true;
}
#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)
return false;
}
return true;
}
Цитата:
Проблема в том, что никак не могу заставить нижнюю функцию (is_sorted) работать.
Естественно, вы же её не вызываете.. Полагаю, Вы тупо взяли два разных исходника (поиска min и max, функция проверки упорядочивания) и не понимаете, почему соединенные они не работают.
В цикле, где min и max проверяйте больше ли текущее число больше предыдущего (для этого надо на каждой итерации запоминать значение текущей цифры).
[COLOR="#c0c0c0"]P.S.: предвижу сообщение "можно по-подробнее", означающее "напишите за меня"[/COLOR]:facepalm:
[QUOTE=YuninDen]
Смысл в том, что я не знаю как вызвать сию ф-ию в майне. И да. это извращение