01/10/2018, 00:49
Có đoạn code C++ mong mọi người giúp đỡ
Hiện tại em đang làm bài tập dạng menu nhưng bị vướng từ số 3 trở đi , số 1 và 2 em kiểm tra ok rồi ạ, hiện tại không biết mong mọi người giúp em
#include<iostream>
#include<conio.h>
#include<math.h>
using namespace std;
int main()
{
int menu,c,l,n,i,max,min,chan,le;
int a[5];
n=5;
chan=0;
le=0;
for(i=0;i<n;i++)
{
cout<<"Nhap a["<<i<<"]";
cin>>a[i];
}
cout<<"Nhap 1 de xuat cac so chan"<<endl;
cout<<"Nhap 2 de xuat cac so le"<<endl;
cout<<"Nhap 3 de xuat so lon nhat"<<endl;
cout<<"Nhap 4 de xuat so be nhat"<<endl;
cout<<"Nhap 5 de xem co bao nhieu so chan"<<endl;
cout<<"Nhap 6 de xem co bao nhieu so le"<<endl;
cout<<"Chon mot tinh nang: ";
cin>>menu;
if(menu!=1 && menu!=2 && menu!=3 && menu!=4 && menu!=5 && menu!=6)
cout<<"Khong hop le, xin moi kiem tra lai";
for(i=0;i<n;i++)
{
if(menu==1 && a[i]%2==0)
{
cout<<"Cac so chan: "<<a[i]<<endl;
}
if(menu==2 && a[i]%2!=0)
{
cout<<"Cac so le: "<<a[i]<<endl;
}
if(menu==3)
{
max=a[0];
if(max<a[i])
max=a[i];
}
if(menu==4)
{
min=a[0];
if(min>a[i])
min=a[i];
}
}
if(menu==5 && a[i]%2==0)
{
chan++;
}
if(menu==6 && a[i]%2!=0)
{
le++;
}
cout<<"So lon nhat la: "<<max<<endl;
cout<<"So nho nhat la: "<<min<<endl;
cout<<"Co "<<chan<<" so chan"<<endl;
cout<<"Co "<<le<<" so le"<<endl;
}
Bài liên quan
Gợi ý cho bạn: Dùng cấu trúc switch…case để làm việc với menu đơn giản hơn
Như bạn @BoyChip đã nói, trong trường hợp tạo menu bạn nên dùng câu lệnh switch…case và bạn nên xem lại cách khai báo biến sao cho hợp lý đừng khai báo kiểu trong bài cần bao nhiêu biến khai báo hết từ đầu thế này. Bạn có thể tham khảo code sau:
int main()
{
int menu, c, l, n, max=0, min, chan, le;
int a[5];
n = 5;
chan = 0;
le = 0;
for (int i = 0; i < n; i++)
{
cout << “Nhap a[” << i << "]: ";
cin >> a[i];
}
cout << “Nhap 1 de xuat cac so chan” << endl;
cout << “Nhap 2 de xuat cac so le” << endl;
cout << “Nhap 3 de xuat so lon nhat” << endl;
cout << “Nhap 4 de xuat so be nhat” << endl;
cout << “Nhap 5 de xem co bao nhieu so chan” << endl;
cout << “Nhap 6 de xem co bao nhieu so le” << endl;
cout << "Chon mot tinh nang: ";
cin >> menu;
switch (menu)
{
case 1:
{
for each(int i in a) {
if (i % 2 == 0) cout << i << " ";
}
break;
}
case 2:
{
for each(int i in a) {
if (i % 2 != 0) cout << i << " ";
}
break;
}
case 3:
{
for each(int i in a) {
if (i > max) max = i;
}
cout << max << endl;
break;
}
case 4:
{
min = a[0];
for each(int i in a) {
if (i < min) min = i;
}
cout << min << endl;
break;
}
case 5:
{
for each(int i in a) {
if (i % 2 == 0) chan++;
}
cout << chan << endl;
break;
}
case 6:
{
for each(int i in a) {
if (i % 2 != 0) le++;
}
cout << le << endl;
break;
}
}
}
Cám ơn bạn nhưng hiện tại bài tập thầy mới dạy đến phần này thôi switch case gì khi học mình sẽ áp dụng sau
Mình khuyên bạn nên xem lại cách trình bày.
int canh_a,canh_b;
cout<<“Nhap vao canh a:”<<endl;
cin>>canh_a;
cout<<“Nhap vao canh b:”<<endl;
cin>>canh_b;
Bạn có thể viết thành ntn:
int canh_a,canh_b;
cout<<“Nhap vao canh a:”<<endl;
cin>>canh_a;
cout<<“Nhap vao canh b:”<<endl;
cin>>canh_b;
Chỉ thay đổi là thêm mấy cái xuống dòng đúng ko. Nhưng nó sẽ tao nên sự khác biệt rất lớn đó. Còn nhiều thứ khác nữa cơ. Bạn viết code không chỉ để tạo nên ct và nó chạy dc. Bạn còn phải tối ưu nó. Bạn phải viết sao cho dễ đọc, dễ hiểu và ngắn nhất.
PS: sau for ,if hay while hãy mở dấu {} ra cho dù chỉ có một lệnh. dĩ nhiên là phải xuống hàng nhé
Nếu chưa học switch case thì chắc cũng học về if else rồi nhỉ ???
Ý mình là nên cout nó ra như thế nào, còn else if thì mọi thứ ổn cả rồi các bạn
Theo ngu kiến của mình thì:
-coi code của bạn mình loạn về tên biến
-Bạn nên tách riêng ra từng hàm rồi mỗi chức năng gọi hàm đó vào để kiểm tra
Thân
trên đây là ngu kiến của mình,đáng nhẽ có thể viết ngắn hơn nhưng thôi viết hết ra cho bạn dễ thấy