Другие языки программирования и технологии
помогите!!! вопрос по 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 ;
}
блин дописал, запостил и посмотрел на рейтинг Виталия Ефанова.
чувствую зря я старался.
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 ;
}
блин дописал, запостил и посмотрел на рейтинг Виталия Ефанова.
чувствую зря я старался.
нароД, оПомнитесь!... в задании не говорится про рандомное заполнение.
нужны N разных чисел.. .
разных, а не случайных.. .
числа от 1 до N включительно и будут такими разными числами...
нужны N разных чисел.. .
разных, а не случайных.. .
числа от 1 до N включительно и будут такими разными числами...
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);
Не знаю рабочий ли код, в си опыт маленький, но смысл как-то так
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
# 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
Похожие вопросы
- Microsoft Visual C++ 6.0 В одномерном массиве, состоящем из n вещественных элементов, вычислить...
- Здравствуйте =) Очень нужна помощь. Нужно написать программку на c++.
- нужно написать программку на ассемблере, к-рая считает факториал числа n
- Помогите решить задачу C++. Найти номер строки, для которой среднее арифметическое значение ее элементов максимальна
- Помогите с кодом C#. Нужно удалять из строк начальные пробелы с помощью while, if, for, без специальных методов
- Помогите пожалуйста с программой нужно написать в си++
- «Помогите пожалуйста! Очень надо!! ! Нужно написать на языке Си (именно на СИ) . Заранее СПАСИБО!!!»
- 1.Заполнить массив случайными числами. Вывести элементы массива на экран. Заменить все его минимальные элементы нулями.
- помогите написать программку которая определяет среднее арифметическое непарных элементов массива.
- 1. Написать программу, которая заполняет массив целых чисел размеров 20 элементов значениями роста учащихся (случайные ч