БлогNot. Генератор векторов по 3 элемента :)

Генератор векторов по 3 элемента :)

Обычно такие программки-секундки я не публикую, но сейчас сделаю исключение, так ещё могут понадобиться подобные варианты заданий.

Задача состоит в том, чтобы сгенерировать наборы по три вектора с именами A, B, C из трёх целочисленных элементов каждый.

Может быть задан разброс допустимых значений элементов, например, от -10 до 10 включительно.

Все три элемента каждого вектора должны быть различны между собой, чтобы не возникало матриц неполного ранга в дальнейших расчётах :)

Программка пишет векторы в файл data.txt текущей папки в виде

A=(-8,9,-9)
B=(-10,7,6)
C=(4,6,-10)

A=(0,2,-2)
B=(7,-1,-10)
C=(0,-1,1)

...

и т.д. Проверено и выполнено в консоли Visual Studio 2015.

#include <iostream> 
#include <fstream> 
#include <cstdlib> 
#include <ctime> 
using namespace std;

int main() {
 ofstream f("data.txt");
 srand(time(0));
 int a,b,c;
 char *names[] = {"A","B","C"};
 const int diap = 20; //разброс от нуля в обе стороны
 for (int i = 0; i < 30; i++) { //всего 30 наборов (A,B,C)
  for (int j=0; j<3; j++) {
   a = rand() % (diap+1) - diap / 2;
   do { b = rand() % (diap + 1) - diap / 2; } while (b==a);
   do { c = rand() % (diap + 1) - diap / 2; } while (c==b || c==a);
   f << names[j] << "=(" << a << "," << b << "," << c << ")" << endl;
  }
  f << endl;
 }
 f.close();
 cout << "OK";
 cin.get();
 return 0;
}

теги: учебное алгоритм c++ random

20.02.2019, 16:57; рейтинг: 508