Řešení v Caesarově šifře – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Řešení  v Caesarově šifře – C / C++ – Fórum – Programujte.comŘešení v Caesarově šifře – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Pajik1470
Duch
2. 11. 2013   #1
-
0
-

Ahoj,

mohl by někdo poradit jak dotáhnout ke zdárnému konci prográmek, který má řešit Caesarovu šifru.
Řetězec se má uložit do pole znaků a výsledek má být pro všechny klíče.

Klíč N: řetězecN
Klíč N+1: řetězecN+1


Zatím mám tohle, ale nastal problém při zadání mezery a ještě v okamžiku kdy se má z konce abecedy přesunout na začátek.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int x, k = 1, a = 0;
    #define N 15
    #define K 10

    int pole [N];
    char ch;

    printf("Zadej sifru o %d znacich ", N);
    for (x = 0;x != N;x++)
        pole [x] = getchar();

    printf("Zadali jste ");
    for (x = 0;x != N; x++)
        putchar(pole [x]);
    printf("\n");

    do
    {
        a++;
        for (x = 0;x != N;x++)
            pole [x] += k;
        printf("Hodnoty pro klic N = %d jsou ", a);
        for (x = 0;x != N; x++)
            putchar(pole [x]);
        printf("\n");

    }
    while (a != K);


    return 0;
}

Díky za rady.

Nahlásit jako SPAM
IP: 213.192.34.–
Reklama
Reklama
Řešení
Pajik1470
Duch
12. 11. 2013   #2
-
0
-
Vyřešeno Nejlepší odpověď

Nakonec vyreseno:

#include <stdio.h>
#include <stdlib.h>

#define N 17    // 15 znaku, 2 mezery
#define K 26 //26 znaku abecedy

int main()
{

    int x, k = 1, p = 0;
    int pole_1[N];


    printf("Dobry den tohle je program pro reseni Caesarovi sifry.\n");
    printf("Zadejte sifru o %d znacich (2 znaky jsou pro mezeru) :\n\n", N);

    for(x = 0; x != N; x ++)
        pole_1[x] = getchar();

    do
        {
            p++;
        for (x = 0;x != N;x++)
            {
                if (pole_1 [x] == 32);
                else
                {
                pole_1 [x] += k;
                if (pole_1 [x] > 122)
                    pole_1 [x] -= 26;
                }
            }
        printf("\nHodnoty pro klic N = %d jsou: ", p);
        for (x = 0;x != N; x++)
            putchar(pole_1 [x]);
        printf("\n");
        }

    while (p != K);

    return 0;
}

Nahlásit jako SPAM
IP: 147.251.53.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 99 hostů

Podobná vlákna

řešení — založil Michael

Řešení 9. úlohy — založil black evil

Řešení obsahu webu . — založil BoBy

Řešení hledání min — založil Martin

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý