Quay lại   Cộng đồng C Việt > LẬP TRÌNH C++ | LẬP TRÌNH C | LẬP TRÌNH C++0X > Thắc mắc lập trình C/C++/C++0x

Trả lời
 
Các công cụ đề tài Các chế độ hiển thị
  #1  
Cũ 25-09-2010, 09:45 AM
No Avatar
thaitudienha thaitudienha là offline
Thành viên mới
 
Ngày gia nhập: 09 2010
Bài viết: 2
Exclamation

Viết chương trình nhập vào mảng 1 chiều gồm n phần tử


Bài 1:
a) Viết chương trình nhập vào mảng 1 chiều gồm n phần tử (với n nhập từ bàn phím).
b) In danh sách các phần tử của mảng lên màn hình gồm tên phần tử và giá trị của từng phần tử.
c) Sao chép tất cả các phần tử của mảng vừa nhập sang mảng A.
d) Đão ngược giá trị của các phần tử trong mảng A và Hiển thị kết quả ra màn hình.
e) Sắp xếp giá trị các phần tử theo thứ tự tăng dần.

Bài 2:
Nhập ma trận vuông A, B gồm n dòng và n cột từ bàn phím . Tính tích 2 ma trận T = AxB .
a. Tính tổng các phần tử nằm trên 2 đường chéo của ma trân T.
b. Tìm giá trị lớn nhất trên mỗi dòng của ma trận T và lưu vào mảng 1 chiều S. Hiển thị giá trị của các phần tử trong mảng S ra màn hình.




Bài 3: Viết chương trình dạng Menu in ra màn hình:

Chọn 1: Tìm Max hai số a,b
Chọn 2: Giải phương trình bậc 2 (ax2 + bx + c =0)
Chọn 3: Thoát chương trình.

Khi người chạy chương tình nhập số 1 sẽ tìm Max hai số, khi nhập số 2 giải PT và nhập số 3 sẽ thoát chương trình còn người dùng nhập ký tự khác sẽ thông báo và yêu cầu nhập lại.

Các anh có thể tải tệp đính kèm về xem và làm giúp em với. Em xin cảm ơn.
Các file đã đính kèm
Kiểu file: doc Bài tap.doc (48.0 KB, 46 lần xem)

Đã được chỉnh sửa lần cuối bởi peterdrew : 25-09-2010 lúc 10:19 AM. Lý do: Đổi tiêu đề cho phù hợp!
Trả lời cùng với trích dẫn
  #2  
Cũ 25-09-2010, 03:17 PM
No Avatar
newbie.blind newbie.blind là offline
Awaiting Email Confirmation
 
Ngày gia nhập: 03 2010
Bài viết: 33
Mặc định

Bài 1.

Code:
#include"stdio.h"
#include "conio.h"

void Nhap(int a[], int n);
void Xuat(int a[], int n);
void SaoChep(int a[], int b[], int n); // sao chep a sang b
void DaoNguoc(int a[], int n);
void SapXep(int a[], int n);

void main()
{
    int a[100], b[100];
    int n;        // so phan tu cua mang

    printf("Nhap so phan tu cua mang : ");
    scanf("%d",&n);
    Nhap(a,n);
    Xuat(a,n);
    printf("\nmang a sau khi dao nguoc : ");
    DaoNguoc(a,n);
    Xuat(a,n);
    SaoChep(a,b,n);
    printf("\nMang b sau khi sao chep tu mang a : ");
    Xuat(b,n);
    printf("\nmang a sau khi sap xep tang dan : ");
    SapXep(a,n);
    Xuat(a,n);

}

void Nhap(int a[], int n)
{
    for(int i = 0; i < n; i++)
    {
        printf("nhap a[%d] : ",i);
        scanf("%d",&a[i]);
    }
}

void Xuat(int a[], int n)
{
    for(int i = 0; i < n; i++)
    {
        printf("%d  ",a[i]);
    }
}

void SaoChep(int a[], int b[], int n)
{
    for(int i = 0; i < n; i++)
    {
        b[i] = a[i];
    }
}

void DaoNguoc(int a[], int n)
{
    int temp;
    int j = n-1;
    for (int i = 0; i <= n/2; i++)
    {
        temp = a[i];
        a[i] = a[j];
        a[j] = temp;
        j--;
    }
}

void SapXep(int a[], int n)
{
    int temp;
    for(int i = 0; i < n; i++)
    {
        for (int j = i; j < n; j++)
        {
            if(a[i] > a[j])
            {
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
    }
}
còn mấy bài kia tự suy nghĩ đi nhé. mỏi tay quá làm 1 bài thôi.
Trả lời cùng với trích dẫn
  #3  
Cũ 25-09-2010, 04:13 PM
No Avatar
alex1026 alex1026 là offline
Thành viên mới
 
Ngày gia nhập: 09 2010
Bài viết: 18
Mặc định

Thực ra bài này mình có làm rồi, nhưng mình không có thói quen đưa bài giải lên vì như vậy sẽ làm mất tính chủ động của bạn.
Bài 2.

Hai ma trận nhân với nhau A kích thước m*n nhan với B n*p = ma trận C m*p.
cách tính Cij cho ai ma trận A, B thỏa mãn ĐK nhân ma trận, không nhất thiết là vuông, còn khi vuông thi càng dễ
Code:
for (i = 0; i<m ; i++)
           for (j=0; j< p; j++)
                       for (h=0; h< n; h++)  Cij = Aih * Bhj;
a)
câu này chỉ không biết là trong trường hợp ma trận có 2 đường chéo giao nhau tại một phần tử thì phần tử đó được tính mấy lần.
Nhưng nói thật câu này bạn nên tự suy nghĩ và giải vì nó không có bất kì kiến thức nào khó khăn ở đây cả.

b) câu này mình chỉ sẽ giúp bạn đoạn code tìm phần tử lớn nhất của môt mảng thôi. Việc tìm phần tử lớn nhất củ một dòng cũng chỉ là tìm phần tử lớn nhất của môt mảng, việc còn lại bạn nên tự xử lý. giả sử có mảng A có n phần tử.
Code:
int max;
max = A[0];
for (i =0; i<n; i++) if (A[i]>max) max = A[i];
Bài 3 Mình chỉ giúp bạn chỗ vòng lặp thể hiện menu chọn thôi.
Code:
do
{
    cout <<"Chọn 1: Tìm Max hai số a,b" << endl;
    cout <<"Chọn 2: Giải phương trình bậc 2 (ax2 + bx + c =0)" << endl;
    cout <<"Chọn 3: Thoát chương trình." << endl;	
    cin>> n;
    switch(n)
    {
          case 1: <xu ly viec tim so lon trong hai so, goi ham hay lam gi thi tuy ban> ; break;
          case 2: <xu ly giai phương trinh>; break;
     }
} while (n!=3)
Có thể bạn không hài lòng với phương pháp giúp đỡ của mình, nhưng như thế bạn mới chịu code và tìm hiểu, Thân
Trả lời cùng với trích dẫn
  #4  
Cũ 26-09-2010, 02:21 PM
No Avatar
thaitudienha thaitudienha là offline
Thành viên mới
 
Ngày gia nhập: 09 2010
Bài viết: 2
Mặc định

Mình cảm ơn 2 bạn nhiều.
Trả lời cùng với trích dẫn
  #5  
Cũ 20-11-2012, 09:08 PM
No Avatar
thedong91bn thedong91bn là offline
Thành viên mới
 
Ngày gia nhập: 10 2012
Bài viết: 6
Mặc định

Trích dẫn:
Nguyên bản được gửi bởi alex1026 Xem bài viết
Thực ra bài này mình có làm rồi, nhưng mình không có thói quen đưa bài giải lên vì như vậy sẽ làm mất tính chủ động của bạn.
Bài 2.

Hai ma trận nhân với nhau A kích thước m*n nhan với B n*p = ma trận C m*p.
cách tính Cij cho ai ma trận A, B thỏa mãn ĐK nhân ma trận, không nhất thiết là vuông, còn khi vuông thi càng dễ
Code:
for (i = 0; i<m ; i++)
           for (j=0; j< p; j++)
                       for (h=0; h< n; h++)  Cij = Aih * Bhj;
a)
câu này chỉ không biết là trong trường hợp ma trận có 2 đường chéo giao nhau tại một phần tử thì phần tử đó được tính mấy lần.
Nhưng nói thật câu này bạn nên tự suy nghĩ và giải vì nó không có bất kì kiến thức nào khó khăn ở đây cả.

b) câu này mình chỉ sẽ giúp bạn đoạn code tìm phần tử lớn nhất của môt mảng thôi. Việc tìm phần tử lớn nhất củ một dòng cũng chỉ là tìm phần tử lớn nhất của môt mảng, việc còn lại bạn nên tự xử lý. giả sử có mảng A có n phần tử.
Code:
int max;
max = A[0];
for (i =0; i<n; i++) if (A[i]>max) max = A[i];
Bài 3 Mình chỉ giúp bạn chỗ vòng lặp thể hiện menu chọn thôi.
Code:
do
{
    cout <<"Chọn 1: Tìm Max hai số a,b" << endl;
    cout <<"Chọn 2: Giải phương trình bậc 2 (ax2 + bx + c =0)" << endl;
    cout <<"Chọn 3: Thoát chương trình." << endl;	
    cin>> n;
    switch(n)
    {
          case 1: <xu ly viec tim so lon trong hai so, goi ham hay lam gi thi tuy ban> ; break;
          case 2: <xu ly giai phương trinh>; break;
     }
} while (n!=3)
Có thể bạn không hài lòng với phương pháp giúp đỡ của mình, nhưng như thế bạn mới chịu code và tìm hiểu, Thân
Cảm ơn bạn nhiều nhé!thế là được rồi,muốn học môn này phải động não thôi không máy móc được
Trả lời cùng với trích dẫn
  #6  
Cũ 22-11-2012, 09:47 PM
No Avatar
chunexpress chunexpress là offline
Thành viên mới
 
Ngày gia nhập: 05 2011
Bài viết: 3
Mặc định

Một vài thao tác cơ bản khác trong mảng 1 chiều. Qua đó cậu tham khảo nhé.

Code:
#include <iostream.h>
#include <conio.h>

#define MAX 100
///-----------------------------------
/// Thao Tac Voi Mang So Nguyen-------
/// 1. Sua 1 phan tu------------------
/// 2. Them moi 1 phan tu-------------
/// 3. Xoa 1 phan tu------------------
/// 4. Sap xep - Tang + Giam----------
/// Update :19/11/12 by Bravo-Team--
///-----------------------------------

void nhap(int,int);
void xuat(int,int);
void sua(int,int,int,int);
void them(int,int,int,int);
void xoa(int,int,int);
void sapxep(int,int,int);
int main();
int menu(int,int);
  /////////////////
 //Cac ham chinh//
/////////////////
void nhap(int &n, int a[])
{
	//Nhap so phan tu can nhap. (0 < n < 10)
	do
	{
		cout<<endl<<"Hay nhap n phan tu: ";
		cin>>n;
		if(n<1||n>10)
		{
			//clrscr();
			cout<<endl<<"Khong kha dung. Moi nhap lai (1->10)";
		}		
	}while(n<1||n>10);
	// Nhap phan tu vao mang.
	cout<<endl<<"Bat dau nhap mang :";
	for(int i = 0; i < n; i++)
	{
		cout<<endl;
		cout<<"a["<<i<<"]: ";
		cin>>a[i];
	}
}

void xuat(int n, int a[])
{
	cout<<endl;
	//cout<<"Danh sach mang duoc nhap vao nhu sau:"<<endl;
	///Dong thong bao da them vao trong moi ham xu ly khac.
	for(int i = 0; i < n; i++)
	{
		cout<<'\t';
		cout<<a[i];
	}
}
////////////////////////////////////////////////////////////////////
/// Ham sua, voi 'vt' la vi tri can sua, 'k' la gia tri thay the.//
//////////////////////////////////////////////////////////////////
void sua(int n, int a[], int &vt, int &k)
{
	//Bat loi nhap sai vi tri
	do{
		cout<<endl<<"Hay nhap vi tri can sua trong mang tren :";
		cin>>vt;
	if(vt < 1 || vt > n)
	{
		//clrscr();	//Xoa man hinh cu.
		cout<<"Khong kha dung, Hay nhap lai 0 < Vi tri < "<<n+1<<endl;
	}
	}while(vt < 1 || vt > n);	
	cout<<endl<<"Nhap vao gia tri can thay the : ";
	cin>>k;
	for(int i = 1; i  <= n; i++)	//Phai chay tu 1-n neu nhap theo 1,2,3
	{
		if(i==vt)
		a[i-1] = k;	//Tru i cho 1 de nhap theo thu tu 1,2,3....
	}
	cout<<"Phan tu thu "<<vt<<"da duoc thay the thanh cong. Danh sach hien tai :";
	xuat(n,a);
}

void them(int n, int a[], int &vt, int &k)
{
	//Bat loi nhap sai vi tri
	do{
		cout<<endl<<"Hay nhap vi tri can them moi trong mang tren :";
		cin>>vt;
	if(vt < 1 || vt > n)
	{
		//clrscr();	//Xoa man hinh cu.
		cout<<"Khong kha dung, Hay nhap lai vi tri: 1 --> "<<n;
	}
	}while(vt < 1 || vt > n);
	cout<<endl<<"Nhap vao gia tri can them(chen) : ";
	cin>>k;
	//Dang TEST
	if(vt==n)	//Them vao cuoi mang.
	{
		a[n-1]=k;
	}
	else if(vt > 0 && vt < n)	//Them vao vi tri dau tien den gan cuoi cua mang.
	{
		///
		///vt-1 : Vi mang chay tu 0-->n-1. Neu ko user se phai nhap tu 0,1,2,3
		///
		for(int i = n-1; i >vt-1; i--)
		{
			a[i] = a[i-1]; 	//Day? danh sach tu sau vi tri ve ben phai. De co cho trong cho vi tri nhap
		}
		for(i = 0; i < n; i++)
		{
			if(i==(vt-1))	//User nhap 1 thi vi tri se bang  vt-1 = 0. 
			a[i]=k;
		}
	}
	cout<<"Phan tu thu "<<vt<<"da duoc them thanh cong. Danh sach hien tai :";
	xuat(n,a);	//goi ham in ra danh sach vua moi them.
}

void xoa(int n, int a[], int &vt)
{
	do{
		cout<<endl<<"Hay nhap vi tri can xoa trong mang tren :";
		cin>>vt;
	if(vt < 1 || vt > n+1)
	{
		//clrscr();	//Xoa man hinh cu.
		cout<<"Khong kha dung, Hay nhap lai vi tri: 1 --> "<<n+1;
		
	}
	}while(vt < 1 || vt > n+1);	//Vi da xoa n-- nen phai tang 1.
	/*Xoa vi tri da chon*/
	for(int i = 0; i < n; i++)
	{
		if(i==(vt-1))
		a[i]=NULL;
	}
	/*Dua cac phan tu sau vi tri da xoa ve ben trai*/
	///De mo----------
	///	5 3 4 2 1
	/// 5 x 4 2 1
	/// 5 4 2 1
	///---------------
	for(i = vt-1; i <n; i++)
	{
		a[i]= a[i+1];
	}
	cout<<"Phan tu thu "<<vt<<"da duoc xoa thanh cong. Danh sach hien tai :"<<endl;
	xuat(n,a);	//In ra ket qua sau khi xoa thanh cong !
}


void sapxep(int n, int a[], int mode =1)
{
	for(int i = 0; i < n-1; i++)
		for(int j =i+1; j<n; j++)
		if(a[i]>a[j]==mode)
		{			
			int temp = a[i];
			a[i] = a[j];
			a[j] = temp;
		}
}

/*Ham Menu*/
int menu(int n, int a[])
{
	clrscr();		// Xoa het man hinh thao tac nhap
	cout<<"Mang hien tai nhu sau:"<<endl;
	xuat(n,a);	//in ra mang sau khi duoc thao tac.
	cout<<endl;
	
	cout<<"-------------------------------------------------------"<<endl;
	cout<<"	1. Sua 1 phan tu tai vi tri bat ky"<<endl;
	cout<<"	2. Them 1 phan tu tai vi tri bat ky"<<endl;
	cout<<"	3. Xoa 1 phan tu tai vi tri bat ky"<<endl;
	cout<<"	4. Sap xep mang Tang - Giam"<<endl;
	
	cout<<"	0. Thoat chuong trinh"<<endl;
	cout<<"-------------------------------------------------------"<<endl;
	cout<<"	Hay chon cac phim chuc nang de thao tac :"<<endl;
	int choice;
	cin>>choice;
	return choice;
}
/*Ham Main*/
int main()
{
	clrscr();		// Clear the screen
	textcolor(GREEN);//Color: CYAN, RED, BLUE, MAGENTA  v.v...
	int choice;
	int a[MAX];
	int n;
	int vt;
	int k;
	int mode;
	nhap(n,a);	
	while(1)
	{
		//textcolor(CYAN);
		choice=menu(n,a);	
		switch (choice)
		{
			case 1: sua(n,a,vt,k); break;
			case 2: n++; them(n,a,vt,k);break;
			case 3: n--; xoa(n,a,vt) ;break;
			case 4: cout<<"Ban muon sap xep Tang hay Giam. Nhap 1 neu Tang - 0 neu giam:";
					cin>>mode;
					sapxep(n,a,mode); 
					cout<<"Danh sach sau khi sap xep nhu sau:"<<endl;
					xuat(n,a);break;
			
		}	
		if(choice==0)break;
		getch();
	}
	return 0;
}

Đã được chỉnh sửa lần cuối bởi chunexpress : 22-11-2012 lúc 10:08 PM.
Trả lời cùng với trích dẫn
Trả lời
Google
 

Bookmarks

Các công cụ đề tài
Các chế độ hiển thị

Các nguyên tắc gửi bài
Bạn không thể gửi đề tài mới
Bạn không thể gửi bài trả lời
Bạn không thể gửi các đính kèm
Bạn không thể chỉnh sửa bài viết của bạn

[IMG] code: On
HTML code: Off

Nhảy tới diễn đàn

Các đề tài tương tự
Đề tài Người bắt đầu đề tài Diễn đàn Các trả lời Bài viết cuối
Bài tập C++ Nhập mảng 1 chiều, nếu phần tử nhập trùng nhau thì bắt nhập lại danielh Thắc mắc lập trình C/C++/C++0x 3 09-07-2011 03:35 PM
Bài tập C Viết chương trình khởi tạo giá trị các phần tử là 0 cho mảng một chiều các số nguyên gồm n phần tử. anhtran Thắc mắc lập trình C/C++/C++0x 16 04-06-2011 11:36 AM
Viết chương trình nhập vào mảng 1 chiều, sau đó tìm xem có đoạn tăng nào có tổng lớn nhất viettan Nhập môn lập trình C/C++ 2 23-02-2011 04:03 PM
Viết hàm tìm phần tử xuất hiện nhiều nhất trong mảng 1 chiều các số nguyên? fire_dragon14988 Thắc mắc lập trình C/C++/C++0x 46 28-08-2010 05:14 PM
Bài tập C Viết chương trình để tìm giá trị lớn nhất và nỏ nhất trong 1 mảng ( Mảng 1 chiều) vinkt Thắc mắc lập trình C/C++/C++0x 6 26-08-2010 10:34 PM


Toàn bộ thời gian tính theo múi GMT +7. Bây giờ là 09:13 AM.