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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2008, 20:06   #11
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от still_alive Посмотреть сообщение
Может, просто поменять его с последним?
Принимается. Последним, предпоследним и т.д.
B_N вне форума Ответить с цитированием
Старый 09.02.2008, 20:32   #12
Sota
Let's keep talking
Форумчанин Подтвердите свой е-майл
 
Аватар для Sota
 
Регистрация: 02.07.2007
Сообщений: 217
По умолчанию

Я конечно понимаю, вы люди опытные, но сам я программист "зелёный"))). Поэтому прошу примера, плз. Приведите в листинге маленькую программку, которая заполняет строковый массив случайными числами, без повторений.
Заранее благодарен.)
Лучше С++, чем ++С...
Sota вне форума Ответить с цитированием
Старый 09.02.2008, 21:52   #13
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Если объединить мой метод с усовершенствованием still_alive, то можно сделать так:

Код:
#include <stdio.h>
#include <stdlib.h>

#define ARRAY_SIZE	100

long array[ARRAY_SIZE];
long nCurBound = ARRAY_SIZE - 1;


void InitArray() { for(long i = 0; i < ARRAY_SIZE; i++) array[i] = i + 1; }

long GetRand()
{
	if(nCurBound > 0) {
		long i = rand() % nCurBound;

		long nResult = array[i];
		array[i] = array[nCurBound];
		array[nCurBound] = nResult;

		nCurBound--; 
		return nResult;
	}
	else {
		nCurBound = ARRAY_SIZE - 1;
		return array[0];
	}
}

int main()
{
	InitArray();

	// Здесь можно инициализировать генератор через srand

	for(long i = 0; i < ARRAY_SIZE; i++) printf("%d ", GetRand());
	printf("\n");
	return 0;
}
B_N вне форума Ответить с цитированием
Старый 09.02.2008, 22:10   #14
Sota
Let's keep talking
Форумчанин Подтвердите свой е-майл
 
Аватар для Sota
 
Регистрация: 02.07.2007
Сообщений: 217
По умолчанию

Огромное спасибо за код!
Лучше С++, чем ++С...
Sota вне форума Ответить с цитированием
Старый 11.02.2008, 10:45   #15
Alek86
Форумчанин
 
Регистрация: 25.09.2007
Сообщений: 189
По умолчанию

2 B_N
а теперь подумай, что делается быстрее - непроизвольный доступ или сдвиг ВСЕХ последующих элементов (в среднем 50 копирований)
Alek86 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Просто интерестно... Ніжний Диявол Свободное общение 5 14.07.2008 07:41
Просто, но справиться не могу. Небесный Общие вопросы Delphi 1 05.05.2008 11:32
Просто прошу HELP..... stalker Паскаль, Turbo Pascal, PascalABC.NET 7 13.02.2007 20:23
просто сныкать... Аlex Win Api 2 18.11.2006 04:49