![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 29.11.2012
Сообщений: 2
|
![]()
Вот что я сделал... #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[i] > data[j] ){ printf("шаг %d=\элемент%d\nменяется на элемент%d\n",h,data[i],data[j]); swap(data[i], data[j]); swapped = true; h++; for(i=0;i<size;i++) printf("%d\t",data[i]); system("pause"); }//end if }//end for if (gap == 1 && !swapped) break; }//end for }//end combSort Function 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[i]); fprintf(fp,"%d\t",data[i]); } combSort(data, size); printf( "После сортировки: \n"); fprintf(fp,"\nпосле сортировки\n"); for ( int i = 0; i < size; i++ ) {printf(" %d ",data[i]); fprintf(fp,"%d\t",data[i]); } fclose(fp);} if (k==2) { if((ft=fopen("Массив.txt","a+"))==N ULL) {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[i]); printf("%d\t",data[i]); } combSort(data, size); cout<<endl <<"После сортировки"<<endl; for ( int i = 0; i < size; i++ ){ printf("%d\t",data[i]); fprintf(fb,"%d\t",data[i]); }}} return 0; } |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
1 задача из КА ШАГ | omega911 | Общие вопросы C/C++ | 2 | 28.10.2011 08:42 |
Шаг в паскале | lezvion | Помощь студентам | 6 | 08.11.2010 16:46 |
на шаг назад... | malevich | Общие вопросы Delphi | 9 | 01.04.2007 20:50 |