Xin hỏi về lỗi thêm và xóa phần tử trong mảng một chiều C Sharp
Mình đang học C# và đang mần mảng 1 chiều nhưng chả hiểu sao lỗi tè le,mới tiếp xúc C# nên còn nhiều băn khoăn,mong mọi người chỉ ra lỗi cho chứ đừng edit code rồi ném qua,mình " không tiêu " được
My code:
https://drive.google.com/open?id=0B_p7PlV-es4-d1B6QVlTRERPRnM
Mình xin hỏi thêm vài vấn đề:
Vấn đề thứ nhất là có cách nào tạo số ngẫu nhiên khác nhau để đưa chúng vào trong mảng không,mình có tham khảo google nhưng toàn sài list
Vấn đề thứ hai cho mình hỏi làm sao để copy đường dẫn của 1 file trong VS2015,như ví dụ bọn mình nhập mảng 1 chiều từ file data.txt nhưng mình toàn phải làm thủ công để copy đường dẫn của nó chứ không làm như thầy lấy đường dẫn trực tiếp trong phần mềm
Vd:C:UsersquangOneDriveDocumentsVisual Studio 2015Projects estMangMotChieudata.txt
Mình xin chân thành cảm ơn
A. Với code thêm:
Bạn lỗi nằm ở việc bạn khai báo mảng có
int[] a = new int[5] { 2, 4, 6, 8, 10 };
nên chỉ có tối đa 5 phần tử là a[0], a[1] … a[4]. Nếu chương trình duyệt a[5] thì sẽ quăng exception “Chỉ số vượt ngoài giới hạn của mảng”.B. Với code xoá:
Cùng một lỗi với code thêm.
=> Cách sửa với cả 2: Thay vì khai báo
int[] a = new int[5] { 2, 4, 6, 8, 10 };
ta khai báo như sau:Thực ra thì khai báo như thế này nó vẫn sẽ lỗi nếu như mảng có 6 phần tử (tức là khi length==6) :))
Có 2 cách giải quyết ổn thoả hơn
a) Dùng List
b) Mỗi khi thêm phần tử thì không dùng mảng a mà tạo mảng b = new int[length+1] rồi thêm giá trị mới vào b, thêm vào b xong thì
a=b;
C. Với vấn đề lấy đường dẫn từ trong phần mềm…
Cái này, bạn dùng Console nó hơi dị (Vẫn làm được nhưng hơi dị). Để tầm 6h chiều mình sẽ code cho bạn một project mẫu trên Console nhé. Mình vào làm việc đây :))
D. Với vấn đề sinh số ngẫu nhiên
Bạn có thể học cách dùng System.Random, rất đơn giản. Trong cái pj (6h chiều) mình sẽ đưa luôn
bạn tìm chỗ nào mà người ta toàn dùng list nhỉ ? Mảng random thì cứ tạo mảng rồi dùng Random sinh số ra sau đó gán vào từng phần tử của nó thôi.
mình không tiện đưa diễn đàn khác vô đây,cái code nó đại loại như sau:
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
Console.Write(" {0} ", SinhSoNgauNhien());
}
static int SinhSoNgauNhien()
{
int Number = 0;
Random rd = new Random();
Number = rd.Next(1, 100);
return Number;
}
Thường thì mình sẽ nhận được 10 số giống nhau bạn à,mình mới học được 1 bữa trên trường,thầy bảo về nhà tìm hiểu hôm sau lên học cho thoải mái,đang cày C++ giờ sang C# có vài cái khác quá
Cảm ơn bạn đã cho mình hướng giải quyết và chỉ cho mình sai chỗ nào
C.Có lẽ tớ chưa diễn đạt đúng , đây là 1 code mình tìm hiểu được từ thầy
static void NhapTuFile(int[] mang, ref int length)
{
string line = “”;
using (StreamReader sr = new StreamReader(@“C:\Users\Tran Thong\Source\Repos\OOP2018\ConsoleApplication2\Mang1Chieu\data.txt”))
{
while ((line = sr.ReadLine()) != null)
{
mang[length++] = int.Parse(line);
}
}
}
D.Rất mong bạn cho mình code mẫu,C# khác nhiều hàm quá,mình muốn sinh số ngẫu nhiên để làm 1 hàm nhập mảng tự động cho mỗi lần test
Vụ bạn sinh 10 số giống nhau là do thế này:
Random() không phải là sinh số ngẫu nhiên thực sự, nó chỉ giả ngẫu nhiên thôi, sử dụng TimeStamp hiện thời để làm seed (Hoặc có thể dùng Random(int seed) để dùng seed khác thay vì thời gian hiện thời).
Bạn chạy vòng for với i từ 0 đến 10, chắc tốn không đến 1ms nên 10 cái new Random() có seed giống hệt nhau, đâm ra Random.Next() cũng giống hệt nhau. Bạn phải khai báo new Random() ở ngoài vòng for thì các số sinh ra mới khác nhau được.
Xem ra code của mình nó phức tạp quá mức :))
http://puu.sh/tVdnJ.rar
Đoạn nào không hiểu cứ inbox hoặc pm qua fb, mình sẽ “cố” giải thích :v
Về cái này thì bạn cần sửa lại phương thức SinhSoNgauNhien một chút là được, hoặc dùng cách của bạn kia
bạn tối giản hết cỡ được không,học C# mới được có 1 ngày,đọc code của bạn của nhiều cái lạ quá nên mình hiểu sơ sơ thôi
Nó không như hàm rand() trong C++ nhỉ,loằng nhoằng ghê luôn nhưng cảm ơn bạn đã code lại cho mình
Tặng bạn hàm sinh một mảng số ngẫu nhiên nhé
Cảm ơn bạn nhiều lắm,chúc bạn một ngày vui vẻ,C# nhiều lệnh khác C++ quá,mình toàn vác System(“pause”) qua,lỗi từa lưa
mình cũng học C++ trước C#. Hồi mới học cũng có bỡ ngỡ. Và đến giờ thì mình quên gần hết C++ rồi. Mình “cuồng” C# vì mình thấy cú pháp của nó cực kỳ sáng sủa, phân cấp rất rõ ràng, được hỗ trợ sẵn nhiều thứ, nên giờ mình coi như biết mỗi C# :))
Mình trong trường học Java, coi như chuyên về Java luôn, từ app desktop đến Java web. Quen cách viết code của Java, qua C# không quá nhiều trở ngại, chỉ cần nghiên cứu thêm những đặc tính của C# thôi. Giờ học lại C++ lại rất ngán vì cú pháp của nó khiến mình khá rối (học theo kiểu đã biết về các thành phần cơ bản thì bị vướng cú pháp, học lại từ đầu thì ngán ) Mà thà học lại chứ dùng kiến thức Java bỏ qua C++ chắc không chịu nổi
Tớ vẫn thích C++ hơn nhưng công nhận C# nhanh hơn nhiều
trường tớ dạy C# trước java cậu à,thầy kêu học C# xong học JAVA nó dễ hơn