#c #list
#c #Список
Вопрос:
Я хочу удалить повторение в этом коде:
printf( "%.2f: %sn", 440.00f, "A4" );
printf( "%.2f: %sn", 523.25f, "C5" );
printf( "%.2f: %sn", 880.00f, "A5" );
printf( "%.2f: %sn", 1046.50f, "C6" );
Мой план состоит в том, чтобы составить список пар и перебрать его. Возможно ли это и является хорошим решением, или я должен просто создать два массива?
Комментарии:
1. Вы также можете создать один массив пар. Зависит от того, как вы получаете свои данные.
2. @Mat: Мой вопрос в том, как создать массив пар 🙂
Ответ №1:
Просто создайте массив структур:
struct pair {
double num;
char str[32];
};
struct pair pairs[10] = {
{440.00f, "A4"},
{523.25f, "C5"},
/* ... */
};
/* C99. */
pairs[2] = (struct pair){880.00f, "A5"};
pairs[3] = (struct pair){
.str = "C6",
.num = 1046.50f
};
for (i = 0; i < sizeof(pairs) / sizeof(pairs[0]); i )
printf("%.2f: %sn", pairs[i].num, pairs[i].str);
Комментарии:
1. В качестве альтернативы, выполните
double nums[COUNT] = { ... }; char strs[COUNT][32] = { ... }; for(i = 0; i < COUNT; i ) printf("%.2f: %sn", nums[i], strs[i]);
2. Спасибо! Каков самый аккуратный способ инициализации списка в коде?