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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.88
Nyuta
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 33
#1

Сортировка файла без использования массивов - C++

06.05.2009, 00:54. Просмотров 4500. Ответов 14
Метки нет (Все метки)

помогите, плиз, задачка простенькая. (не знаю, как отсортировать без массива)

дан файл целых чисел, отсортировать его, не используя массивы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2009, 00:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка файла без использования массивов (C++):

Сортировка, без использования массивов - C++
Скажите, пожалуйста, можно-ли, имея в "распоряжении" только операторы выбора и циклы(никаких массивов!) выполнить следующее задание: ...

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

Создать массив структур без использования массивов и нотации массивов - C++
Доброго времени суток! Есть задание, в котором нужно создать массив структур, имея следующую структуру: struct name { string...

Решить без использования массивов - C++
Даны шары 5-ти цветов: (Желтый, Синий, Зеленый, Красный, Черный). В таком порядке, в котором написано. Написать программу которая их...

Задача на вычисление суммы без использования массивов - C++
Надо вычислить сумму, для заданного числа n: Не знаю как делать. Можно ли сделать эту задачу без массива? Надо ли использовать...

Вывод всех перестановок без использования массивов - C++
Вот есть такая проблема: нужно вывести все возможные перестановки чисел от 1 до n тема жутко заезженная, есть рекурсивные подходы, есть...

14
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
06.05.2009, 06:19 #2
C++
1
2
3
4
5
6
7
8
9
         {
            fileOut.seekg(posp);
            fileOut << str2;
            posg = fileOut.tellg();
            fileOut << str1;
            fileOut.seekg(posg);
            posp = posg;
            continue;
         }
Учти, что исходный файл должен содержать только цифры разделенные пробелом, никаких букв, никаких знаков препинания.

Добавлено через 16 минут 9 секунд
Блин, отправил, а что отправил даже не глянул
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
//---------------------------------------------------------------------------
#include <iostream.h>
#include <fstream.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
   ifstream fileIn;
   fstream fileOut;
   unsigned int count = 0, posg = 0, posp = 0;
   int str1, str2;
   fileIn.open("input.txt");
   fileOut.open("output.txt");
   if (!fileIn.is_open() || !fileOut.is_open())
   {
      cout << "File error" << endl;
      exit(1);
   }
   while (!fileIn.eof())
   {
      fileIn >> str1;
      fileOut << str1 << " ";
      count++;
   }
   fileIn.close();
   fileOut.clear();
   fileOut.seekg(0);
   for (int i = 0; i < count - 1; i++)
   {
      for (int j = 0; j < count - i -1; j++)
      {
         fileOut >> str1;
         posg = fileOut.tellg() + 1;
         fileOut >> str2;
         if (str1 > str2)
         {
            fileOut.seekg(posp);
            fileOut << str2 << " ";
            posg = fileOut.tellg();
            fileOut << str1 << " ";
            fileOut.seekg(posg);
            posp = posg;
            continue;
         }
         else
         {
            fileOut.seekg(posg);
            posp = posg;
            continue;
         }
      }
      fileOut.clear();
      posg = posp = 0;
      fileOut.seekg(posg);
   }
   fileOut.close();
   system("pause");
   return 0;
}
//---------------------------------------------------------------------------
1
Nyuta
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 33
06.05.2009, 08:11  [ТС] #3
не компилится(
а что именно делает директива pragma?
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
06.05.2009, 08:18 #4
Каким компилятором пользуешься? Этот пример я на Borland C++ Builder 6 делал.
0
Nyuta
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 33
06.05.2009, 08:24  [ТС] #5
Dev-C++

Добавлено через 4 минуты 47 секунд
расскажи, плиз, что делают директивы pragma hdrstop и pragma argsused
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
06.05.2009, 08:54 #6
Если не ошибаюсь, сделай такой заголовок
C++
1
2
3
#include <iostream>
#include <fstream>
using namespace std;
Цитата Сообщение от Nyuta Посмотреть сообщение
расскажи, плиз, что делают директивы pragma hdrstop и pragma argsused
#pragma command вроде бы устанавливает различные опции для компилятора, что делают hdrstop argsused как то не интересовался, их builder сам добавляет в каждый новый проект, в принципе можешь их удалить.
1
Nyuta
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 33
06.05.2009, 08:56  [ТС] #7
спасибо большое. скачаю Borland C++
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
06.05.2009, 11:23 #8
Возможно кроме входного файла input.txt, заполненого числами через пробел, придется создать самой файл output.txt, только пустой.
0
Вложения
Тип файла: rar filesort.rar (96.6 Кб, 88 просмотров)
Nyuta
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 33
06.05.2009, 11:54  [ТС] #9
все заработало после повторной установки борланда. а как вывести содержимое этих текстовых файлов на экран, чтобы сравнить результаты, не открывая текстовые файлы вручную?
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
06.05.2009, 12:05 #10
Что-то в этом роде
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
fileIn.clear();
fileIn.seekg(0);
fileOut.clear();
fileOut.seekg(0);
cout << "Nachal'nyi fail" << endl;
while (!fileIn.eof())
{
   fileIn >> str1;
   cout << str1 << " ";
}
cout << endl << endl;
cout << "Otsortirovannyi fail" << endl;
while (!fileOut.eof())
{
   fileOut >> str1;
   cout << str1 << " ";
}
cout << endl << endl;
только fileIn.close() в 28 строке перениси в конец файла к fileOut.close()
0
Nyuta
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 33
06.05.2009, 12:21  [ТС] #11
а, начиная с какой строчки, это надо вставить?
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
06.05.2009, 12:42 #12
После цикла for между 58 и 59 строками.
0
Nyuta
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 33
06.05.2009, 12:50  [ТС] #13
[IMG]http://i8.***********.nyud.net/i3/81/3c/53545a2de5ddf0906ce404da831a.jpeg[/IMG]
в конце 2го файла на экране появляется мусор (в самом .txt его нет)
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
06.05.2009, 14:01 #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
while (!fileIn.eof())
   {
      fileIn >> str1;
      if (!fileIn.fail())
         cout << str1 << " ";
   }
   cout << endl << endl;
   cout << "Otsortirovannyi fail" << endl;
   while (!fileOut.eof())
   {
      fileOut >> str1;
      if (!fileOut.fail())
         cout << str1 << " ";
   }
   cout << endl << endl;
1
Nyuta
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 33
12.05.2009, 20:11  [ТС] #15
все просто супер) спасибо тебе огромное
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2009, 20:11
Привет! Вот еще темы с ответами:

Числа Фибоначчи без использования рекурсии и массивов - C++
int a, b=0, c=1; cout&lt;&lt;&quot;Введите число Фибоначчи: &quot;&lt;&lt;endl; cin&gt;&gt;a; for(int i=2;i&lt;=(a-3);i++) { a=b+c; b=c; ...

Найти максимальный по модулю член последовательности без использования массивов - C++
Дано натуральное число n, действительные числа a1, ..., an. Определить максимальный по модулю член последовательности. Составить...

Найти наиболее часто встречающееся число без использования массивов - C++
Дана задача: В массиве целых чисел с количеством элементов n найти наиболее часто встречающееся число. Если таких чисел несколько, то...

Шейкерная сортировка без использования while цикла - C++
Ребят, сделал шейкерную сортировку через два вложенных цикла - не работает. Не могу понять в чем проблема, подскажите пожалуйста. ...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
12.05.2009, 20:11
Ответ Создать тему
Опции темы

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