# PBinfo #3595 – FourSquare1 – 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 criptat, să se decodifice mesajul dat.

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

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

Restricții și precizări

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

Exemplu:
foursquare1.in

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

helpmeobiwankenobi

## Cod sursă C++

```cpp
#include <fstream>
using namespace std;
char mat1[6][6],mat4[6][6];
int square2[130],square3[130];
int main()
{
    ifstream cin ("foursquare1.in");
    ofstream cout ("foursquare1.out");
    for(int i=1;i<=5;i++)
    {
        for(int j=1;j<=5;j++)
            cin>>mat1[i][j];
    }
    char ch;
    for(int i=1;i<=5;i++)
    {
        for(int j=1;j<=5;j++)
        {
            cin>>ch;
            square2[ch]=i*10+j;
        }
    }
    for(int i=1;i<=5;i++)
    {
        for(int j=1;j<=5;j++)
        {
            cin>>ch;
            square3[ch]=i*10+j;
        }
    }
    for(int i=1;i<=5;i++)
    {
        for(int j=1;j<=5;j++)
            cin>>mat4[i][j];
    }
    char a,b;
    while(cin>>a>>b)
    {
        int x1,y1,x2,y2;
        x1=square2[a]/10;
        y2=square2[a]%10;
        x2=square3[b]/10;
        y1=square3[b]%10;
        cout<<mat1[x1][y1]<<mat4[x2][y2];
    }
    return 0;
}
```

## Resurse

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