CS50 PSET 1 хакер плохой кредитный код
Цель состоит в том, чтобы выяснить, действителен ли номер кредитной карты.
Здесь Подробные Инструкции:
Набор Задач 1: C[^]
Могу ли я узнать, что заставляет мой код терпеть неудачу?
(Я не получаю запущенных ошибок)
Что я уже пробовал:
#include <stdio.h> include <cs50.h> include <stdlib.h> include <ctype.h> include <string.h> include <math.h> int main(void) { char name[20]; char dist[3]; long long number = GetLongLong(); sprintf(name, "%lld", number ); int length = strlen(name); if ( (length != 13) || (length != 15) || (length != 16) ) { printf("INVALID"); return 1; } int SUM = 0; if ( (length == 13) || (length == 15) ) { for (int a = 1; a < length-1; a+=2) { int prodig = (name[a]-48)* 2; sprintf(dist, "%d", prodig); if (strlen(dist) == 2) { SUM = SUM + (dist[0]-48) + (dist[1]-48); } else { SUM += prodig; } } for (int a = 0; a < length; a+=2) { SUM += (name[a]-48); } } if (length == 16) { for (int a = 1; a < 17; a+=2) { int prodig = (name[a]-48)* 2; sprintf(dist, "%d", prodig); if (strlen(dist) == 2) { SUM = SUM + (dist[0]-48) + (dist[1]-48); } else { SUM += prodig; } } for (int a = 0; a < 15; a+=2) { SUM += (name[a]-48); } } if (SUM%10 != 0) { printf("INVALID"); return 1; } else { if (name[0] == 3) { printf("AMEX"); } else if (name[0] == 5) { printf("MASTERCARD"); } else { printf("VISA"); } } return 0; }