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

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

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

Сортировка методом "Пузырек" - C++

26.04.2014, 21:43. Просмотров 492. Ответов 9
Метки нет (Все метки)

Здравствуйте, у меня вот такая проблемка, в файл input вводятся любые числа, и программа сортирует их и закидывает в файл output, так вот файл output пустой, и я не знаю где что нужно исправить((

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
#include <stdio.h>
#include <ctype.h>// toupper
#include <stdlib.h>
#include <locale.h>
 
#define N 255
 
FILE *fin,*fout;
 
int main()
{
 
    int i,j;
    int a[N];
    fin=fopen("input.txt","r");
    fout=fopen("output.txt","w");
 
 
{
        for(i = 0 ; i < N; i++)
           {
               scanf("%d", &a[i]);
           }
           for(i = 0 ; i < N ; i++)
               {
              // сравниваем два соседних элемента.
              for(j = 0 ; j < N - i - 1 ; j++) {
                  if(a[j] > a[j+1]) {
                     // если они идут в неправильном порядке, то
                     //  меняем их местами.
                     int tmp = a[j]; a[j] = a[j+1] ; a[j+1] = tmp;
                  }
               }
           }
       }
{
    fprintf(fout,"%d",a[N]);
}
 
    getchar();
    getchar();
 
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2014, 21:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка методом "Пузырек" (C++):

Исследование сортировки метода "пузырек" для большого массива - C++
Нужно реализовать сортировку большого массива методом &quot;пузырек&quot; (для 100, 1.000 и 10.000 элементов). Должен присутствовать ввод...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Сортировка двумерного массива методом вставок с "конфеткой" - C++
Доброго времени суток. Помогите разобраться со следующим заданием (в форуме С мне не помогли): Необходимо отсортировать двумерный...

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

сортировка структуры методом "пузырька" - C++
написал программу(динамическая структура работников фирмы), но не работает сортировка,если не сложно помогите(сортировку надо делать по...

Сортировка методом "быстрая сортировка" - C++
Здравствуйте! Имеется структура: struct BMS_Data { int* SortNodesList; double* NodesX; double* NodesY; ...

9
proech
10 / 10 / 2
Регистрация: 10.07.2013
Сообщений: 150
26.04.2014, 21:44 #2
Крашится чтоли?
файлы закрывать нужно
C++
1
2
fclose(fin);
fclose(fout);
0
Milayi
1 / 1 / 0
Регистрация: 26.04.2014
Сообщений: 39
26.04.2014, 21:47  [ТС] #3
аа это да, я забыла. но ошибку это не исправило, он просто отсортированные числа не записывает в output. файл пустой
0
Croessmah
Эксперт CЭксперт С++
13512 / 7670 / 866
Регистрация: 27.09.2012
Сообщений: 18,870
Записей в блоге: 3
Завершенные тесты: 1
26.04.2014, 21:50 #4
C++
1
2
3
int a[N];
//...
fprintf(fout,"%d",a[N]);
И что Вы пытаетесь таким макаром записать? Да плюс ко всему ищи и выход за пределы массивы

Добавлено через 28 секунд
как-то так:
C++
1
2
for(i = 0 ; i < N; i++)
   fprintf(fout,"%d ",a[i]);
0
proech
10 / 10 / 2
Регистрация: 10.07.2013
Сообщений: 150
26.04.2014, 21:51 #5
ты же не считываешь из файла
fscanf() нужно использовать
0
Milayi
1 / 1 / 0
Регистрация: 26.04.2014
Сообщений: 39
26.04.2014, 21:57  [ТС] #6
добавила fscanf и он начал аварийно завершать программу
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
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
#define N 255
 
FILE *fin,*fout;
 
int main()
{
 
    int i,j;
    int a[N];
    fin=fopen("input.txt","r");
    fout=fopen("output.txt","w");
 
 
{
        for(i = 0 ; i < N; i++)
 
        fscanf("%d", &a[i]);
 
           for(i = 0 ; i < N ; i++)
               {
              // сравниваем два соседних элемента.
              for(j = 0 ; j < N - i - 1 ; j++) {
                  if(a[j] > a[j+1]) {
                     // если они идут в неправильном порядке, то
                     //  меняем их местами.
                     int tmp = a[j]; a[j] = a[j+1] ; a[j+1] = tmp;
                  }
               }
           }
       }
{
        for(i = 0 ; i < N; i++)
        fprintf(fout,"%d ",a[i]);
 
    fclose(fin);
    fclose(fout);
}
 
    getchar();
    getchar();
 
}
0
proech
10 / 10 / 2
Регистрация: 10.07.2013
Сообщений: 150
26.04.2014, 22:00 #7
fscanf()не так используется
fscanf(fin,"%d",&a[i]);
0
Milayi
1 / 1 / 0
Регистрация: 26.04.2014
Сообщений: 39
26.04.2014, 22:04  [ТС] #8
все равно не работает(((
0
proech
10 / 10 / 2
Регистрация: 10.07.2013
Сообщений: 150
26.04.2014, 22:15 #9
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
создаёте файл input.txt добавляете такие числа в него
5 12 18 17 (например)
оно выводит 5 12 17 18 в файл.
заработало

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
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
#define N 4
 
FILE *fin,*fout;
 
int main()
{
 
    int i,j;
    int a[N];
    fin=fopen("input.txt","r");
    fout=fopen("output.txt","w");
 
 
{
        for(i = 0 ; i < N; i++)
 
        fscanf( fin,"%d", &a[i]);
 
           for(i = 0 ; i < N ; i++)
               {
              // ?????????? ??? ???????? ????????.
              for(j = 0 ; j < N - i - 1 ; j++) {
                  if(a[j] > a[j+1]) {
                     // ???? ??? ???? ? ???????????? ???????, ??
                     //  ?????? ?? ???????.
                     int tmp = a[j]; a[j] = a[j+1] ; a[j+1] = tmp;
                  }
               }
           }
       }
{
        for(i = 0 ; i < N; i++)
        fprintf(fout,"%d ",a[i]);
 
    fclose(fin);
    fclose(fout);
}
 
    getchar();
    getchar();
 
}
1
Milayi
1 / 1 / 0
Регистрация: 26.04.2014
Сообщений: 39
27.04.2014, 20:48  [ТС] #10
спасибо большоооооее)) все теперь действительно заработало))
0
27.04.2014, 20:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2014, 20:48
Привет! Вот еще темы с ответами:

Сортировка методом "пузырька" - C++
столкнулся с проблемой при выводе значений массива по-убыванию (если вводить последовательность, то сначала выведет первый введённый...

Сортировка методом "пузырька" - C++
Реализовать решение в виде функций ввода, вывода и обработки массивов. Отсортируйте в массиве положительные элементы по возрастанию,...

Написать код шифрования методом "Змеиный" и "Спиральный" - C++
весь интернет перерыл, не могу найти ничего нормального, если кто может или знает напишите хоть ссылки, срочно нужно

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...


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

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

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