Zadanie polega na wczytaniu L znaków i wypisaniu ich w kwadratowej tablicy, o jak najkrótszym boku. Długość boku kwadratu w tej metodzie możemy traktować jako klucz szyfrowania. Litery z wejścia należy zapisywać kolumnami tzn. pierwszy znak w pierwszym wierszu, drugi znak w drugim wierszu i tak do wiersza o numerze odpowiadającym długości boku kwadratu. Kolejny znak znowu w pierwszym wierszu, następny w drugim itd. Brakujące litery należy uzupełnić znakiem ‘’.
Wejście W pierwszym wierszu standardowego wejścia zapisano ciąg L znaków z pośród wielkich liter alfabetu łacińskiego – tekst do zaszyfrowania. Tekst kończy znak ‘!’, którego nie przetwarzamy.
Wyjście Na standardowe wyjście wypisz zakodowany tekst w postaci opisanego kwadratu ze znaków.
Przykłady
Wejście
ABC!
Wyjście
AC
B
Wejście
XYXZ!
Wyjście
XX
YZ
Wejście
RYSZARD!
Wyjście
RZD
YA*
SR*
**Mój kod tworzy kwadrat, ale na wyjściu "wypuszcza" zupełnie inne litery - przy dużej ilości liter (przy mniejszej wszystko jest OK). Mam błąd uruchomienia i złe odpowiedzi. **
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int ile=0;
char tab[ile];
cin>>tab[ile];
while (tab[ile]!='!')
{
ile++;
cin>>tab[ile];
}
int b=1;
while (b<sqrt(ile))
b++;
while (ile%b!=0 || ile==b)
{
tab[ile]='*';
ile++;
}
for (int i=0; i<b; i++)
{
for (int o=i; o<ile; o+=b)
cout<<tab[o];
cout<<endl;
}
return 0;
}