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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2009, 19:40   #1
Darh
Пользователь
 
Регистрация: 13.09.2009
Сообщений: 75
По умолчанию Сортировка на Си (нужно срочно)

Здравствуйте. Проблема вот в чем: нужно чтобы генерировал числа по заданному диапазону, диапазон вводит пользователь (уже обращался по этому поводу, так ничего не подсказали).По моему способу он учитывает первую границу, а вторую просто складывает(((
И проверьте пожалуйста последний метод сортировки, почему то сортирует на 1 элемент меньше, чем есть.
Код:
#include "stdafx.h"
#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#include "iostream"
void main()
{
	int a[20],m,t,temp,i,j,a1[20],b[20],min,k,x,y;
	setlocale(LC_ALL, "rus");
	printf("Введите нижний диапазон:");
	scanf("%i",&x);
	printf("Введите верхний диапазон:");
	scanf("%i",&y);
	srand(time(NULL));
	for(int i=0;i<20;i++)
	{
		a[i]=rand()%y+x;
		printf("% i",a[i]);
	}		
	printf("\n\n");
	setlocale(LC_ALL, "rus");
	printf("\nВведите метод сортировки.\n1)пузырьковый метод\n2)метод вставкой\n3)сортировка посредством выбора\n");
	scanf("%i",&m);
	printf("Введите тип сортировки.\n1)по возростанию\n2)по убыванию\n");
	scanf("%i",&t);
	if((m==1)&&(t==1))
	{
		printf("Выбран пузырьковый метод по возростанию\n");
		for (int i=0;i<20;i++)
		{
			for (int j=i;j<20;j++)
			{
				if (a[i]>a[j])
				{
					temp=a[i];
					a[i]=a[j];
					a[j]=temp;
				}	
			}
			for(int k=0;k<20;k++)
			{
				printf ("%i ",a[k]);
			}
			printf ("\n");
		}
	}
	if((m==1)&&(t==2))
	{
		printf("Выбран пузырьковый метод по убыванию\n");
		for (int i=0;i<20;i++)
		{
			for (int j=i;j<20;j++)
			{
				if (a[i]<a[j])
				{
					temp=a[i];
					a[i]=a[j];
					a[j]=temp;
				}	
			}
			for(int k=0;k<20;k++)
			{
				printf ("%i ",a[k]);
			}printf ("\n");
		}
	}
	if((m==2)&&(t==1))
	{
		printf("Выбран метод вставкой по возростанию\n");
		for(i=0;i<20;i++)
		{
			if(i==0)a1[i]=a[i];
			else
			{
				for(j=i;j>=1;j--)
				{
						if(a[i]<a1[j-1])
						{
							a1[j]=a1[j-1];
							a1[j-1]=a[i];
						}
						else if(j==i)a1[j]=a[i];
				}
			} 
			for(int k=0;k<20;k++)
			{
				if(k<=i)
				{
					printf("%i ",a1[k]);
				}
				else 
				{
					a1[k]=0;
					printf("%i ",a1[k]);
				}	
			}
			printf("\n");
		}
          printf("\n");

	}
	if((m==2)&&(t==2))
	{
		printf("Выбран метод вставкой по убыванию\n");
		for(i=0;i<20;i++)
		{
			if(i==0)a1[i]=a[i];
			else
			{
				for(j=i;j>=1;j--)
				{
						if(a[i]>a1[j-1])
						{
							a1[j]=a1[j-1];
							a1[j-1]=a[i];
						}
						else if(j==i)a1[j]=a[i];
				}
                        printf("\n");

			}
			for(int k=0;k<20;k++)
			{
				if(k<=i)
				{
					printf("%i ",a1[k]);
				}
				else 
				{
					a1[k]=0;
					printf("%i ",a1[k]);
				}	
			}
			printf("\n");
		}
	}
	if((m==3)&&(t==1))
	{
		printf("Выбрана сортировка посредством выбора по возрастанию\n");
		min=a[0];
		k=0;
		for(i=0; i<20; i++)
		{
			min=a[i];
			k=i;
			for(j=1; j<20; j++)
			{
				if(a[j]<min)
				{
					min=a[j];
					k=j;
				}
			}
			b[i]=min;
			a[k]=123131;
			for(int k1=0; k1<i; k1++)
			{
				printf("%i ",b[k1]);
			}
			printf("\n");
		}
		
	}
	if((m==3)&&(t==2))
	{
		printf("Выбрана сортировка посредством выбора по убыванию\n");
		min=a[0];
		k=0;
		for(i=0; i<20; i++)
		{
		for(j=1; j<20; j++)
		{
			if(a[j]>min)
			{
				min=a[j];
				k=j;
			}
		}
		b[i]=min;
		a[k]=NULL;
		for(int k1=0; k1<i; k1++)
		{
			printf("%i ",b[k1]);
		}
		min=a[i];
		k=i;
		printf("\n");
		}
		printf("\n");
	}
	getch();
}
Darh вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Народ срочно нужно kp791 Фриланс 3 15.12.2009 19:07
НУжно срочно написать 2 программы Valik102 Паскаль, Turbo Pascal, PascalABC.NET 6 19.05.2009 18:04
"сортировка" при этом нужно нужно определить время рассортировки worshewitin Помощь студентам 4 12.05.2009 20:42