Szyfr cezara - tylko znaki alfanumeryczne

Szyfr cezara - tylko znaki alfanumeryczne

Wątek przeniesiony 2018-11-10 13:35 z C/C++ przez flowCRANE.

R9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Witam. Mam zrobic program, ktory szyfruje za pomoca szyfru cezara. Uzytkownik podaje dlugosc lancucha i wprowadza do niego znaki.
Pytanie: Jak zrobic, zeby uzytkownik mogl wpisac tylko znaki alfanumeryczne?

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

int main() {
    size_t rozm;
    int i;
    char *tab;
    printf("Podaj dlugosc lancucha: \n");
    scanf("%d", &rozm);
    tab = malloc(rozm * sizeof(char));
    printf("Wprowadz ciag znakow: \n");
    for (i = 0; i <= rozm; i++) {
        scanf("%c", &tab[i]);
    }

    //KODOWANIE
    for (int i = 0; i <= rozm; i++)
    {
        if(tab[i] >= '0' && tab[i] <= '9')
        {
            if(tab[i] + 3 <='9')
                tab[i] +=3;
            else
                tab[i] = tab[i] - 7;
        }
        else if(tab[i] >= 'a' && tab[i] <= 'z')
        {
            if (tab[i] + 3 <= 'z')
                tab[i] += 3;
            else
                tab[i] = tab[i] - 23;
        }
        else if(tab[i] >= 'A' && tab[i] <= 'Z')
        {
            if (tab[i] + 3 <= 'Z')
                tab[i] += 3;
            else
                tab[i] = tab[i] - 23;
        }
    }

    printf("\nZakodowany ciag:");
    for(i=0; i<=rozm; i++)
    {
        printf("%c", tab[i]);
    }
    free(tab);
    return 0;
}

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5027
0

W bibliotece ctypes.h jest funkcja isalpha, a dokładniej int isalpha(int c) i ona wykonuje robotę.
http://www.cplusplus.com/reference/cctype/isalpha/

Ja bym zrobil Blok, albo funkcje po scanf.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.