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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2010, 00:50   #1
sasharu9
 
Регистрация: 28.04.2010
Сообщений: 5
По умолчанию Приблема по СИ (сортировка)

Проблема с сортировкой пузырька, не выводит правельный результат.
И просмотрите сортировку Шелла,тоже проблемы .
Ввожу первый раз 4,3,2,1 а вывод 1,3,2,4
а после второго раза прохождения всё нормально.

#include<stdio.h>
#include<conio.h>
#include<windows.h>
#include<string.h>
#include<iostream.h>
char s[100];
int *p;
int menu()
{
system("cls");
int a;
strcpy(s,"****** MENU ******");CharToOem(s,s);printf("%s \n",s);
strcpy(s,"1. Ввод массивов");CharToOem(s,s);printf("% s \n",s);
strcpy(s,"2. Сортировка");CharToOem(s,s);printf( "%s \n",s);
strcpy(s,"3. Вывод массива");CharToOem(s,s);printf("%s \n",s);
strcpy(s,"0. Выход");CharToOem(s,s);printf("%s \n",s);
strcpy(s," Сделайте свой выбор");CharToOem(s,s);printf("%s ",s);
scanf("%d",&a);
return a;
}

int menu_1()
{
system("cls");
int a;
strcpy(s,"Сортировка");CharToOem(s, s);printf("%s \n",s);
strcpy(s,"1.Пузырьком");CharToOem(s ,s);printf("%s \n",s);
strcpy(s,"2.Методом выбора");CharToOem(s,s);printf("%s \n",s);
strcpy(s,"3.Методом вставки");CharToOem(s,s);printf("%s \n",s);
strcpy(s,"4.Методом Шелла");CharToOem(s,s);printf("%s \n",s);
strcpy(s,"5.Методом Холла");CharToOem(s,s);printf("%s \n",s);
strcpy(s,"0. Выход");CharToOem(s,s);printf("%s \n",s);
strcpy(s," Сделайте свой выбор");CharToOem(s,s);printf("%s ",s);
scanf("%d",&a);
return a;
}



int The_size_of_a_file()
{
int length_1;
system("cls");
strcpy(s,"Введите размер массива ARRAY_1");CharToOem(s,s);printf("%s \n",s);
scanf("%d",&length_1);
getch();
return length_1;

}

int function_2(int number)
{

int i;
strcpy(s,"Ввод элементов массива ARRAY_1 через rand");CharToOem(s,s);printf("%s \n",s);

p=new int[number];

if(p==NULL){
exit(1);
}

strcpy(s,"Ввод элементов массива");CharToOem(s,s);printf("%s \n",s);
for(i=0;i<number;i++){

printf("[%d]=",i);
fflush(stdin);
scanf("%d",(p+i));
printf("%d",&p[i]);
}
getch();
return 0;
}

void swap(int*x,int*y)
{
int t;
t=*x;
*x=*y;
*y=t;
}


СОРТИРОВКА ПУЗЫРЬКОМ!!!!!

int bubble(int number)
{
int temp;
strcpy(s,"1.Сортировка Пузырьком");CharToOem(s,s);printf(" %s \n",s);
int i,j;
for(i=0;i<number;i++)

for(j=i;j<number;j++)

if(*(p+j)>*(p+j+1))
{
// temp=p[j];
// p[j]=p[j+1];
// p[j+1]=temp;
swap((p+j),(p+j+1));
}



strcpy(s,"Выполнена");CharToOem(s,s );printf("%s \n",s);

strcpy(s,"Вывод массива");CharToOem(s,s);printf("%s \n",s);
for(j=0;j<number;j++){

printf("%3d ",p[j]);
}
getch();
return 0;
}


int min_sort(int number)
{
strcpy(s,"Сортировка выбором");CharToOem(s,s);printf("%s \n",s);
int i,j,k;
int e;
int min;
for(i=0;i<number;i++)
{
e=0;
k=i;
min=p[i];
for(j=i+1;j<number;j++){
if(p[j]<min)
{
k=j;
min=p[j];
e=1;
}
}
if(e)
{
p[k]=p[i];
p[i]=min;
}
}
getch();
return 0;

}
int insert_sort(int number)
{
strcpy(s,"Сортировка");CharToOem(s, s);printf("%s \n",s);
int i,j;
int min;
for(i=1;i<number;i++){
min=p[i];
for(j=i-1;(j>=0)&&(min<p[j]);j--)
p[j+1]=p[j];
p[j+1]=min;
}


getch();
return 0;

}
int shell_sort(int number)
{
strcpy(s,"Сортировка");CharToOem(s, s);printf("%s \n",s);
int i,j,k,gap,x,*a;
a=p;


for(k=0;k<number;k++){
gap=a[k];
for(i=gap;i<number;i++)
{
x=p[i];
for(j=i-gap;(x<p[j])&&(j>=0);j=j-gap){
p[j+gap]=p[j];}
p[j+gap]=x;
}
}

getch();
return 0;

}
int holla_sort(int number)
{
strcpy(s,"Сортировка");CharToOem(s, s);printf("%s \n",s);
int i,j,x,y,left=0,right=number-1;
i=left; y=right;
x=p[(left+right)/2];
do{
while((p[i]<x)&&(i<right)) i++;
while((x<p[j])&&(j>left)) j--;

if(i<=j){
y=p[i];
p[i]=p[j];
p[j]=y;
i++; y--;
}
}while(i<=j);
// if(left<j)
getch();
return 0;

}
int function_16(int number)
{
int i;
strcpy(s,"Вывод массива");CharToOem(s,s);printf("%s \n",s);
for(i=0;i<number;i++){

printf("%3d ", p[i]);
}

getch();
return 0;

}






void main()
{
int b,b1,number;
do
{
system("cls");
b=menu();
switch(b)
{
case 1:
number=The_size_of_a_file();
function_2(number);
break;
case 2:
do
{
system("cls");
b1=menu_1();
switch(b1)
{
case 1:
bubble(number);
break;
case 2:
min_sort(number);
break;
case 3:
insert_sort(number);
break;
case 4:
shell_sort(number);
break;
case 5:
holla_sort(number);
break;
case 0:
break;


}

}
while(b1!=0);

break;
case 3:
function_16(number);
break;
case 0:
exit(0);
break;
default:
strcpy(s,"Неправельны ввод");CharToOem(s,s);printf("%s \n",s);
getch();
break;
}}

while(b!=0);

getch();
}
sasharu9 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль, Turbo Pascal, PascalABC.NET 11 11.03.2012 12:18
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57
Сортировка методом линейного выбора и "быстрая" сортировка Карол Помощь студентам 4 27.09.2009 19:52
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32