помогите разобраться с сортировкой и выводом всего этого в файл по возрастанию, пробовал реализовывать через динамические массивы, но так и не вышло..
Программа должна записывать значения из cin >> number в number.txt и сортировать их по возрастанию.
Мой код:
#include <iostream>
#include <fstream>
using namespace std;
int main ()
{
setlocale(0, "");
int number;
int *p_darr = new int[100000];
ofstream fp("number.txt");
do {
cout << "Программа запишет целые числа в текстовый документ\n";
cout << "Для выхода из программы вместо числа напишите 0\n";
cout << "Введите целое число: ";
cin >> number;
fp << number;
for (int i = 0; i < number; i++) {
p_darr[i] = i;
}
if(cin.good())
{
cin.ignore(10, '\n');
}
}
while (number != 0);
fp.close();
delete [] p_darr;
cout << "\033[1;31mКоманда для завершения работы принята.\033[0m\n";
cout << "\033[1;31mРезультат записан в number.txt.\033[0m\n";
}
Сортировать файл нельзя, сначала надо отсортировать массив, а затем уже записывать отсортированный в фай. Простейшая сортировка - пузырьком: тут
Функция сортировки:
void BubbleSort(int *arr, int N){
for (int i = 0; i < N; i++)
for (int j = i + 1; j < N; j++)
if (arr[j] < arr[i]){
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
Вызываете как:
BubbleSort(p_darr, number);
Где number - размер массива.
Так же у вас массив заполняется просто числами от 0 до number. Если хотите считать данные из консоли то не p_darr[i] = i;
, а cin >> p_darr;
.
После сортировки просто выводите в файл как
for(int i = 0; i < number; ++i){
fp << p_darr[i] << ' ';
}
И так как массив динамический, а размер вводите из консоли, то нет смысла выделять такой большой объём памяти, после считывания cin >> number;
выделите массив размером p_darr = new int[number];
.
#include <iostream>
#include <fstream>
using namespace std;
void BubbleSort(int *arr, int N){
for (int i = 0; i < N; i++)
for (int j = i + 1; j < N; j++){
if (arr[j] < arr[i]){
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
int main ()
{
setlocale(0, "");
int number;
int *p_darr;
ofstream fp("number.txt");
cout << "Программа запишет целые числа в текстовый документ\n";
cout << "Для выхода из программы вместо числа напишите 0\n";
cout << "Введите целое число: ";
cin >> number;
p_darr = new int[number];
for (int i = 0; i < number; i++) {
cin >> p_darr[i];
}
BubbleSort(p_darr, number);
for(int i = 0; i < number; ++i){
fp << p_darr[i] << ' ';
}
fp.close();
delete [] p_darr;
cout << "\033[1;31mКоманда для завершения работы принята.\033[0m\n";
cout << "\033[1;31mРезультат записан в number.txt.\033[0m\n";
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Как строить графики с помощью Qt5? Qwt3D не обновлялся с 2007 года и вроде для Qt4Находил решение от частных лиц
Цель: при изменении размера окна, изменялся размер QGridLayout
В интернете множество библиотек связанных с Blur эффектами, но почему-то я не нашел библиотек и даже способов сделать Blur в LinearLayout Background
Код программы еще не закончен, но это часть заключается в переводе строки в массивВ строке вводим числа через пробел