Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2013, 20:39   #1
marina12
Пользователь
 
Регистрация: 13.02.2013
Сообщений: 28
По умолчанию Сортировка методом пузырька

Здравствуйте!Задача - написать программу,которая бы сортировала вещественные числа из файла "Input" методом пузырькаи выводила бы отсортированную запись на экран. Помогите пожалуйста это реализовать.
Пока остановилась только на том,что открыла файл,проверила на открытие и динамически выделила память под массив:
Код:
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
 
int main ()
{
    FILE *fin,*fout;
    int i,size=0;
    double *mass;
    fin=fopen("Input.txt","r");
    if (fin==NULL)
    {
        fprintf(stderr,"Error opening file for read\n");
    }
    /* считаем количество чисел в файле */
    fscanf(fin, "%d", &i);    
    while (!feof(fin)) 
    {  
        ++size;
        fscanf (fin, "%d", &i);
    }
    /* создадим массив размера size*2 */
    int new_size = size*2;
    mass = (double *) malloc(sizeof(int)*new_size);
}
Что делать дальше?Использовать fgets() или как?
marina12 вне форума Ответить с цитированием
Старый 13.04.2013, 16:04   #2
tools
Форумчанин
 
Регистрация: 07.10.2008
Сообщений: 213
По умолчанию

Что-то у Вас типы данных перепутаны в нескольких местах...
Код:
#include <stdio.h>
#include <stdlib.h>

void BubbleSort(double *arr, int n)
{
    double temp;
    while(--n)
	for (int i=0; i<n ;i++)
	{
            if ( *(arr+i) > *(arr+i+1) ) 
	    {
	         temp = *(arr+i);
		 *(arr+i) = *(arr+i+1);
		 *(arr+i+1) = temp;
	     }
        }
}

int main()
{
    FILE  *fin;
    int amount = 0;
    double *darr;
    if ( !(darr = (double *)calloc(100,sizeof(double)) ) )
    {
         fprintf(stderr,"Allocation error!\n");
         exit(EXIT_FAILURE);
    }
    if ( !(fin=fopen("input","r") ) )
    {
         fprintf(stderr,"An error occurred while opening a file!\n");
	 exit(EXIT_FAILURE);
    }  
    for ( ; fscanf (fin, "%lf", darr+amount) != EOF ; ++amount ) ;		
    printf("After sorting:\n");
    BubbleSort(darr , amount);
    for (int i=0; i<amount; i++)
    printf("%4.4lf\n", *(darr+i));
    free(darr);
    exit(EXIT_SUCCESS);
}
tools вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива методом пузырька SashaBogush Помощь студентам 0 11.08.2012 15:08
Сортировка массива методом пузырька bonjovi Паскаль, Turbo Pascal, PascalABC.NET 8 30.01.2012 20:23
сортировка методом шейкера и пузырька Степан sapral Помощь студентам 1 12.01.2011 19:02
Сортировка методом пузырька fygas1991 Общие вопросы C/C++ 5 15.11.2009 21:39
сортировка методом двухпроходного пузырька. Net* Общие вопросы C/C++ 3 26.05.2008 07:17