# PBinfo #3495 – FourSquare – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Four Square
Cifrul four square este un cifru care folosește patru matrici 5x5 care conţin literele alfabetului englez.
Cifrul funcţionează așa:


Se citește un mesaj și apoi grupăm literele 2 câte 2.
Pentru fiecare 2 litere : se caută prima litera în prima matrice și se reţine linia și coloana pe care se află și se caută a doua literă în a patra matrice și se reține linia și coloana pe care se află.
Să zicem că prima literă se află pe linia a și coloana b iar a doua literă se află pe linia c  și coloana d. Atunci afișăm litera care se află pe linia a și coloana d în a doua matrice și linia c și coloana b în a treia matrice.

Cerința
	Dându-se cele patru matrici și un mesaj, sa se codifice mesajul dat.

Date de intrare
Fișierul de intrare foursquare.in conține cele 4 matrici(fiecare scrisă pe 5 linii) și pe ultima linie mesajul.

Date de ieșire
Fișierul de ieșire foursquare.out va conține pe prima linie mesajul codificat.

Restricții și precizări

mesajul va avea un număr par de litere;
1≤lungime mesaj≤10000;

Exemplu:
foursquare.in

abcde
fghij
klmno
prstu
vwxyz
examp
lbcdf
ghijk
norst
uvwyz
keywo
rdabc
fghij
lmnps
tuvxz
abcde
fghij
klmno
prstu
vwxyz
helpmeobiwankenobi
foursquare.out

fygmkyhobxmfkkkimd

## Cod sursă C++

```cpp
#include <fstream>
using namespace std;
char f[6][6];
char f2[6][6];
char poz[130];
char poz1[130];
int main()
{
    ifstream cin ("foursquare.in");
    ofstream cout ("foursquare.out");
    char c;
        for(int i=1;i<=5;i++)
        {
            for(int j=1;j<=5;j++)
            {
                cin>>c;
                poz[(int)(c)]=i*10+j;
            }
        }
        for(int i=1;i<=5;i++)
        {
            for(int j=1;j<=5;j++)
            {
                cin>>c;
                f[i][j]=c;
            }
        }
        for(int i=1;i<=5;i++)
        {
            for(int j=1;j<=5;j++)
            {
                cin>>c;
                f2[i][j]=c;
            }
        }
        for(int i=1;i<=5;i++)
        {
            for(int j=1;j<=5;j++)
            {
                cin>>c;
                poz1[(int)(c)]=i*10+j;
            }
        }
        char x,y;
        while(cin>>x>>y)
        {
            int a,b,c,d;
            a=poz[x]/10;
            b=poz[x]%10;
            c=poz1[y]/10;
            d=poz1[y]%10;
            cout<<f[a][d]<<f2[c][b];
        }
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/3495)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/3495/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-3495/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
