Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 25.09.2011, 18:37   #1 (permalink)
Анна6699
Новичок
 
Регистрация: 25.09.2011
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите-не идет программа в C++Builder 6.

Очень надо как можно быстрее сделать, а я в ступоре-вроде должно быть все правильно( синтаксис ошибок не выдает точно). Понимаю, что многовато, но может кто-нибудь глянет..
Суть программы-2 метода сортиовки и 2 поиска в однострочном массиве. И по ходу дела надо высчитывать сколько перестановок и сравнений он делает.
Буду очень благодарна, если поможете. А то тут у нас универ с Горным сливается и всех с долгами отчисляют(((((
---
Код:
void OtbSort (int a[], int N, int *Srv, int *Per)		
{ int min,index,temp;
 for (int i = 0; i < N - 1; i++)
{
//задаем начальные значения
min = a[i];
index = i;
//цикл перебора элементов массива
for (int j = i; j < N+1; j++)
{
//находим минимальный элемент
if (min > a[j])
{
//запоминаем минимальный элемент и его индекс
min = a[j];
index = j;
}
}
//меняем элементы массива местами
temp = a[i];
a[i] = a[index];
a[index] = temp;
*Srv +=1;
*Per +=1;
}
}
// }

//---------------------------------------------------------------------------
 //---------------------------------------------------------------------------

//*****сортировка вставками*****
void VstSort(int a[], int size, int *Srv, int *Per)
{
	int x, i, j;
	for (i=0; i<size; i++)
	{  // цикл проходов, i - номер прохода
		x=a[i];
		*Srv+=1; //количество сравнений
		// поиск места элемента в готовой последовательности
		for (j=i-1; j>=0 && a[j]>x; j--)
		{
			a[j+1]=a[j];  	// сдвигаем элемент направо, пока не дошли
			*Srv+=1;
			*Per+=1; //количество перестановок
		}
		// место найдено, вставить элемент
		a[j+1]=x;
	}
}//**********


//*****заполнить(fill) массив из неотсортированного поля*****
void fillMas1 (int a[])
{
	int i;
	for (i=0; i<=9; i++)//присваиваем значения из Memo1 в массив
	{
		a[i]=StrToInt(Form1->Memo1->Lines->Strings[i]);
	}
}//**********

//*****заполнить(fill) массив из отсортированного поля*****
void fillMas2 (int a[])
{
	int i;
	for (i=0; i<=9; i++)//присваиваем значения из Memo2 в массив
	{
		a[i]=StrToInt(Form1->Memo2->Lines->Strings[i]);
	}
}//**********

//*****заполнить(fill) поле отсортированным массивом*****
void fillMas3 (int a[])
{
	int i;
	for (i=0; i<=9; i++)//присваиваем массив в Memo2
	{
		Form1->Memo2->Lines->Strings[i]= a[i];
	}
}//**********

//*****Прямой поиск*****
int Wan (int a[], int x, int *kol)
{	//(массив, число которое ищем, количество операций)
	int i;
	for (i=0; i<10; i++)
	{  //сравнивая с каждым элементом массива ищем искомое число
		*kol+=1; //считаем количество операций
		if (x==a[i]) return i; //если нашли х возвращаем его место
	}
	return -1; //если искомого числа в массиве нет - возвращаем -1
}//**********

//*****Бинарный поиск*****
int Bi(int a[], int x, int *kol)
{
	int up=0, down=10, i;//i - номер проверяемой ячейки
	while (up<=down){ //up и down - верхняя и нижняя граница массива
			 *kol+=1; //количество операций
			 i = up+(down-up)/2;
			 if (x==a[i]) return i; 
			 if (x>a[i]) up=i+1; 
			 else down=i-1; 
		 }
	return -1; //если искомый элемент не найден, возвращаем -1
}//**********
//---------------------------------------------------------------------------
void __fastcall TForm1::otbClick(TObject *Sender)
{  //сортировка Отбором
        int Mas[10], N=10, Srv=0, Per=0;
	fillMas1(Mas);//функция заполнит массив значениями из не отсортированного поля
        OtbSort (Mas,N,&Srv,&Per);//функция сортировки Вставками
	fillMas3 (Mas);//функция заполнит поле сортированным массивом
	Edit1->Text= Srv;//вывод количества сравнений
	Edit2->Text= Per;//вывод количества перестановок
	Edit3->Text= Srv +10*Per;//вывод эффективности
        
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Poisk1Click(TObject *Sender)
{
//прямой поиск в неупорядоченном массиве
	int Mas[10], x, kol=0, t=0;
	x = StrToInt(zpr->Text);//присваиваем переменной число, которое собираемся найти
	fillMas1(Mas);//функция заполнит массив значениями из не отсортированного поля
	t = Wan(Mas,x,&kol);/* функция возвратит значение строки искомого элемента и присвоит переменной kol количество операций затраченных на поиск числа.	Если возвращаемое значение равно -1, это значит что искомого числа нет в массиве, и его позиция в строке будет значиться как N */
	Edit4->Text=kol; //выводим количество операций
	if (t != -1) Edit5->Text=t+1; else Edit5->Text="N";
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Poisk2Click(TObject *Sender)
{
//прямой поиск в упорядоченном массиве
	int Mas[10], x, kol=0, t=0;
	if (Form1->Memo2->Lines->Strings[0] == "")//перед поиском проверим отсортированность массива
	{//если массив не отсортирован - выведем на экран сообщение
		ShowMessage("ОТСОРТИРУЙТЕ массив");
		return;
	}
	x=StrToInt(zpr->Text);//присваиваем переменной число, которое собираемся найти
	fillMas2(Mas);//функция заполнит массив значениями из отсортированного поля
	t=Wan(Mas,x,&kol);/* функция возвратит значение строки искомого элемента и присвоит переменной kol количество операций затраченных на поиск числа.	 Если возвращаемое значение равно -1, это значит что искомого числа нет в массиве, и его позиция в строке будет значиться как N */
	Edit9->Text=kol; //выводим количество операций
	if (t != -1) Edit11->Text=t+1; else Edit11->Text="N";

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Poisk3Click(TObject *Sender)
{
//бинарный поиск в упорядоченном массиве
	int Mas[10], x, kol=0, t=0;
	if (Form1->Memo2->Lines->Strings[0] == "")//перед поиском проверим отсортированность массива
	{//если массив не отсортирован - выведем на экран сообщение
		ShowMessage("ОТСОРТИРУЙТЕ массив");
		return;
	}
	x = StrToInt(zpr->Text);//присваиваем переменной число, которое собираемся найти
	fillMas2(Mas);//функция заполнит массив значениями из отсортированного поля
	t = Bi(Mas,x,&kol);/* функция возвратит значение строки искомого элемента и присвоит переменной kol количество операций затраченных на  поиск числа. Если возвращаемое значение равно -1, это значит что искомого числа нет в массиве, и его позиция в строке будет значиться как N */
	Edit12->Text=kol; //выводим количество операций
	if (t != -1) Edit12->Text=t+1; else Edit12->Text="N";


}
//---------------------------------------------------------------------------

void __fastcall TForm1::vstClick(TObject *Sender)
{
//сортировка Вставками
        int Mas[10], N=10, Srv=0, Per=0;
	fillMas1 (Mas);//функция заполнит массив значениями из не отсортированного поля

	VstSort (Mas,N,&Srv,&Per);//функция сортировки Вставками
	fillMas3 (Mas);//функция заполнит поле сортированным массивом
	Edit1->Text= Srv;//вывод количества сравнений
	Edit2->Text= Per;//вывод количества перестановок
	Edit3->Text= Srv +10*Per;//вывод эффективности
}
//---------------------------------------------------------------------------

void __fastcall TForm1::vihClick(TObject *Sender)
{
Close();//закрытие программы        
}
//-----------------------------------
Анна6699 вне форума   Ответить с цитированием

Старый 25.09.2011, 18:37
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Возможно, что решение вашего вопроса обсуждалось в похожих темах

Не идет напряжение к IDE устройствам
Игра как-то быстро идет
Программирование в среде C++Builder не могу понять где ошибка
Помогите пожалуйста решить задачки на C++Builder 6. Заранее благодарю
Модульное программирование в Borland Builder С++
Нарисуем звезду в builder 6 C++

Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 21:43.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.