Показать сообщение отдельно
Старый 01.05.2009, 00:37   #15 (permalink)
csbwalker
Member
 
Аватар для csbwalker
 
Регистрация: 03.03.2009
Сообщений: 87
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 187
По умолчанию

Вот код, комба из двух элементарнейших алгоритмов -
запись в динамический массив (один из вариантов)
сортировка массива (на википедии по "Сортировка выбором" выводит пример алгоритма для целых чисел, адаптируется путем замены "<" на "strcmp")

Собственно код:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char **Array;
int Count = 0;

// Функция добавления элемента в массив
void addElement(char *str)
{
	// Увеличиваем счетчик размера массива
	Count++;

	// Создаем или увеличиваем массив строк	
	if (Array == NULL)
		Array = malloc(sizeof(char *));
	else
		Array = realloc(Array, sizeof(char *) * Count);

	// Добавляем элемент в массив строк
	Array[Count - 1] = calloc(strlen(str) + 1, sizeof(char));

	// Записываем строку в массив
	strcpy(Array[Count - 1], str);
}

// Функция, меняющая две строки местами
void swapElements(int a, int b)
{
	char *tmp = Array[a];
	Array[a] = Array[b];
	Array[b] = tmp;
}

// Функция сортировки
void sortElements()
{
int i, min, j;

	for (i = 0; i < Count - 1; i++)
	{
		/* выбираем начальное значение мин. индекса */
        	min = i;

		/* поиск минимального индекса элемента */
		for (j = i + 1; j < Count; j++)
			if (strcmp(Array[j], Array[min]) < 0)
				min = j;

		/* замена значений местами */
		swapElements(i, min);
	}
}

// Запрос ввода и ввод из stdin следующей строки
int enterElement()
{
char buffer[71];

	printf( "Enter new string, null-length string for sort and stop:\n" );

	gets(buffer);

	if (strlen(buffer) == 0)
		return 0;

	addElement(buffer);

	return 1;
}

// Вывод содержимого массива на stdout
void printElements()
{
int i;
	for(i = 0; i < Count; i++)
		printf( "  String %02d: %s\n", i, Array[i] );
}

// Главная функция
int main()
{
	// Вводим набор строк
	while (enterElement());

	// Выводим массив до сортировки
	printf( "Before sort:\n" );
	printElements();

	// Сортируем
	sortElements();

	// Выводим массив после сортировки
	printf( "After sort:\n" );
	printElements();
	
	return 0;
}
P.S. по поводу хакеров
1. ну тут отнюдь не все хакеры) даже совсем-отнюдь-не все))))
2. информация даром и для всех - это хорошо, а вот "сделайте плиз прогу" это уже не для всех и не всегда, попадаются правда фрики вроде меня))

P.P.S. надеюсь код пригодится

Цитата:
Сообщение от blake Посмотреть сообщение
Ребят я стебанул просто) Ибо щас тут половина тем мои однокурсники
А вот это ты зря, т.к. я подумал (да и многие другие я думаю), что раз ты за $$ делаешь, то и твоя тема про задачу с Crc32 уже не актуальна... Соответственно помощи ты по большей части из-за этого и не дождался)) (ИМХО)

Цитата:
Сообщение от Le}{a Посмотреть сообщение
был конечно случай с макроассемблером который преподавали филфаку, но это была 1 лекция и очень нетрезвый препод, просто по пьяни спутал аудитории
Действительно забавно)))

Последний раз редактировалось csbwalker; 01.05.2009 в 00:43
csbwalker вне форума   Ответить с цитированием
Ads

Яндекс

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