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

Szyfr cezara - tylko znaki alfanumeryczne

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?

#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;
}

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1