Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- void outputTask() {
- setlocale(LC_ALL, "Rus");
- cout << "Данная программа считает и выводит треугольник Паскаля." << endl;
- }
- void outputAnswer(int** arr, int rows) {
- bool isNotCorrect;
- string path;
- cout << "Треугольник Паскаля: " << endl;
- for (int i = 0; i < rows; i++) {
- for (int k = (rows - i); k >= 0; --k) {
- cout << " ";
- }
- for (int j = 0; j < (i + 1); j++) {
- cout << arr[i][j] << " ";
- }
- cout << "\n";
- }
- do {
- isNotCorrect = false;
- cout << "\nВведите путь файла для вывода: " << endl;
- cin >> path;
- ofstream fout(path, fstream::app);
- if ((fout.is_open()) and ((path[size(path) - 1] == 't') and (path[size(path) - 2] == 'x') and (path[size(path) - 3] == 't') and (path[size(path) - 4] == '.'))) {
- cout << "Файл успешно открыт!" << endl;
- fout.close();
- }
- else {
- cout << "Ошибка открытия файла" << endl;
- isNotCorrect = true;
- }
- } while (isNotCorrect);
- ofstream fout(path, fstream::app);
- fout << "Треугольник Паскаля: " << endl;
- for (int i = 0; i < rows; i++) {
- for (int k = (rows - i); k >= 0; --k) {
- fout << " ";
- }
- for (int j = 0; j < (i + 1); j++) {
- fout << arr[i][j] << " ";
- }
- fout << "\n";
- }
- fout.close();
- cout << "Ответ записан в файл." << endl;
- }
- int** arrayCount(int size) {
- int** arr = new int* [size];
- for (int i = 0; i < size; i++) {
- arr[i] = new int[i + 1];
- arr[i][0] = 1;
- arr[i][i] = 1;
- }
- for (int i = 2; i < size; i++) {
- for (int j = 1; j < i; j++) {
- arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
- }
- }
- return arr;
- }
- string choicePath() {
- string path;
- bool isNotCorrect;
- do {
- isNotCorrect = false;
- cout << "Введите путь файла: " << endl;
- cin >> path;
- ifstream fin(path);
- if (fin.is_open() and ((path[size(path) - 1] == 't') and (path[size(path) - 2] == 'x') and (path[size(path) - 3] == 't') and (path[size(path) - 4] == '.'))) {
- cout << "Файл успешно открыт!" << endl;
- }
- else {
- cout << "Ошибка открытия файла!" << endl;
- isNotCorrect = true;
- }
- fin.close();
- } while (isNotCorrect);
- return path;
- }
- int inputSizeFromConsole() {
- bool isNotCorrect;
- int size;
- do {
- isNotCorrect = false;
- cout << "Введите количество строк треугольника Паскаля, необходимых для вывода: " << endl;
- cin >> size;
- if (cin.fail() or (size < 1)) {
- isNotCorrect = true;
- cout << "Неверный ввод данных!" << endl;
- cin.clear();
- while (cin.get() != '\n');
- }
- } while (isNotCorrect);
- return size;
- }
- int inputSizeFromFile(string path) {
- int size;
- ifstream fin(path);
- fin >> size;
- if (fin.fail() or (size < 1)) {
- cout << "Ошибка! Введите корректный размер с консоли." << endl;
- size = inputSizeFromConsole();
- }
- fin.close();
- return size;
- }
- int inputFromFIle() {
- string path;
- int size;
- cout << "При вводе с файла учтите, что на ПЕРВОЙ строке должно быть записано количество строк, необходимых для вывода." << endl;
- path = choicePath();
- size = inputSizeFromFile(path);
- return size;
- }
- int sourceChoice() {
- int choiceNumber, size;
- bool isNotCorrect;
- cout << "Выберите, откуда будут выводиться данные: " << endl;
- do {
- isNotCorrect = false;
- cout << "Введите 0, если с консоли; введите 1, если с файла." << endl;
- cin >> choiceNumber;
- if (cin.fail() or ((choiceNumber != 0) and (choiceNumber != 1))) {
- isNotCorrect = true;
- cout << "Данные введены неккоректно" << endl;
- cin.clear();
- while (cin.get() != '\n');
- }
- } while (isNotCorrect);
- if (choiceNumber == 0) {
- size = inputSizeFromConsole();
- }
- else {
- size = inputFromFIle();
- }
- return size;
- }
- int main() {
- int size;
- int** arr;
- outputTask();
- size = sourceChoice();
- arr = arrayCount(size);
- outputAnswer(arr, size);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement