Bài tập số 21 -40

Trang 2 trong tổng số 2 trang Previous  1, 2

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Bài tập số 21 -40

Bài gửi  root on Wed Jan 19, 2011 1:41 am

First topic message reminder :

21. Viết hàm nhập một mảng số nguyên gồm n phần tử.
22. Viết hàm in mảng số nguyên gồm n phần tử
23. Viết hàm tìm phần tử lớn nhất của mảng
24. Viết hàm tìm phần tử lớn nhất trong mảng (trả về giá trị và chỉ số).
25. Viết hàm tìm phần tử nhỏ nhất trong mảng (trả về giá trị và chỉ số).
26. Viết hàm in ra các số nguyên tố trong mảng
27. Viết hàm đếm các số nguyên tố trong mảng
28. Viết hàm trung bình cộng các số nguyên tố trong mảng
29. Viết hàm tính tổng các phần tử chẵn chia hết cho 3.
210. Tính trung bình cộng các phần tử lẻ
31. Viết hàm tính tổng các số chính phương trong mảng
32. Viết hàm liệt kê các số chính phương trong mảng
33. Viết hàm sắp xếp mảng theo thứ tự tăng dần.
34. Viết hàm in ra các số lẻ theo thứ tự trị tuyệt đối tăng dần, các số chẵn theo thứ tự trị tuyệt đối giảm dần.
35. Hãy xoá bất kỳ phần tử trong mảng theo hai cách:
- Xoá khi biết vị trí muốn xoá.
- Xoá phần tử có giá trị là x.
36. Viết chương trình nhập vào một mảng 1 chiều, sau đó tìm xem trong mảng có đoạn tăng nào có số phần tử nhiều nhất.
37. Viết chương trình nhập vào một mảng 1 chiều, sau đó tìm xem trong mảng có đoạn tăng nào có tổng lớn nhất.
38. Viết chương trình nhập vào mảng 1 chiều có n phần tử (có thể dùng hàm randomize cho nhanh) sau đó xuất ra phần tử nào xuất hiện trong mảng nhiều nhất và xuất hiện bao nhiêu lần.
39. Cho mảng số nguyên độ dài n.
- In ra mảng con các phần tử dương dài nhất
- In ra mảng con có tổng lớn nhất.
VD: cho mảng -1 30 2 -2 3 1 5 6 -5 4 8
- In ra mảng con là: 3 1 5 6
- In ra: 30 2
40. Đảo mảng 1 chiều gồm n phần tử nhập từ bàn phím.

root
Admin

Tổng số bài gửi : 37
Join date : 03/01/2011
Age : 30
Đến từ : An Giang

Xem lý lịch thành viên http://www.huynhhai.co.cc

Về Đầu Trang Go down


Re: Bài tập số 21 -40

Bài gửi  chilinh on Mon Jan 24, 2011 9:24 am

cai thang chem gio spam !! nchnguyen nay ? anh em lam duoc thi cho anh em lam cang nhieu canh tot cheers thi co nhieu kinh nghiem hon khi viet code thoi em //// Laughing chem gio spam thi di cho khac ma chem gio lol!

chilinh

Tổng số bài gửi : 12
Join date : 10/01/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

[b]Bai_39[/b]

Bài gửi  nguyenthanhhau on Wed Jan 26, 2011 12:39 pm

Ý tưởng chủ yếu của bài này:
Vấn đề 1:tìm các mảng con có số luợng phần tử nhiều nhất.
B1:Tìm chỉ số cuối ,số lượng và tổng của số phần tử trên mảng gốc thỏa điều kiện là số dương.Mỗi lần như thế ta lưu vào struct MangCon {gồm các phần tử int cuoi,int dem,int tong}.
B2:Chọn ra mảng con nào có số lượngnhiều nhất thì lấy ra.(Lấy ra ở đây là lấy mảng con có số phần tử nhiều nhất).
B3:Có thể bước 2 ta chưa lấy hết do có thể có nhiều mảng con có số lượng phần tử bằng nhau.Nên ta phải lọc lại một bước để tìm ra mảng kết quả có số phần tử lớn nhất.Ở đây ta phải dùng thêm 1 mảng kết quả .
B4:Đây là bước in kết quả khi ta đã có mảng kết quả ở bước 3.Ở bước này, khi in ta chú ý:
+biến cuoi nói lên chỉ số khi ta lưu ở bước 1 .Ta lấy chỉ số này trừ cho số lượng(biến dem) của một mảng con và cộng thêm một.Lúc đó ta sẽ in tại vị trí cuoi-dem+1 của mảng gốc .
Vấn đề 2:Tín tổng các mảng con mà có tổng lớn nhất
Do ở bước 1 phía trên đã có mảng con .Lúc này ta chỉ cần so sánh các tổng của chúng ở mỗi mảng con thay vì tìm số lượng phần tử như vấn đề phía trên.
ở các bước sau cũng na ná như bước 2,3,4.
Để hiểu rõ hơn :Các bạn có thể xem code phía dưới ,Nếu có sai xót gì mong các bạn góp ý->
[Code]:
using System;
using System.Collections.Generic;
using System.Text;

namespace Bai40
{
public struct MangCon
{
public int cuoi;
public int dem;
public int tong;
/// <summary>
/// khoi tao gia tri ban dau cho mang con
/// </summary>
/// <param name="c"></param>
/// <param name="d"></param>
public MangCon(int c,int d)
{
this.cuoi = 0;
this.dem = 0;
this.tong = 0;
}
}
class Program
{
private MangCon []_mangCon;
private int[] mangGoc;


public Program()
{
}
//Nhap lieu cua mang goc
public void NhapMang(int n)
{
for (int i = 0; i < n; i++)
{
Console.Write("mang[{0}]=", i);
mangGoc[i] = int.Parse(Console.ReadLine());
}
}
//Xuat ket qua doi voi mang goc
public void Xuat(int []mg,int n)
{
for (int i = 0; i < n; i++)
Console.Write(mg[i]+" ");
}
/// <summary>
/// Xuat ket qua cua mang con
/// </summary>
/// <param name="n"></chi so cua mang>
/// <param name="_mkq"></mang ket qua sau khi da xu ly>
public void Xuat(int n,MangCon []_mkq)
{
int temp = 0;
int m=_mkq[0].dem;
for (int i = 0; i < n; i++)
{
Console.WriteLine("\nMang con[{0}]:", i);
temp = _mkq[i].cuoi-_mkq[i].dem;
for (temp=temp+1; temp <=_mkq[i].cuoi; temp++)
{
Console.Write(this.mangGoc[temp]+" ");
}

}
}
/// <summary>
/// Khoi tao gia tri
/// </summary>
/// <param name="n"></so phan tu>
public void KhoiTao(int n)
{
mangGoc = new int[n + 1];
_mangCon=new MangCon[n];
}
/// <summary>
/// ham tim mang con la so duong va co so luong phan tu nhieu nhat
/// </summary>
/// <param name="n"></so luong phan tu cua mang goc>
/// <param name="sl"></truyen theo tham chieu ,tra ve so mang con >
/// <param name="_mangKQ"></lay so mang con thoa dieu kien>
/// <returns></returns>
public int TimMangCon(int n,ref int sl,MangCon []_mangKQ)
{
//tim chi so,so luong,tong cuoi cua mang goc thoa dieu kien >0
int k = 0;
for (int i = 0; i < n; i++)
{
if (mangGoc[i] > 0)
{
this._mangCon[k].cuoi=i;
this._mangCon[k].dem++;
this._mangCon[k].tong += mangGoc[i];
}
else if (mangGoc[i + 1] > 0 && i != 0)
{
k++;
}
}
//Tim so phan tu nhieu nhat trong mang con
int Max_cd = _mangCon[0].dem;

for (int j = 0; j <= k; j++)
{
if (_mangCon[j].dem >= Max_cd)
{
Max_cd = _mangCon[j].dem;

}
}
//Kiem tra xem co con mang con nao co so phan tu giong voi so phan tu Max_cd
for (int z = 0; z <= k; z++)
{
if (_mangCon[z].dem == Max_cd)
{
_mangKQ[sl] = _mangCon[z];
sl++;
}

}
return k;
}
/// <summary>
/// tim mang con co tong lon nhat
/// </summary>
/// <param name="k"></so mang con lon hon khong>
/// <param name="sl"></tra ve kieu tham chieu do la so mang con co trung dieu kien>
/// <param name="_mangKQ"></lay mang con thoa dieu kien>
/// <returns></returns>
public int TimTongMangConLonNhat(int k, ref int sl, MangCon[] _mangKQ)
{
//Tim mang con nao do co tong lon nhat
int Max_tong = _mangCon[0].tong;
for (int j = 0; j <= k; j++)
{
if (_mangCon[j].tong >= Max_tong)
{
Max_tong = _mangCon[j].tong;

}
}
//kiem tra xem co con mang nao co tong bang Max_tong hay khong
for (int z = 0; z <= k; z++)
{
if (_mangCon[z].tong == Max_tong)
{
_mangKQ[sl] = _mangCon[z];
sl++;
}

}
return Max_tong;
}
static void Main(string[] args)
{

Program mc = new Program();
int n=0;
try
{
Console.Write("Nhap so luong phan tu trong mang(n>=1):");
n = int.Parse(Console.ReadLine());
if (n <= 0) throw new Exception();
mc.KhoiTao(n);
mc.NhapMang(n);
mc.Xuat(mc.mangGoc, n);

MangCon[] _mangKQ = new MangCon[n];
int sl = 0;
int k = mc.TimMangCon(n, ref sl, _mangKQ);
Console.WriteLine("\nCac Mang con co so phan tu duong nhieu nhat nam trong mang goc:");
mc.Xuat(sl, _mangKQ);

MangCon[] _mangKQT = new MangCon[n];
sl = 0;
int tongMangCon = mc.TimTongMangConLonNhat(k, ref sl, _mangKQT);
Console.WriteLine("\nTong lon nhat cua mang con la: " + tongMangCon);
mc.Xuat(sl, _mangKQT);
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}

Console.WriteLine();

}


}
}



nguyenthanhhau

Tổng số bài gửi : 6
Join date : 05/01/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Bài tập số 21 -40

Bài gửi  Sponsored content Today at 9:56 pm


Sponsored content


Về Đầu Trang Go down

Trang 2 trong tổng số 2 trang Previous  1, 2

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết