Xin chào mọi người, về cơ bản tôi mới lập trình. Tôi đã quyết định thử và bắt đầu với C (không C++ hoặc C#) và cho đến nay tôi đã làm khá tốt. Tôi đã xoay xở để tiến xa tới mảng hai chiều trước khi tôi bắt đầu ngập ngừng. Trong khi tôi nghĩ rằng tôi hiểu rộng rãi các mảng số nguyên 2D, tôi chắc chắn không hiểu mảng chuỗi 3D.Mới để lập trình, không nhận các mảng 2D/3D
Tôi đang học bằng cách sử dụng các kỹ thuật và áp dụng chúng trong chương trình thực tế mà tôi đã tạo, tỷ giá hối đoái "cơ bản" yêu cầu người dùng chọn đơn vị tiền tệ cơ bản rồi in giá trị bằng USD. Không có toán học liên quan, tôi chỉ đơn giản là googled công cụ như EUR/USD và thiết lập các giá trị bằng tay trong mảng mà tôi thảo luận dưới đây.
Nhưng đây là nơi tôi bị kẹt. Tôi tìm ra cách tốt nhất để học mảng đa chiều là áp dụng lý thuyết thực tế, vì vậy đây là những gì tôi đã gõ cho đến nay (tôi đã bỏ qua các chức năng khác của chương trình của tôi (bao gồm cả mã gọi hàm này) cho ngắn gọn) :
char currencies[5][3][4] = {
{'1','2','3','4','5'},
{'GBP','EUR','JPY','CAD','AUD'},
{'1.5','1.23','0.11','0.96','0.87'}
};
int point, symbol, value;
displayarraycontents()
{
for(point=1;point<5;point++){
for(symbol=1;symbol<5;symbol++){
for(value=1;symbol<5;symbol++)
printf("%s ", currencies[point][symbol][value]);
printf("\n");
}}
}
Vì C không có loại dữ liệu chuỗi, việc tạo mảng chuỗi hoàn toàn lộn xộn với đầu của tôi.
Lý do tiền tệ [5] [3] [4]? Bởi vì tôi đang lưu trữ tổng cộng 5 loại tiền tệ, mỗi loại được đánh dấu bằng ký hiệu 3 chữ cái (ví dụ: EUR, CAD), có giá trị tối đa 4 chữ số, bao gồm dấu thập phân.
Tôi đang cố gắng để hiển thị danh sách này:
1 GBP 1,5
2 1,23 EUR
3 JPY 0.11
4 CAD 0,96
5 AUD 0,87
Khi tôi bấm vào xây dựng, các dòng mà tôi chỉ định các giá trị trong mảng được đánh dấu bằng một số trường hợp cảnh báo này:
cảnh báo: tràn trong imp hợp pháp chuyển đổi liên tục
... và dòng mà tôi in nội dung của mảng được đánh dấu với cảnh báo này:
cảnh báo: định dạng '% s' hy vọng gõ 'char *', nhưng lập luận 2 có loại 'int'
Khi chạy mã, phần còn lại của chương trình hoạt động tốt ngoại trừ chức năng này, tạo ra "lỗi phân đoạn" hoặc somesuch.
Ai đó có thể cho tôi một bàn tay ở đây? Bất kỳ trợ giúp nào cũng sẽ được đánh giá rất cao, cũng như bất kỳ liên kết nào đến các hướng dẫn khởi tạo mảng chuỗi C 2D/3D đơn giản! (hai cuốn sách của tôi, K & R và Tự dạy C chỉ cung cấp các ví dụ mơ hồ không liên quan)
Cảm ơn bạn trước!
-Ryan
EDIT: cập nhật mã sử dụng struct:
struct currency {
char symbol[4];
float value[5];
};
void displayarraycontents(){
int index;
struct currency currencies[] {
{"GBP", 1.50},
{"EUR", 1.23},
{"JPY", 0.11},
{"CAD", 0.96},
{"AUD", 0.87},};
}
tôi nhận được các lỗi sau đây: chính.c: 99: error: chức năng lồng nhau bị vô hiệu hóa, sử dụng các hàm -fnested để kích hoạt lại
main.c: 99: error: expected '=', ',', ';', 'asm' hoặc 'thuộc tính 'before' {'token
main.c: 100: error: expected'; ' trước mã '}'
main.c: 100: lỗi: biểu thức mong đợi trước ',' mã thông báo
Trong cửa sổ mã thực tế, mọi biểu tượng đều được gắn cờ là "mã thông báo không mong muốn".
Chà, mã này không chỉ hoạt động mà bạn vừa mới giải thích một cách hoàn hảo một khái niệm hoàn toàn mới với tôi theo cách mà tâm trí của người mới bắt đầu có thể hiểu được. Massive ngón tay cái lên, người đàn ông! Cảm ơn. :) – Ryan
@Ryan: Bạn có chắc là bạn chưa thêm một '{' ở đâu đó? – caf
Vâng, tôi khá chắc chắn. Kiểm tra phần dưới cùng của bài đăng cập nhật của tôi cho mã tôi đang sử dụng. – Ryan