cuốn sách gpt4 ai đã làm

Đánh dấu lạ trên gettimeofday()

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 06:47:33 28 4
mua khóa gpt4 Nike

Tôi đã viết mã này cho một bài tập lấy mẫu tại trường đại học của mình.

#include 
#include
#include
#include

int main(int argc, char **argv){
cấu trúc truyền hình thời gian;

float t = atoi(argv[1]); // khoảng thời gian lấy mẫu tính bằng giây
float dt = atoi(argv[2]); //tốc độ lấy mẫu tính bằng mili giây
thời gian gấp đôi;
int nsamples = t/dt * 1000; //số lượng mẫu được thả nổi

// mảng lưu trữ mẫu
mẫu * đôi;
mẫu = malloc(nsamples);

printf("%d\n\n",nsamples);

int c = 0; // chỉ mục mảng
phân kỳ kép;

gettimeofday(&tv, NULL);
thời gian =(gấp đôi) tv.tv_sec + tv.tv_usec / 1000000.0f;
mẫu [c] = thời gian;
printf("thời gian: %f\n", samples[c]);

usleep(dt * 1000);

while(c<>
C++;

gettimeofday(&tv, NULL);
thời gian = (gấp đôi) tv.tv_sec + tv.tv_usec / 1000000.0f;
mẫu [c] = thời gian;

// độ phân kỳ được tính bằng mili giây
phân kỳ = (mẫu[c] - mẫu[c-1]);
nếu (c==9){
printf("%f \n \n%f", samples[c-1], samples[c]);
}
printf("thời gian: %f\nphân kỳ: %f ms\n\n", mẫu[c], phân kỳ*1000);

usleep(dt *1000);
}

}

Đây là đầu ra của tôi

thời gian: 1557335682.435666 độ phân kỳ: 200.127125 ms

thời gian: 1557335682.635813 độ phân kỳ: 200.146914 ms

thời gian: 1557335682.835952 độ phân kỳ: 200.139046 ms

thời gian: 1557335683.036075 độ phân kỳ: 200.123072 ms

thời gian: 1557335683.236192 phân kỳ: -503289765075481210021515983244655326160141033210897707503 00716493231241208217866953937760599346823570331739493744117 76492565454001284240265552387879577581948923314690136258846 1216017208320541658368563434403808909221817741213696.000000 bệnh đa xơ cứng

thời gian: 1557335683.436400 phân kỳ: 1557335683436.399902 ms

thời gian: 1557335683.636521 phân kỳ: 1557335683636.520752 ms

thời gian: 1557335683.836647 phân kỳ: 1557335683836.646973 ms

Có ai biết kết quả kỳ lạ của phép tính thứ năm là gì không? Tôi không thể tưởng tượng ra bất kỳ lời giải thích hợp lý nào vì tôi chưa từng gặp phải bất kỳ "lỗi" tương tự nào trước đây. liệu nó có liên quan đến gettimeofday() Nó có liên quan đến một số chức năng cụ thể của chức năng không?

LƯU Ý: Đầu vào là 10200

câu trả lời hay nhất

bạn đã không样本Phân bổ đủ không gian:

mẫu = malloc(nsamples);

malloc Hàm này là một số xác định字节 Phân bổ không gian, không phải số phần tử mảng. Vì vậy, mảng của bạn ngắn hơn nhiều so với bạn nghĩ. Điều này có nghĩa là cuối cùng bạn sẽ ghi vào cuối mảng, gọi hành vi không xác định .

Bạn cần nhân số phần tử với kích thước phần tử để phân bổ lượng không gian chính xác:

mẫu = malloc(nsamples * sizeof(*samples));

Bạn cũng gặp lỗi khi truy cập vào mảng:

int c = 0;
...
while(c<>
C++;
...
mẫu [c] = thời gian;
...
}

Điều này cũng sẽ ghi vào cuối mảng, đặc biệt nếu có quá nhiều phần tử cho một mảng.

Thay đổi vòng lặp để bắt đầu ở giá trị 1 và tăng dần ở cuối.

int c = 0;
...
c = 1;
while(c<>
...
mẫu [c] = thời gian;
...
C++;
}

Về đánh dấu lạ trên c - gettimeofday(), chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/56046095/

28 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress