Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- int f1(int a)
- {
- if (a == 0)
- return 1;
- else
- if (a == 1)
- return 0;
- else
- if (a == 2)
- return 3;
- else
- if (a == 3)
- return 2;
- else
- if (a == 4)
- return 6;
- else
- if (a == 5)
- return 9;
- else
- if (a == 6)
- return 7;
- else
- if (a == 7)
- return 8;
- else
- if (a == 8)
- return 5;
- else return 4;
- }
- int f2(int a)
- {
- if (a == 0)
- return 5;
- else
- if (a == 1)
- return 2;
- else
- if (a == 2)
- return 6;
- else
- if (a == 3)
- return 1;
- else
- if (a == 4)
- return 7;
- else
- if (a == 5)
- return 3;
- else
- if (a == 6)
- return 9;
- else
- if (a == 7)
- return 4;
- else
- if (a == 8)
- return 8;
- else return 0;
- }
- int f3(int a)
- {
- if (a == 0)
- return 2;
- else
- if (a == 1)
- return 3;
- else
- if (a == 2)
- return 4;
- else
- if (a == 3)
- return 7;
- else
- if (a == 4)
- return 8;
- else
- if (a == 5)
- return 9;
- else
- if (a == 6)
- return 1;
- else
- if (a == 7)
- return 5;
- else
- if (a == 8)
- return 6;
- else return 9;
- }
- char p4(int a)
- {
- if (a == 0)
- return 'и';
- else
- if (a == 1)
- return 'л';
- else
- if (a == 2)
- return 'и';
- else
- if (a == 3)
- return 'и';
- else
- if (a == 4)
- return 'л';
- else
- if (a == 5)
- return 'л';
- else
- if (a == 6)
- return 'л';
- else
- if (a == 7)
- return 'и';
- else
- if (a == 8)
- return 'и';
- else return 'л';
- }
- char p5(int a)
- {
- if (a == 0)
- return 'л';
- else
- if (a == 1)
- return 'и';
- else
- if (a == 2)
- return 'и';
- else
- if (a == 3)
- return 'л';
- else
- if (a == 4)
- return 'л';
- else
- if (a == 5)
- return 'л';
- else
- if (a == 6)
- return 'л';
- else
- if (a == 7)
- return 'л';
- else
- if (a == 8)
- return 'и';
- else return 'и';
- }
- bool read(ifstream &f, int **a, int L)
- {
- bool t = true;
- int k, b;
- for (int i = 1; i <= L&&t; i++)
- {
- f >> b;
- if (b == 3)
- {
- f >> k;// считываем номер команды
- if(k>0||k<L)
- for (int j = 1; j <= 2; j++)
- f >> a[k][j];
- else { cout << "Не может быть команды с таким номером" << k << endl; t = false; }
- }
- else
- if(b==4)
- {
- f >> k;// считываем номер команды
- if (k>0 || k<L)
- for (int j = 1; j <= 3; j++)
- f >> a[k][j];
- else { cout << "Не может быть команды с таким номером" << k << endl; t = false; }
- }
- }
- return t;
- }
- int main()
- {
- ifstream in("Text.txt");
- setlocale(LC_ALL, "Russian");
- int a, L, b;
- //cout << "Введите а " << endl;
- in >> a;
- if (a < 0 || a>9)
- cout << "Неверные входные данные а " << endl;
- //cout << "Введите количество команд L " << endl;
- in >> L;
- int** M = new int*[L];
- for (int i = 1; i <= L; i++)
- M[i] = new int[3];
- for (int i = 1; i <= L; i++)
- for (int j = 1; j <= 3; j++)
- M[i][j] = -1;
- if (read(in, M, L))
- {
- int i = 1;
- int k = 0;///для зацикливания
- while (i != 0 && 3 * L>k)
- {
- switch (M[i][1])//номер функции
- {
- case 1: a = f1(a); i = M[i][2]; break;
- case 2: a = f2(a); i = M[i][2]; break;
- case 3: a = f3(a); i = M[i][2]; break;
- case 4: if (p4(a) == 'и') i = M[i][2];
- else i = M[i][3]; break;
- case 5: if (p4(a) == 'и') i = M[i][2];
- else i = M[i][3]; break;
- }
- k++;
- }
- if (3 * L>k)
- cout << "Конечный результат " << a << endl;
- else cout << "Зациклился" << endl;
- }
- else cout << "Ошибка входных данных" << endl;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment