Вы перебираете каждое слово, заполняя весь массив отдельными символами из первого слова, затем перезаписывая весь массив символами из второго слова, затем третьего слова и т. Д.
да, в конце концов, массив заканчивается заполнением только символами последнего слова.
Вам необходимо переосмыслить свои циклы.Вам не нужно 3 вложенных цикла, когда 2 будет достаточно.
Попробуйте что-то еще подобное:
#include <iostream>
#include <string>
using namespace std;
int main() {
const int columns = 5, rows = 5;
string words[] = {
"sloan",
"horse",
"eqrit",
"house",
"water"
};
string table[rows][columns];
for (int i = 0; i < rows; ++i) {
string &test = words[i];
for (int j = 0; j < columns; ++j) {
table[i][j] = test[j];
}
}
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < columns; ++j) {
std::cout << table[i][j] << ' ';
}
std::cout << std::endl;
}
return 0;
}
Вывод
s l o a n
h o r s e
e q r i t
h o u s e
w a t e r
Live Demo