Другие языки программирования и технологии

помогите!!! вопрос по C++ нужно написать программку "заполните массив так, чтобы все его элементы были различны.

заполните массив так, чтобы все его элементы были различны. Размеры массива возьмите произвольно пожалуйста ну очень надо!!!!
1. можно заполнять просто по порядку (как предлогает Krab Bark)
2. Василий Воробей, рандомные числа могут при заполнении массива повториться и тогда не все элементы массива будут различны, что противоречит условию.

если заполнять случайными числами, то можно так:

// функция rand() генерирует рандомные числа на отрезке [0, 32767]

# include < iostream >
# include < cstdlib >
# include < math.h >
# include < ctime >

# define size 101 // - размер массива
# define R 32767.0 // - для рандома

using namespace std;

// эта функция проверяет есть ли элемент с заданым значением в массиве
// arr [ ] - сам массив
// n - размер
// index - показывает до какого элемента мы пока что заполнили массив
// number - число, на наличие которого проверяется массив
bool was_in_array ( int arr [ ] , const int n, int index, int number ) ;

int main ( )
{
srand ( time ( NULL ) ) ; // сид для рандома

// счётчик:
int i=0;

// переменная хранит сгенерированное рандомное число:
int r;

// сам массив :)
int array [ size ] ;

// цикл - пока не заполним все элементы
for ( i = 0 ; i < size ; i++)
{

// генерируем рандомное целое от 0 до размера массива - 1.
r = rand ( ) / R * ( size-1 ) ;

// если оно было в массиве (повторялось).. .
if( was_in_array ( array, size, ( i-1 ) , r ) )
{
// то повторим итерацию, заново сгенерировав число
i--;
}
else
{
// число не повторялось в массиве, сохраняем его в массив :)
array [ i ] = r ;
};
};

// посмотрим на наш массив:
cout < < " Array: " < < endl;
for ( i = 0 ; i < size ; i++)
cout < < array [ i ] < < " " ;

//завершаем.
cout < < endl ;
system ( " pause " ) ;
return 0 ;
}

bool was_in_array (int arr [ ] , const int n, int index, int number)
{
for( int k = 0 ; k < = index ; k++)
{
if ( arr [ k ] == number )
return true ;
} ;
return false ;
}

блин дописал, запостил и посмотрел на рейтинг Виталия Ефанова.
чувствую зря я старался.
Замир Расулов
Замир Расулов
873
Лучший ответ
нароД, оПомнитесь!... в задании не говорится про рандомное заполнение.
нужны N разных чисел.. .
разных, а не случайных.. .
числа от 1 до N включительно и будут такими разными числами...
Алексей Егоров
Алексей Егоров
70 655
main(){int a[100]; for(int i=0;i<100;i++)a[ i]=i;}
int a[15];

for (int i=0; i<15; i++) a[ i ]=random(100);

Не знаю рабочий ли код, в си опыт маленький, но смысл как-то так
заполнил масив по порядку, далее просто перемешай элементы будет тебе разные значения неповторяющиеся и не попорядку
# include< iostream >
#include < ctime >
#include < cstdlib >
using namespace std ;
int mas[10]={ 0 };
srand(time(NULL));
for( i = 0;i<10 ;i++)
mas[ i ]=i;
int a1, a2;// это для индексов перемешивания
for ( i=0 ; i<100 ; i++)
a1 = rand( ) % 10;
a2 = rand( ) % 10;//случайные индексы
swap ( mas [ a1 ] , mas [ a2 ] ) тут меняешь местами значения
чем выше счетчик перемешывания тем в принципе лучше перемешаетца чсло элементов можешь сделать хоть 1000

Похожие вопросы