Sprawdzenie poprawności karty kredytowej

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.

#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.
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

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

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