Работа со строками и файлами на с++
Нужно написать программу,которая из одного файла случайным образом выбирает 3 пункта списка и записывает в другой. Написала небольшой код, но не получается сделать так,чтобы числа были разными :(
include <iostream>
include <fstream>
include <string>
include <windows.h>
include <ctime>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int a, r1, r2, r3;
ifstream fin("ekz.txt");
ofstream fout("voprosi.txt");
string line;
cin >> a; // ввод количества строк в файле "ekz.txt"
srand(time(0));
r1 = 1 + rand() % a;
r2 = 1 + rand() % a;
r3 = 1 + rand() % a;
for (size_t line_no = r1; line_no && getline(fin, line);--line_no); //выводит строку под номером,заданным r1
fout << line << endl;
for (size_t line_no = r2; line_no && getline(fin, line);--line_no); //выводит строку под номером,заданным r2
fout << line << endl;
for (size_t line_no = r3; line_no && getline(fin, line);--line_no); //выводит строку под номером,заданным r3
fout << line << endl;
fout.close();
fin.close();
return 0;
}
Ответы (1 шт):
Автор решения: Pavel
→ Ссылка
Не совсем понял,что вам именно нужно,но если нужно сгенерировать случайным образом числа из определенного отрезка ,например [2,5],то вот решение.
rand()%(разница между границами+1)+левая граница
// если а-левая граница, b-правая, то:
rand()%(b-a+1) + a;