Advertisement
Guest User

Untitled

a guest
Jan 9th, 2020
345
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.89 KB | None | 0 0
  1. //Задание №3
  2. #include <iostream>
  3. #include <Windows.h>
  4. #include <random>
  5. #include <fstream>
  6.  
  7. const int MAX_RAND_NUM = 72;
  8.  
  9. int randNum() // генерируем "случайное" число
  10. {
  11.     std::random_device rd;
  12.     std::mt19937 mersenne(rd());
  13.     return mersenne() % MAX_RAND_NUM + 1;
  14. }
  15.  
  16. void inputСheck(int& num) // ввод числа (длины массива) с проверкой
  17. {
  18.     while (!(std::cin >> num) || (std::cin.peek() != '\n') || !(num > 0)) {
  19.         std::cin.clear();
  20.         std::cin.ignore(SHRT_MAX, '\n');
  21.         std::cout << "Error! Повторите ввод : ";
  22.     }
  23.     std::cin.ignore(SHRT_MAX, '\n');
  24. }
  25.  
  26. void writeFile(int numbers) // записываем случ. числа в файл
  27. {
  28.     std::ofstream out_f("C://my_file.txt"); // создаем объект ofstream
  29.     while (numbers-- != 0)
  30.         out_f << randNum() << " "; // записываем данные
  31.     out_f.close(); // закрываем файл
  32. }
  33.  
  34. void readFile(std::vector<int>& vec) // считываем числа из файла в массив
  35. {
  36.     std::ifstream in_f("C://my_file.txt"); // создаем объект ifstream
  37.     int num;
  38.     if (in_f.is_open()) { // или if (my_file), если файл найден и успешно открыт
  39.         while (in_f && in_f >> num) // пока нет ошибок и EOF, извлекаем данные
  40.             vec.push_back(num); // присваиваем данные в вектор
  41.         in_f.close(); // закрываем файл
  42.     }
  43.     else
  44.         std::cout << "Файл \"C://my_file.txt\" не обнаружен\n";
  45. }
  46.  
  47. void output(std::vector<int>& vec) //выводим результат
  48. {
  49.     std::cout << "\nЧисла из файла :\n";
  50.     for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {
  51.         std::cout.width(4); // ширина поля числа
  52.         std::cout << *it << "\t"; // выводим числа
  53.         for (int i{ 0 }; i < *it; ++i)
  54.             std::cout << '*'; // выводим звездочки
  55.         std::cout << std::endl;
  56.     }
  57. }
  58.  
  59. int main()
  60. {
  61.     SetConsoleCP(1251); SetConsoleOutputCP(1251);
  62.     std::cout << "Программа считывает из файла целые числа, которые рандомно генерируются в диапазоне от 1 до 72.\n"
  63.         "Для каждого считанного числа выводится строка, содержащая соответствующее количество звёздочек\n"
  64.         "Введите целое положительное целое число (количество чисел для ввода в файл) : ";
  65.     int numbers;
  66.     std::vector<int>vec;
  67.     inputСheck(numbers); // ввод числа и проверка
  68.     writeFile(numbers); // записываем случ. числа в файл
  69.     readFile(vec); // считываем числа из файла в массив
  70.     output(vec); //выводим результат
  71.     return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement