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;
}
Nguyễn Trọng Phương viết 03:01 ngày 01/10/2018

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

HDT viết 02:57 ngày 01/10/2018

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;
}
}
}

hochoi viết 02:55 ngày 01/10/2018

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

Mai Hữu viết 02:51 ngày 01/10/2018

Mình khuyên bạn nên xem lại cách trình bày.

  • Tên biến đừng có đặt a,b,c,l,q,… Đặt rõ ràng nó là cái j đi
  • Tiếp theo là cách trình bày. VD như ntn nhé
    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é

Tynk Huynk viết 03:01 ngày 01/10/2018

Nếu chưa học switch case thì chắc cũng học về if else rồi nhỉ ???

if(menu == 1){
    // do something
}else if(menu == 2){
    // do something
}else if(menu == 3{
    // do something
}......
hochoi viết 02:54 ngày 01/10/2018

Ý 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

Nguyễn Văn Vương viết 03:05 ngày 01/10/2018

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

Nguyễn Văn Vương viết 02:55 ngày 01/10/2018

include< iostream>

#include< conio.h>
#include< math.h>
using namespace std;

void TimMAX(int a[5]);
void Sole(int a[5]);
void SoChan(int a[5]);
void XuatMang(int a[5]);
void TimMin(int a[5]);
void TimSoChan(int a[5]);
void TimSoLe(int a[5]);
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];
}
system(“CLS”);
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”;

if (menu == 1 )
{
system(“CLS”);
XuatMang(a);
SoChan(a);
}
if (menu == 2)
{
system(“CLS”);
XuatMang(a);
Sole(a);
}
if (menu == 3)
{
system(“CLS”);
XuatMang(a);
TimMAX(a);
}
if (menu == 4)
{
system(“CLS”);
XuatMang(a);
TimMin(a);
}
{
if (menu == 5 )
{
system(“CLS”);
XuatMang(a);
TimSoChan(a);
}
if (menu == 6)
{
system(“CLS”);
XuatMang(a);
TimSoLe(a);
}

}
}

void TimMAX(int a[5])
{
int max;
max = a[0];
for (int i = 0; i < 5; i++)
{
if (max<a[i])
max = a[i];
}

cout << "So lon nhat la: " << max << endl;
}
void TimMin(int a[5])
{
int min;
min = a[0];
for (int i = 0; i < 5; i++)
{
if (min>a[i])
min = a[i];
}

cout << "So be nhat la: " << min << endl;
}
void Sole(int a[5])
{
cout << “\nNhung so le trong mang la:\t”;
for (int i = 0; i < 5; i++)
if (a[i] % 2 != 0)
cout << a[i] << “\t”;
cout << “.\n”;
}
void SoChan(int a[5])
{
cout << “\nNhung so chan trong mang la:\t”;
for (int i = 0; i < 5; i++)
if (a[i] % 2 == 0)
cout << a[i] << “\t”;
cout << “.\n”;
}
void XuatMang(int a[5])
{
cout << “\nMang hien hanh la:\n”;
cout << “\n=================================\n”;
for (int i = 0; i < 5; i++)
cout << a[i] << “\t”;
cout << “\n=================================\n”;
}
void TimSoChan(int a[5])
{
cout << "\nTrong mang co: “;
int dem = 0;
for (int i = 0; i < 5; i++)
if (a[i] % 2 == 0)
dem++;
cout << dem << " so chan.\n”;
}
void TimSoLe(int a[5])
{
cout << "\nTrong mang co: “;
int dem = 0;
for (int i = 0; i < 5; i++)
if (a[i] % 2 != 0)
dem++;
cout << dem << " so le.\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

Bài liên quan
0