Привет всем, я в основном новичок в программировании.Я решил попробовать начать с C (, а не C ++ или C #), и до сих пор у меня все получалось.Мне удалось добраться до двумерных массивов, прежде чем я начал колебаться.Хотя я думаю, что я в целом понимаю двумерные целочисленные массивы, я, конечно, не понимаю трехмерные строковые массивы.
Я учусь, применяя методы и применяя их в реальной программе, которую я создал, в курсе валют "калькулятор ", который в основном требует, чтобы пользователь выбрал базовую валюту, а затем печатает ее значение в долларах США.Там нет математики, я просто погуглил такие вещи, как EUR / USD и вручную установил значения в массиве, который я обсуждаю ниже.
Но вот где я застреваю.Я полагаю, что лучший способ изучения многомерных массивов - это практическое применение теории, поэтому вот что я набрал до сих пор (для краткости я опустил другие функции моей программы (включая код, который вызывает эту функцию)):
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");
}}
}
Поскольку C не имеет строкового типа данных, построение строковых массивов полностью мешает моей голове.
Почему валюты [5] [3] [4]?Поскольку я храню в общей сложности 5 валют, каждая из которых помечена трехбуквенным символом (например, EUR, CAD), которые имеют значение до 4 цифр, включая десятичную точку.
I'mпытаясь отобразить этот список:
1 GBP 1,5
2 EUR 1,23
3 JPY 0,11
4 CAD 0,96
5 AUD 0,87
Когда я нажимаю build,строка, в которой я указываю значения в массиве, выделяется несколькими экземплярами этого предупреждения:
предупреждение: переполнение при неявном преобразовании констант
... и строкагде я печатаю содержимое массива выделяется этим предупреждением:
предупреждение: формат '% s' ожидает тип 'char *', но аргумент 2 имеет тип 'int'
После запуска кода остальная часть программы работает нормально, кроме этой функции, которая выдает "ошибку сегментации" или что-то подобное.
Может кто-нибудь помочь мне здесь?Мы будем благодарны за любую помощь, а также за любые ссылки на простые учебники по инициализации массива C 2D / 3D строк!(мои две книги, K & R и Teach Yourself C, содержат только расплывчатые примеры, которые не имеют отношения к делу)
Заранее спасибо!
-Ryan
РЕДАКТИРОВАТЬ: обновленный код с использованием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},};
}
Я получаю следующие ошибки: main.c: 99: ошибка: вложенные функции отключены, используйте -fnested-functions для повторного включения
main.c: 99: ошибка: ожидается '=', ',', ';', 'asm' или ' атрибут ' до '{' token
main.c: 100: ошибка: ожидается ';'до '}' токен
main.c: 100: ошибка: ожидаемое выражение до ',' токен
В самом окне самого кода каждый символ помечается как "неожиданный токен".