Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma warning(disable: 4996)
- //In monoidul liber generat de un alfabet I,
- //fie cuvintele p,q,r astfel incat p*q^k=r^k*p si se dau lungimile cuvintelor p si q.
- //Sa se determine p si q in functie de simbolurile cuvantului r.
- #include <iostream>
- #include <fstream>
- #include <cstring>
- #include <cmath>
- using namespace std;
- void citireDate(int& k, int& lp, int& lq)
- {
- ifstream fin("intrare.txt");
- fin >> k >> lp >> lq;
- }
- void afisareDate(int& k, int& lp, int& lq, char p[], char q[])
- {
- ofstream fout("iesire.txt");
- //afisam datele introduse in fisierul de iesire
- fout << "Date introduse:\n";
- fout << "k=" << k;
- fout << "\nl(p)=" << lp;
- fout << "\nl(q)=" << lq;
- fout << "\n\n";
- //afisam p
- fout << "Cuvantul p este: " << p << "\n";
- //afisam q
- fout << "Cuvantul q este: " << q << "\n";
- }
- int nrCifre(int x)
- {
- int nrCif = 0;
- do
- {
- nrCif++;
- x /= 10;
- } while (x != 0);
- return nrCif;
- }
- void adaugareCifre(char v[], int& dim, int nr)
- {
- int cifre = nrCifre(nr);
- for (int k = cifre; k > 1; k--)
- {
- int p = pow(10, k - 1);
- v[dim++] = '0' + nr / p % 10;
- }
- v[dim++] = '0' + nr % 10;
- }
- void concat(char v[], int& dim, int nr)
- {
- v[dim++] = 'a';
- v[dim++] = '_';
- adaugareCifre(v, dim, nr);
- }
- void formareP(int lp, int lq, char p[])
- {
- int lungSirP = 0;
- if (lp / lq > 0)
- {
- strcpy(p, "r^");
- lungSirP = 2;
- adaugareCifre(p, lungSirP, lp / lq);
- }
- for (int i = 1; i <= lp % lq; i++)
- concat(p, lungSirP, i);
- p[lungSirP] = NULL;
- }
- void formareQ(int lp, int lq, char q[])
- {
- int lungSirQ = 0, nrq = 0;
- for (int i = lp % lq + 1; i <= lq; i++)
- concat(q, lungSirQ, i);
- for (int i = 1; i <= lp % lq; i++)
- concat(q, lungSirQ, i);
- q[lungSirQ] = NULL;
- }
- int main()
- {
- int k, lp, lq;
- char p[1000], q[1000];
- citireDate(k, lp, lq);
- formareP(lp, lq, p);
- formareQ(lp, lq, q);
- afisareDate(k, lp, lq, p, q);
- return 0;
- }
Add Comment
Please, Sign In to add comment