Нужно вывести одномерный массив с рандомными числами от нуля до семи, так чтобы цифры не повторялись, не знаю как реализовать. Если вам не трудно помогите пожалуйста. Вот мой код:
// laba 12.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include
#include
#include
#include
#include
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{srand(time(0));
setlocale(LC_ALL, "");
int i,j,a[8],x,y=0,b,kol=0,k,buf;
for(i=0;i<8;i++)
{
a[i]=rand()%7;
}
for(i=0;i<8;i++)
{cout<<a[i]<<" ";
}
cout<<endl;
system("pause");
return 0;
}
Другие языки программирования и технологии
Работаю в Visua C++ 2008. консольное приложение Win32/
Я не рекомендую Вам использовать вложенные циклы с условием для выделения не повторяющихся чисел - много будет ресурсов кушать. Оптимальнее будет создать отдельный массив заполненный в произвольном порядке числами от 0 до 7, и обращаться к его значениям. Можно задать рандомно индекс, с которого начинать считывать и шаг. Если шаг задавать рандомно, необходим учитывать, что при четном колич-ве элементов шаг должен быть нечетным числом, и наоборот, в другом случае. Ваш код не нужно менять особо, только дополните цикл, где идет заполнение массива а [8]. Сделать это можно, например, так:
int _tmain(int argc, _TCHAR* argv[])
{
srand(time(0));
const int n(8); int a[n];
int b[] = {0, 1, 4, 2, 7, 5, 6, 3};
int side(rand()%8); int step(2*rand()%4+1);
int index(side);
for (int i(0); i < 8; i++)
{
index+=step;
index = (index > 7)? index-8: index;
a[i] = b[index];
cout << a[i] << endl;
};
return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
srand(time(0));
const int n(8); int a[n];
int b[] = {0, 1, 4, 2, 7, 5, 6, 3};
int side(rand()%8); int step(2*rand()%4+1);
int index(side);
for (int i(0); i < 8; i++)
{
index+=step;
index = (index > 7)? index-8: index;
a[i] = b[index];
cout << a[i] << endl;
};
return 0;
}

А что не так в текущей реализации?
__Роман __
В данной реализации повторяются цифры1
В цикле генерации рандома вставить цикл проверки на присутствие нового числа в массиве. Если присутствует - не заносить.
int m;
int n=0;
int k;
while n<8 {
m=rand()%7;
k=0;
for (i=0;i<n;i++){
if (a[i]==m)
k=1;
}
if (k=0) {a[n]=m;n++}
}
}
если не ошибся
int m;
int n=0;
int k;
while n<8 {
m=rand()%7;
k=0;
for (i=0;i<n;i++){
if (a[i]==m)
k=1;
}
if (k=0) {a[n]=m;n++}
}
}
если не ошибся
int a[]={0,1,2,3,4,5,6,7};
for(int i=0;i<8;i++)
std::cout<<a[i]<<" ";не?
#include "iostream"
#include "ctime"
int main(){
srand(time(NULL));
int a[8],b,i=0;
while (i!=8){
int n = 1;
b = rand() % 8;
for (int j = 0; j < i; j++){
if (a[j] == b){
n = 0;
break;
}
}
if (n){
a[i] = b;
i++;
}
}
for (int i = 0; i < 8; i++)
std::cout << a[i]<<" ";
system("pause");
return 0;
}
for(int i=0;i<8;i++)
std::cout<<a[i]<<" ";не?
#include "iostream"
#include "ctime"
int main(){
srand(time(NULL));
int a[8],b,i=0;
while (i!=8){
int n = 1;
b = rand() % 8;
for (int j = 0; j < i; j++){
if (a[j] == b){
n = 0;
break;
}
}
if (n){
a[i] = b;
i++;
}
}
for (int i = 0; i < 8; i++)
std::cout << a[i]<<" ";
system("pause");
return 0;
}
Валерий Цалов
Там же с рандомными.
Петр Ефременко
тогда так как-нибудь
#include "iostream"
#include "ctime"
int main(){
srand(time(NULL));
int a[8],b,i=0;
while (i!=8){
int n = 1;
b = rand() % 8;
for (int j = 0; j < i; j++){
if (a[j] == b)
n = 0;
}
if (n){
a[i] = b;
i++;
}
}
for (int i = 0; i < 8; i++)
std::cout << a[i]<<" ";
system("pause");
return 0;
}
#include "iostream"
#include "ctime"
int main(){
srand(time(NULL));
int a[8],b,i=0;
while (i!=8){
int n = 1;
b = rand() % 8;
for (int j = 0; j < i; j++){
if (a[j] == b)
n = 0;
}
if (n){
a[i] = b;
i++;
}
}
for (int i = 0; i < 8; i++)
std::cout << a[i]<<" ";
system("pause");
return 0;
}
Похожие вопросы
- C++. Как создать Пустой проект консольного приложения Win32? После обновления VS не знаю как создать
- c#. Сортировка массива в отдельном методе. Консольное приложение.
- с++ для чего вообще нужны консольные приложения?
- [Delphi] консольное приложение, UDP
- Консольное приложение C#, программисты, выручайте)
- почему изначально изучают С++ консольных приложений? и какую библиотеку выбрать потом для создания GUI
- Нужно создать консольное приложение на языке С++ в visual studio 2017. Помогите, прошу !
- C# Актуальность Desktop приложений в 2020
- Как в Visual C++ 2008 express перевести тип int в string или char?
- где можно найти рабочую версию microsoft visual c++ 2008 (крякнутую)