Hirdetés

Új hozzászólás Aktív témák

  • #PeTeY#
    aktív tag

    Ha jól értem, hogy mit szeretnél, akkor szerintem nem a második dupla ciklusban (amikor a ki2-be írsz) kellene alkalmazni a kulcs[j]-1-gyel való indexelést, hanem az első dupla ciklusban, amikor kitöltöd a tomb-öt (és persze ekkor oda kell figyelni arra is, hogy a ki file-ba továbbra is a jó karaktert írd ki):

    for (i=0; i<n; ++i) {
    for (j=0; j<kod; ++j) {
    tomb[i][kulcs[j]-1]=szoveg[count];
    fprintf(ki, "%c ", szoveg[count]);
    count=count+1;
    }
    fprintf(ki, "\n");
    }

    A ki2-be történő kiírásnál pedig már csak szimplán kiszedni a j-edik oszlopot. Mert így most pont a kulcs inverz permutációját hajtod végre.

    Nagyon köszönöm. Már munkahelyen vagyok, este megnézem. :)
    Bár, most első ránézésre... Na, megpróbálom majd értelmezni. És tisztáznám, mit is akarok, mert valószínű nem voltam valami összeszedett már tegnap este. Mondjuk nem biztos, hogy most jobb lesz...
    Szóval a feladat szerint a program egy fájlból kiolvas majd 3 dolgot. Egy egész számot, mint kód. Ennyi oszlopa lesz majd a mátrixnak, amibe be kell "tölteni" a harmadik paraméterben kapott szöveget, amit kódolni, vagy dekódolni kell. Illetve egy kulcsot azaz számsort, ami ebben a mátrixban mutatja az oszlopok sorrendjét. Kódolásnál be kell írni sorfolytonosan a mátrixba a szöveget: azaz a[0][0]-ba az első karakter, a[0][1]-be második, stb, és kiolvasásnál a kulcs által megadott sorrendben kell kiírni. Nálam a konkrét kódban, ugye a 3. oszlop utolsó sorában lévő karakter lesz az első, aztán ugyanezen oszlop utolsó előtti sorában lévő a második egészen az első sorig, majd jön a 4. oszlop utolsó sorában lévő, stb. Ezt a segítségetekkel sikerült is megcsinálni. Viszont a dekódolásnál ezt írja szó szerint a feladat: "A dekódoláshoz az adott sorrendben töltjük fel az oszlopokat, majd a szöveget sorfolytonosan olvassuk ki a táblázatból..." Azaz ha jól értem, fordítva kéne, mint a kódolásnál. Bocs a hosszú szövegért.

Új hozzászólás Aktív témák