HH:MM:SSのフォーマットのチェックと時間が有効かどうかのプログラムを書いてます。アウトプットまたは判定のところででミスがあると思われるのですが、見つからなくて困っています。。
C
1#include <stdio.h> 2#include <string.h> 3int input(char text[]); 4void timecheck(int a, char array1[a][8], int f[a]); 5void lettercheck(int b, char array2[b][8], int g[b]); 6void formatcheck(int c, char array3[c][8], int h[c]); 7void numbercheck(int d, char array4[d][8], int j[d]); 8void output(int e, char array5[e][8], int k[e]); 9int main(void){ 10 int N, i; 11 N = input("N:"); 12 char timestamps[N][81]; 13 int check[N]; 14 for(i=0;i<N;i++){ 15 do{ 16 scanf("%s", timestamps[i]); 17 }while(strlen(timestamps[i])!=8); 18 } 19 20 timecheck(N, timestamps, check); 21 output(N, timestamps, check); 22 return 0; 23} 24int input(char text[]){ 25 int x; 26 printf("%s", text); 27 scanf("%d", &x); 28 return x; 29} 30void timecheck(int a, char array1[a][8], int f[a]){ 31 formatcheck(a, array1, f); 32 lettercheck(a, array1, f); 33 numbercheck(a, array1, f); 34} 35 36void formatcheck(int b, char array2[b][8], int g[b]){ 37 int i; 38 for(i=0;i<b;i++){ 39 if(array2[i][2]==':' && array2[i][5]==':' && array2[i][0] != ':' && array2[i][1] != ':' && array2[i][3]!=':' && array2[i][4]!=':' && array2[i][6]!=':' && array2[i][7]!=':'){ 40 continue; 41 }else{ 42 g[i]=4; 43 } 44 } 45} 46 47 48void lettercheck(int c, char array3[c][8], int h[c]){ 49 int i; 50 for(i=0;i<c;i++){ 51 if(h[c]==4){ 52 continue; 53 } 54 if(array3[i][0] >= 'a' && array3[i][0] <= 'z'){ 55 h[i] = 2; 56 } 57 else if(array3[i][1] >= 'a' && array3[i][1] <= 'z') { 58 h[i] = 2; 59 } 60 else if(array3[i][3] >= 'a' && array3[i][3] <= 'z') 61 { 62 h[i] = 2; 63 } 64 else if(array3[i][4] >= 'a' && array3[i][4] <= 'z') { 65 h[i] = 2; 66 } 67 else if(array3[i][6] >= 'a' && array3[i][6] <= 'z'){ 68 h[i] = 2; 69 } 70 else if(array3[i][7] >= 'a' && array3[i][7] <= 'z'){ 71 h[i] = 2; 72 } 73 } 74} 75void numbercheck(int d, char array4[d][8], int j[d]){ 76 int i; 77 for(i = 0; i < d; i++){ 78 if(j[i]==2 || j[i]==4){ 79 continue; 80 } 81 if(((array4[i][0]=='0' || array4[i][0]=='1') && array4[i][1]>='0' && array4[i][1]<='9') || (array4[i][0]=='2' && (array4[i][1]>='0' && array4[i][1]<='4'))){ 82 if((array4[i][3]>='0' && array4[i][3]<='5') && (array4[i][4]>='0' && array4[i][4]<='9')){ 83 if((array4[i][6]>='0' && array4[i][6]<='5') && (array4[i][7]>='0' && array4[i][7]<='9')){ 84 j[i]=1; 85 }else{ 86 j[i] = 3; 87 } 88 }else{ 89 j[i] = 3; 90 } 91 }else{ 92 j[i]=3; 93 } 94 } 95} 96 97void output(int e, char array5[e][8], int k[e]){ 98 int i; 99 for(i=0;i<e;i++){ 100 if(k[i]==1){ 101 printf("%s", array5[i]); 102 printf(" correct time\n"); 103 }else if(k[i]==2){ 104 printf("%s", array5[i]); 105 printf(" valid format\n"); 106 }else if(k[i]==3){ 107 printf("%s", array5[i]); 108 printf(" incorrect time\n"); 109 }else if(k[i]==4){ 110 printf("%s", array5[i]); 111 printf(" invalid format\n"); 112 } 113 } 114} 115 116 117 118 119 120 121 122 123
回答4件
あなたの回答
tips
プレビュー