Hiển thị ra màn hình các số dương có trong mảng

Đề bài:

Nhập mảng số nguyên từ bàn phím. Tính trung bình cộng các số âm, tổng các số dương và đưa kết quả ra màn hình.
Mô tả giá trị đầu vào:

  • Dòng đầu tiên cho biết số phần tử mảng 𝑛.
  • Dòng thứ 2 chứa giá trị của n phần tử mảng, các phần tử cách nhau một dấu cách.

Mô tả giá trị đầu ra:
Một dòng gồm 2 giá trị cách nhau 1 dấu cách:

  • Giá trị trung bình cộng các số âm. nếu mảng chỉ toàn số âm, in ra màn hình Mảng không có số dương.
  • Tổng các số dương, nếu mảng chỉ toàn số dương in ra màn hình Mảng không có số âm.

Ví dụ:
Input

2 -10 -20

Output

-15.000000 Mang khong co so duong

Bài làm:

#include int main(){ int n,x=0,y=0; scanf("%d",&n); int a[n]; double s2=0,s1=0; if(n>=0){ for (int i=0;i 0){ s1+=a[i]; x++; } else if(a[i]<0){ s2+=a[i]; y++; } } if(x==0){ printf("%lf Mang khong co so duong",s2/y); }else if(y==0){ printf("%lf Mang khong co so am",s1); }else if(x!=0 && y!=0){ printf("%lf %lf",s2/y,s1); } } return 0; }

Hiển thị ra màn hình các số dương có trong mảng

cảm ơn m.n ! update 2/7/2021 : mình tìm ra được lỗi rồi, cảm ơn mọi người nhé.

lỗi ở đây do người viết lập trình chấm điểm thôi ạ.

Xem nhâp-xuất của bạn thì chưa thấy có vấn đề gì.
Bạn có thể mô tả vấn đề cần giúp được không?

Chỉ thắc mắc là số 0 có tính cho số dương hay không thôi.

4 Likes

mình làm bài này có vượt qua 4/5 test. chỉ được 80/100 điểm.
theo như mình test thì, khi sửa nội dung ở dòng 22 thì không thay đổi điểm, còn những cái khác sẽ bị giảm điểm.

Hiện tại tui chưa thấy vấn đề nào cả, bạn có thông tin gì về test case bị sai không?
Ngoài ra tui thấy:

  • Mảng a được tạo ra có tác dụng gì, hoặc là bạn lưu lại thông tin trong mảng để làm gì?
  • Cách bạn sử dụng if else if thể hiện một điều là bạn chưa thực sự hiểu nó.
  • Bạn chưa xử lý trường hợp số nguyên là số 0, và mở rộng ra là nếu toàn bộ input đều là số 0 thì sao?

3 Likes

cảm ơn bạn nhiều về mảng a thì đó là đề bài yêu cầu, để lưu giá trị nhập từ bàn phím thứ 2 thì mình cũng chịu kiki,bởi mình chỉ học căn bản, bởi đang học tin đại cương trreen trường

thứ 3, với trường hợp đó thì sẽ tự dừng lại thôi, bởi đề bài cũng không có nhắc đến

Theo thông tin của bạn thì dòng code 22 sẽ bị giảm điểm, và xem lại if else của bạn thì mình đoán là do bạn còn khai thiếu điều kiện. Ví dụ, nếu x ==0 & y == 0 thì sẽ đưa kết quả nào ra màn hình chẳng hạn.

Với cặp x và y như thế, sẽ có 4 trường hợp xảy ra như sau, nên bạn cần ghi in ra màn hình cái gì trong các trường hợp đó.

x == 0 && y ==0 x == 0 && y != 0 x != 0 && y ==0

x != 0 && y != 0

2 Likes

Dòng 22, khi thay đổi form theo đề bài thì điểm vẫn 80/100 ạ.
Còn theo như mình đọc đề bài này thì sẽ cần đưa ra màn hình 1 trong 3TH sau :

  1. Tính trung bình cộng các số âm, tổng các số dương và đưa kết quả ra màn hình.
  2. Giá trị trung bình cộng các số âm. nếu mảng chỉ toàn số âm, in ra màn hình Mảng không có số dương.
  3. Tổng các số dương, nếu mảng chỉ toàn số dương in ra màn hình Mảng không có số âm.

Sau khi mình thay đổi nội dung của kết quả: (theo bài code mình đã làm) TH1 : giảm 60/100 điểm. TH2 : giảm 20/100 điểm TH3 : không bị thay đổi(code line 22).

thì mình nghĩ có thể là do lỗi hệ thống chấm bài.

Vậy mọi người có cách nào để xem được test ẩn không nhỉ, chứ tự mò trên code mà thấy đã đúng thì khó quá.

Hiển thị ra màn hình các số dương có trong mảng
Dat_Van_Vi:

Vậy mọi người có cách nào để xem được test ẩn không nhỉ, chứ tự mò trên code mà thấy đã đúng thì khó quá.

Hiển thị ra màn hình các số dương có trong mảng
Le_Trong1:

Bạn chưa xử lý trường hợp số nguyên là số 0, và mở rộng ra là nếu toàn bộ input đều là số 0 thì sao?

Bạn bỏ qua câu này rồi.

3 Likes

Mình thử toàn bộ với số 0 rồi, nếu nhập 0 thì nó sẽ tự dừng sau khi nhập xong thôi. kể cả số n phần tử của mảng đó n=0 thì nó cũng tự dừng thôi, còn đề bài này cũng không đưa ra những yêu cầu nào khác. Ví dụ như những bài trước thường sẽ có yêu cầu in Error nếu nhập với số 0. Vì thế mình nghĩ điều đó chưa phải là mấu chốt.
Bạn có thể giúp mình viết theo ý của bạn với yêu cầu đề bài không.

Có thể có các trường hợp sau:

TH1: 0 0 0 0 // Chương trình sẽ bị lỗi chia cho 0 tại s2/y vì x=0 TH2: Người ra đề dốt toán, coi 0 là số dương.

4 Likes

Tui cảm thấy bạn chỉ muốn pass bài tập không phải là tìm ra giải thuật tốt.
Bạn thử gộp trường hợp số 0 thành số dương luôn xem.

6 Likes

Bạn thay đổi form dòng 22 là thay đổi như nào? Bạn thử thay dòng đó thành

printf("Mang khong co so am %lf",s1);

xem được ko.

ông học HUST à =))) bài này y bài thực hành của tôi :v Còn về câu trên, đoạn if else ở cuối để in kết quả của ông bị lủng củng, nhầm và thiếu trường hợp nhé :< Có vẻ ông đang bị rối hoặc chưa rõ lắm đoạn lệnh if. Ví dụ x==0&&y==0 thì sẽ thực hiện lệnh printf("%lf Mang khong co so duong",s2/y), ở đây sẽ xảy ra lỗi (vì y=0, k thể tính s2/y được ). Theo tôi ông nên tách cái đấy thành 2 cụm if else riêng biệt, chứ k gộp hết chung vào 1 khối lệnh như trên.

Dưới đây là bài làm của t, t đã submit r, ông tham khảo nhé.

#include int main () { int count,am,duong,n; int a[100000]; count=am=duong=0; scanf("%d",&n); for (int i=0;i

3 Likes

chính là nó, đó chắc là lỗi của người vết kết quả thôi.

mình tìm ra lỗi rồi, đó chỉ là lỗi của hệ thống chấm điểm thôi :(((

Home Categories FAQ/Guidelines Terms of Service Privacy Policy

  • lý thuyết
  • trắc nghiệm
  • hỏi đáp
  • bài tập sgk

Viết chương trình nhập mảng 10 phần tử nguyên. Sau đó đưa ra màn hình các số dương và tích của chúng

Các câu hỏi tương tự

  • lý thuyết
  • trắc nghiệm
  • hỏi đáp
  • bài tập sgk

viết chương trình nhập vào một dãy số hiển thị số âm, dương

Các câu hỏi tương tự