Sprawdzenie poprawności karty kredytowej

Sprawdzenie poprawności karty kredytowej
R0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 37
0

Witam. Ma ktoś jakiś pomysł jak stworzyć ową funkcję?. Na pewno chara trzeba zamienić na zmienną liczbową, czy to będzie "long long int"?? Jak pomnożyć przez 2 co drugą liczbę? Może przekształcić tego chara jakoś w tablicę i mnożyć co drugi indeks? Jeśli tak, to jak by to zrobić?? Z góry dziękuję za pomoc.

Kopiuj
#include <stdio.h>

//<tutaj wstawić definicje potrzebnych funkcji>

int main()
{
 char nrkarty[17];
 int poprawny;
 printf("Podaj  numer karty płatniczej:");
 gets(nrkarty);
 poprawny=czypoprawny(nrkarty);
 if (poprawny==0)
{
 printf ("Podany numer karty jest niepoprawny!!!\n");
return 1;
}
else printf ("Podany numer karty jest poprawny!!!\n");
return 0;   
}

Sprawdzenie numeru karty płatniczej - algorytm:

  1. Obliczenia rozpoczynamy od liczby kontrolnej, która jest najbardziej na prawo i przesuwając się w lewo podwajamy co drugą cyfrę.
  2. Jeśli w wyniku podwojenia otrzymamy liczbę dwucyfrową, dodajemy do siebie cyfry otrzymując liczbę jednocyfrową np. 14 zapisujemy jako 5 (1+4)
  3. Dodajemy do siebie wszystkie cyfry, podwojone i niepodwojone.
  4. Jeśli suma mod 10 równa jest 0, numer jest prawidłowy.
Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
2

Nie rozumiem pytania. Masz przecież podane co dokładnie zrobić.
Robisz pętlę na co drugim elemencie tablicy (for z i+=2) i go podwajasz a następnie robisz liczba%10+liczba/10, czyli w pętli masz

Kopiuj
int liczba = tablica[i]-'0';
liczba = liczba%10 + liczba/10;

I sumujesz sobie te podwojone liczby.
Następnie robisz pętlę po wszystkich pozostałych elementach tablicy (tych nie podwojonych) i do sumy dodajesz tablica[i]-'0'
Na koniec sprawdzasz czy suma%10 == 0

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.