[ Koka18 @ 04.12.2018. 19:07 ] @
Postovani, moze li mi netko rijesiti zadatak. Hvala unaprijed :) https://imgur.com/a/UBtEci5 |
[ Koka18 @ 04.12.2018. 19:07 ] @
[ mjanjic @ 04.12.2018. 23:30 ] @
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] [ Branimir Maksimovic @ 05.12.2018. 06:18 ] @
Treba da nadjes 2 najveca broja pomnozena iz faktora duzine stringa. Moze brute force metod. Odredjivanje faktora ti takodje nije bas najbolje.
[ jablan @ 05.12.2018. 09:22 ] @
Evo Ruby :P
Code: s = gets n = s.length rowlen = Math.sqrt(n).floor.downto(1).find{|i| n % i == 0} s.chars.each_slice(rowlen).with_index{ |chars, row| puts(row.even? ? chars.join : chars.join.reverse) } @mjanjic: ne moraš iterirati kroz sve brojeve od 2 do sqrt(len), pa onda tražiti maksimum, dovoljno je da iteriraš od sqrt(len) naniže, i nađeš prvi koji zadovoljava kriterijum. [Ovu poruku je menjao jablan dana 05.12.2018. u 10:34 GMT+1] [ mjanjic @ 05.12.2018. 10:27 ] @
Da, ima prostora za optimizaciju, hvala na sugestiji. Mada, kad je broj karaktera prost, onda će opet da radi iteraciju sve do jedinice, tako da ne može algoritam biti idealan u svim slučajevima.
Ali nisam baš nešto inspirisan za to u 1 ujutru, možda kad bih kasnije gledao kod... ipak se svi učimo na svojim i tuđim greškama i/ili na tuđim dobrim primerima. [ Bradzorf012 @ 05.12.2018. 16:11 ] @
Moguće je da nisam dobro razumeo zadatak. Nije mi jasno zašto u onom drugom primeru(ropotarnica) izlaz nije:
ropo nrat ica nego prosto ropotarnica? Pažljivo sam pročitao zadatak. [ jablan @ 05.12.2018. 16:16 ] @
"ukupan broj polja [matrice] je jednak dužini reči"
U tvom slučaju matrica ima 4x3=12 polja a reč ima 11 slova. [ Bradzorf012 @ 05.12.2018. 17:20 ] @
Jesam glupson.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|