@Hoang_Tung_Lam: Có chỗ nộp bài không bạn?
Chuyển đổi thời gian định dạng 12 giờ thành định dạng 24 giờ bằng C
define nó chỉ là macros, khai báo lệnh in ra màn hình này nọ vẫn phải kèm dấu ;
ví dụ muốn in cout
#define p(x) cout << x; // không có ; thì compiler nó thay code vào macros sẽ báo lỗi
Hm, đang tìm cách khai báo một mảng char không ; và thay đổi phần tử của nó cũng không cần ;. Còn printf thì đơn giản rồi
Nếu bạn tự viết compiler mới thì chắc là pass, chứ đã C thì buộc phải có ;
Thằng bạn mình hình như nó pass bài này rồi. Nên giờ mình mới tìm. Bạn này đang hỏi mức khó nhất được 1.5 điểm.
Đề đây mà
https://drive.google.com/file/d/0B_s3E_YllMagMnRHLWprUW5RZEU/view
Bài giải bài này là 108 kí tự thì phải biết vậy thôi
Phải làm bằng C bạn ạ
@sueruan012 Không có bạn ạ
Có ai biết xử lí ngày giờ không nhỉ?
Code với 2 dấu ;
: http://ideone.com/DXwEUP, 248 char (hơi gà)
Cứ đặt cái define vào, nếu cần dùng thì dùng =))
Cái phần chuyển đổi giờ đang thua
Thử nhồi hết lệnh vào if (), phân tách bằng dấu ‘,’
Nhờ @MeigyokuThmn mình đã rút thêm được 1 dấu ;
nữa =)) thanks
1 ;
, 241 225 chars
Mới update code. 2 ;
, 151 150 chars
Code trên điện thoại nên không đếm kí tự được
(đoạn 12:00:00 lười không code nữa :)))
#include <stdio.h>
int main(int c, char a[]){
if(scanf("%d:",&c),gets(a))
if(
a[6]=='P'&&c<12?c+=12:1,
a[5]='\0',
printf("%d:%s",c,a)
){}
}
Tks @sueruan012 với @MeigyokuThmn gợi ý mấy chỗ quan trọng
có thể bỏ một if đi không?
À ừ nhỉ, bỏ được, cứ nghĩ nó trong if nên chưa có giá trị nên mới tách ra
#include<stdio.h>
int main(int c,char a[]){
if(
scanf("%d:",&c),
gets(a),
a[6]=='P'&&c<12?c+=12:1,
a[5]='\0',
printf("%d:%s",c,a)
){}
}
Tks @Dark.Hades =)) vì chi tiết đưa biến vào argv của main =))
Code mình (124 chars):
#include<stdio.h>
char s[10],m[3];
int main(int H){
if(scanf("%d:%s%s",&H,&s,&m)==3,printf("%d:%s",H+12*(m[0]=='P'),s)){}
}
Sao @Dark.Hades đưa char a[]
vào argv của main được nhỉ, mình không quen viết C lắm @@
Nó là biến nhận giá trị ở lúc khởi tạo runtime.
Mình không nhầm thì chương trình/ngôn ngữ nào cũng có cái này, tiếng anh là argument thì phải:
./p.exe --help
c=2 // count của arg
a[0]=p.exe
a[1]=--help
Quả đề oái oăm thật :3, làm cái này thì không biết có tác dụng gì nhỉ, em thấy code của bác @sueruan012 là khó đọc lắm r, cơ mà chân thành cảm ơn các bác @sueruan012, @graktung, @MeigyokuThmn và @Dark.Hades đã đóng góp ý kiến để giải bài này. Mặc dù vẫn có 1 dấu chẩm phẩy nhưng em tạm set thành answer đã :3.
p/s: Chắc em cứ truyền thống mà phang cho dễ đọc vậy, chẳng ham hố làm gì đau mắt quá (trình C của em còn cùi, em cũng mới nhập môn thôi) :((
Thật ra làm cái này biết cho vui thôi. Hãy nghĩ đơn giản như thế này, nếu điều đó hay ho thì 90% (không phải tuyệt đối nhé) sẽ được chia sẻ lên trên Internet, mọi người được biết ) Vả lại code là cần sự dễ hiểu không chỉ cho bạn mà còn người khác. Code nhiều dòng chưa biết được giỏi hay dỡ và code ít dòng cũng thế.