Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

c++ zadatak.....

[es] :: C/C++ programiranje :: c++ zadatak.....

[ Pregleda: 2025 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Koka18

Član broj: 339463
Poruke: 1
*.adsl.net.t-com.hr.



Profil

icon c++ zadatak.....04.12.2018. u 19:07 - pre 64 meseci
Postovani, moze li mi netko rijesiti zadatak. Hvala unaprijed :)
https://imgur.com/a/UBtEci5
 
Odgovor na temu

mjanjic
Šikagou

Član broj: 187539
Poruke: 2679



+690 Profil

icon Re: c++ zadatak.....04.12.2018. u 23:30 - pre 64 meseci
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.
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
109.72.51.23



+1064 Profil

icon Re: c++ zadatak.....05.12.2018. u 06:18 - pre 64 meseci
Treba da nadjes 2 najveca broja pomnozena iz faktora duzine stringa. Moze brute force metod. Odredjivanje faktora ti takodje nije bas najbolje.
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Re: c++ zadatak.....05.12.2018. u 09:22 - pre 64 meseci
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]
 
Odgovor na temu

mjanjic
Šikagou

Član broj: 187539
Poruke: 2679



+690 Profil

icon Re: c++ zadatak.....05.12.2018. u 10:27 - pre 64 meseci
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.
Blessed are those who can laugh at themselves, for they shall never cease to be amused.
 
Odgovor na temu

Bradzorf012
Mile i ortaci LLC

Član broj: 334105
Poruke: 466



+1020 Profil

icon Re: c++ zadatak.....05.12.2018. u 16:11 - pre 64 meseci
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.
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Re: c++ zadatak.....05.12.2018. u 16:16 - pre 64 meseci
"ukupan broj polja [matrice] je jednak dužini reči"

U tvom slučaju matrica ima 4x3=12 polja a reč ima 11 slova.
 
Odgovor na temu

Bradzorf012
Mile i ortaci LLC

Član broj: 334105
Poruke: 466



+1020 Profil

icon Re: c++ zadatak.....05.12.2018. u 17:20 - pre 64 meseci
Jesam glupson.
 
Odgovor na temu

[es] :: C/C++ programiranje :: c++ zadatak.....

[ Pregleda: 2025 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.