Malo je nezgodno, ako je broj reči u stringu prost, onda string ostaje u jednom redu, ali se može dodati uslov za takav ispis ako je dužina niza koji sadrži faktore broja slova u stringu jednaka 1 (broj je deljiv samo sa 1 i sa samim sobom), međutim tada se i petlja za ispis izvršava praktično samo jednom, tako da je to nepotrebno.
Valjda je to to ;)
https://jsfiddle.net/k7g2edvp/
NAMERNO sam ostavio jednu logičku grešku (probati string dužine kvadrata prirodnog broja, npr. 16), jer sad ne mogu da je ispravim na jsfiddle, a ti pokušaj da je otkriješ i ispraviš :)
A sad lepo prevedi ovo u C++ :)
Ako ne znaš dovoljno C++ da ovo prevedeš (naravno, može se raditi sa klasama i sl., ali praktično nema potrebe za tim), nemoj ni da pitaš da ti radimo zadatak, jer je to besmisleno. Ja sam uradio u JS; jer mi baš trebaju ovakvi i slični primeri ^_^
Evo koda za one koje mrzi da se petljaju sa jsfiddle (sve je u HTML fajlu zbog jednostavnosti, ako se JS izmesti u eksterni fajl, "malo" drugačije ide sa učitavanjem pa da ne komplikujemo ovde sa tim):
Code:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Primer transformacije stringa</title>
<style>
* {
box-sizing: border-box;
}
#txtTransformed {
display:inline-block;
border: darkgray 1px inset;
min-height: 50px;
min-width: 150px;
padding: 5px;
}
</style>
<script>
document.addEventListener("DOMContentLoaded", function(event) {
document.getElementById("btnTransform").addEventListener("click", txtTransformer);
document.getElementById("btnClear").addEventListener("click", txtClear);
});
function txtTransformer() {
var txtInput = document.getElementById("txtInput").value;
var txtInputLength = txtInput.length;
var txtTransformed = document.getElementById("txtTransformed");
txtTransformed.innerHTML = "";
var txtInputLengthFactors = [1];
for (let i = 2; i <= Math.sqrt(txtInputLength); i++) {
if (txtInputLength % i == 0) {
txtInputLengthFactors.push(i);
}
}
var numberOfRows = Math.max(...txtInputLengthFactors);
var numberOfColumns = txtInputLength / numberOfRows;
for (let i = 0, reversed = false; i < numberOfRows; i++) {
if (!reversed) {
txtTransformed.innerHTML += txtInput.substring(numberOfColumns * i, numberOfColumns * (i+1)) + "<br>";
reversed = true;
} else {
txtTransformed.innerHTML += txtInput.substring(numberOfColumns * i, numberOfColumns * (i+1)).split("").reverse().join("") + "<br>";
reversed = false;
}
}
}
function txtClear() {
document.getElementById("txtTransformed").innerHTML = "";
}
</script>
</head>
<body>
<h1>Primer transformacije stringa</h1>
<form>
<textarea id="txtInput" columns="20" rows="5" placeholder="Unesite reč dužine 3-100 karaktera."></textarea>
</form>
<button id="btnTransform">
Transformiši tekst!
</button> <button id="btnClear">
Izbriši!
</button>
<div>
Rezultat:
</div>
<div id="txtTransformed">
</div>
</body>
</html>
[Ovu poruku je menjao mjanjic dana 05.12.2018. u 00:52 GMT+1]
[Ovu poruku je menjao mjanjic dana 05.12.2018. u 00:53 GMT+1]
Blessed are those who can laugh at themselves, for they shall never cease to be amused.