Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <sstream>
- #include <iomanip>
- #include "windows.h"
- #define outputWidth 8
- using namespace std;
- bool isAcceptableChar(char x) {
- return (x >= '0' && x <= '9') || x == '-' || x == '+';
- }
- double* increaseArray(double* oldArray, unsigned int size, double newElement) {
- double* newArray = new double[size];
- if (newArray == NULL)
- return NULL;
- for (unsigned int i = 0; i < size - 1; i++)
- newArray[i] = oldArray[i];
- newArray[size - 1] = newElement;
- delete[] oldArray;
- return newArray;
- }
- void printArray(double* arr, unsigned int size) {
- cout << setw(10) << "Номера: ";
- for (unsigned int i = 0; i < size; i++) {
- cout << setw(outputWidth) << i + 1 << " ";
- }
- cout << endl;
- cout << setw(10) << "Элементы: ";
- for (unsigned int i = 0; i < size; i++) {
- cout << setw(outputWidth) << arr[i] << " ";
- }
- cout << endl;
- }
- int main()
- {
- system("cls");
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- string FNAME = "";
- ifstream fin;
- string s = "";
- string null = "";
- double a = 0;
- char c = ' ', q = ' ', k = ' ';
- unsigned int n = 0;
- bool broken = false;
- double* y = new double[n];
- while (!fin.is_open()) {
- cout << "Введите имя файла : ";
- cin >> FNAME;
- fin.open(FNAME);
- }
- while (fin.get() != EOF) {
- fin.unget();
- c = fin.get();
- q = c;
- if (q != ' ' && q != '\n')
- s.insert(s.begin() + s.size(), q);
- if (q == ' ')
- s.clear();
- c = fin.peek();
- fin.unget();
- if (isAcceptableChar(q) || ((q == ' ' || q == '\n') && isAcceptableChar(c))) {
- if (q == ' ' && isAcceptableChar(c))
- fin.ignore(1);
- fin >> a;
- if (fin.fail()) {
- cout << "Обнаружено переполнение типа в вводе значения под номером " << n + 1 << endl;
- if (n > 0)
- printArray(y, n);
- broken = true;
- break;
- }
- k = fin.peek();
- if (k == EOF) {
- n++;
- y = increaseArray(y, n, a);
- if (y == NULL) {
- cout << "Ошибка выделения памяти" << endl;
- broken = true;
- break;
- }
- broken = true;
- break;
- }
- else if (k != ' ' && k != '\n') {
- cout << endl << "Обнаружен как минимум один некорректный символ при вводе значения под номером " << n + 1 << endl;
- fin.ignore(1);
- k = fin.get();
- while (k != ' ') {
- s.insert(s.begin() + s.size(), k);
- k = fin.get();
- }
- cout << "Последовательность некорректных символов - " << s << endl << endl;
- broken = true;
- break;
- }
- else {
- n++;
- y = increaseArray(y, n, a);
- if (y == NULL) {
- cout << "Ошибка выделения памяти" << endl;
- broken = true;
- break;
- }
- }
- }
- else if (q != ' ' && !isAcceptableChar(q) && isAcceptableChar(c)) {
- cout << endl << "Обнаружен как минимум один некорректный символ при вводе значения под номером " << n + 1 << endl;
- fin.ignore(1);
- k = fin.get();
- while (k != ' ') {
- s.insert(s.begin() + s.size(), k);
- k = fin.get();
- }
- cout << "Последовательность некорректных символов - " << s << endl << endl;
- broken = true;
- break;
- }
- else
- fin.ignore(1);
- }
- if (!broken) {
- double* f = new double[n];
- for (unsigned int i = 0; i < n; i++) {
- f[i] = ((1 - y[i]) / (y[i] * y[i])) + ((y[i] <= 2) ? (2) : (3)) * y[i];
- }
- cout << endl << "Массив y" << endl;
- printArray(y, n);
- cout << endl << "Массив f" << endl;
- printArray(f, n);
- cout << endl;
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement