Нужно Сделать Шаг Вперед И Шаг Назад В Сортировке Расческой

Тема в разделе "C/C++/C#", создана пользователем DeadGod, 29 ноя 2012.

Статус темы:
Закрыта.
  1. DeadGod

    DeadGod Гость

    Вот что сделал я #include <algorithm>
    #include <iostream>
    #include<windows.h>
    using namespace std;
    //newGap Function
    double createGap( double gap )
    {
    gap = ( gap * 10 ) / 1.3;

    if ( gap == 9 || gap == 10 )
    gap = 11;
    if (gap < 1)
    gap = 1;
    return gap;

    }//end newGap Function


    void combSort(int *data, int size)
    {
    int gap = size,h=1;
    while(true) {
    gap = createGap( gap );
    bool swapped = false;
    for (int i = 0; i < size - gap; i++) {
    int j = i + gap;
    if ( data > data[j] ){
    printf("шаг %d=\элемент%d\nменяется на элемент%d\n",h,data,data[j]);
    swap(data, data[j]);
    swapped = true;
    h++;
    for(i=0;i<size;i++)
    printf("%d\t",data);
    }//end if

    }//end for

    if (gap == 1 && !swapped)
    break;
    }//end for
    }//end combSort Function
    void vivod(int *data,int size)
    {
    int i;
    for(i=0;i<size;i++)
    {printf(" %d ",data);}}



    int main()
    {
    int size,h,k;
    SetConsoleOutputCP(1251);
    FILE*fp,*ft,*fb;
    fp=fopen("запись массива(руч).txt","w");
    printf("введите 1,если строку нужно вводить с клавиатуры,или 2 если с файла\n ");
    scanf("%d",&k);
    if(k!=1 && k!=2)
    {
    printf("Введенные данные не верны!");
    exit(0);
    return 0;
    }
    if(k==1)
    {
    printf("размерность=");
    scanf("%d",&size);
    int *data = new int[size];
    printf("До сортировки:\n");
    fprintf(fp,"До сортировки\n");
    for ( int i = 0; i < size; i++ )
    {
    printf("data[%d]=",i+1);
    scanf("%d",&data);
    fprintf(fp,"%d\t",data);
    }
    combSort(data, size);
    printf( "После сортировки: \n");
    fprintf(fp,"\nпосле сортировки\n");
    for ( int i = 0; i < size; i++ )
    {printf(" %d ",data);
    fprintf(fp,"%d\t",data);
    }
    fclose(fp);}
    if (k==2)
    {
    if((ft=fopen("Массив.txt","a+"))==NULL)
    {perror("ошибка");
    system("PAUSE");
    system("cls");
    return 0;}
    fb=fopen("запись в файл(считанного отсортированого).txt","w");
    {fscanf(ft,"%d",&size);
    cout<<"Размерность="<<size<<endl;
    int *data = new int[size];
    cout<<"Считанный массив"<<endl;
    for ( int i = 0; i < size; i++ )
    {fscanf(ft,"%d",&data);
    printf("%d\t",data);
    }
    combSort(data, size);
    cout<<endl <<"После сортировки"<<endl;
    for ( int i = 0; i < size; i++ ){
    printf("%d\t",data);
    fprintf(fb,"%d\t",data);
    }}}}
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    на вики ведь есть готовое решение. В чем проблема?
     
  3. DeadGod

    DeadGod Гость

    Я сортировку саму прописал,но не знаю как прописать
    Главное окно программы должно содержать панель управления, область для ввода исходных данных и область для визуализации процесса выполнения алгоритма. Панель управления должна содержать следующие кнопки:
    Шаг вперед – нажатие на эту кнопку начинает процесс отладки. Программа выполняет очередной шаг алгоритма, отображает новое состояние в области визуализации и краткую информацию того что будет сделано на следующем шаге;
    и
    Шаг назад – программа возвращается на предыдущий шаг алгоритма, отображает предыдущее состояние в области визуализации и краткую информацию того что будет сделано на следующем шаге;
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей