Chuyển đổi thời gian định dạng 12 giờ thành định dạng 24 giờ bằng C

Hôm nay em gặp phải cái đề bài như này ạ

Viết chương trình chuyển đổi thời gian định dạng 12 giờ thành thời gian định dạng 24 giờ.
Định dạng 12 giờ như sau: “giờ:phút:giây AM” hoặc “giờ:phút:giây PM”.
 Ví dụ 1: nhập vào “6:13:50 AM”  xuất ra kết quả “6:13:50”.
 Ví dụ 2: nhập vào “6:13:50 PM”  xuất ra kết quả “18:13:50”.

Nếu làm bình thường thì em làm được nhưng yêu cầu của bài lại hơi dị là “Code bằng C, siêu ngắn và toàn bộ chương trình không có dấu chấm phẩy.”. Không biết mn có cao kiến gì để giải quyết bài này ạ. Em xin cảm ơn <3

không có dấu chấm phẩy á? có được dùng Python không?

1 Like

Đề ghi bằng C mà không có ;
Thầy cô nào đùa dai vậy :joy:

2 Likes

Được mà.
Mà cho hỏi là có cách nào sử dụng define được một array không?

2 Likes

vẫn phải khai báo array chứ :v

1 Like

Thì khai báo thì phải có ; Có câu lệnh nào cho khai báo không ; không thì em nghĩ tới mỗi define

2 Likes

@Hoang_Tung_Lam: Có chỗ nộp bài không bạn?

2 Likes

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
1 Like

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

2 Likes

Nếu bạn tự viết compiler mới thì chắc là pass, chứ đã C thì buộc phải có ;

2 Likes

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

3 Likes

Bài giải bài này là 108 kí tự thì phải :smile: biết vậy thôi

2 Likes

Phải làm bằng C bạn ạ :frowning:

@sueruan012 Không có bạn ạ :v:

Có ai biết xử lí ngày giờ không nhỉ?

3 Likes

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 =))

2 Likes

Cái phần chuyển đổi giờ đang thua

2 Likes

Thử nhồi hết lệnh vào if (), phân tách bằng dấu ‘,’ :smiley:

3 Likes

Nhờ @MeigyokuThmn mình đã rút thêm được 1 dấu ; nữa =)) thanks :smile:

1 ;, 241 225 chars
Mới update code. 2 ;, 151 150 chars

1 Like

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

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?