Мое упражнение:
Напишите программу, которая позволяет пользователю выбирать интенсивность цвета и прозрачность. Используйте одно перечисление для цветов и прозрачности —
RED
,GREEN
,BLUE
,ALPHA
, Использоватьfor
цикл, который использует набор перечислений для итерацииRED
вплоть доALPHA
включительно. Внутриfor
Цикл заставляет пользователя вводить значение для каждой перечисляемой константы (то есть значение для красного, значение для синего и т. д.), значения должны быть между0.0
а также1.0
и хранится в массиве.
#include <string>
#include <iostream>
enum Difficulty
{
RED,
GREEN,
BLUE,
ALPHA
};
int main(int argc, char* argv[])
{
char cColours[10][14] = { "RED", "GREEN", "BLUE", "ALPHA" };
float fArray[4];
int icounter = 0;
while (icounter != 5)
{
std::cout << "For colour " << cColours[icounter] << " please enter a number ranging from 0.0 - 1.0 " << std::endl;
std::cout << "press 10 to exit " << std::endl;for (int i = RED; i = ALPHA; i++)
std::cin >> fArray[i];
++icounter;
}
system("pause");
return 0;
}
Согласно комментариям вы хотите получить один цветовой микс (r, g, b, a). Вы используете вложенные массивы даром.
Итак, один из возможных кодов:
#include <iostream>
#include <string>
#include <stdio.h>
enum ColorChannels {RED = 0, GREEN, BLUE, ALPHA, ALL_CHANNELS};
/*Every enumeration gives values to its elements. In default the first element is zero,
I illustrated this here. So ALL_CHANNELS (or difficulty if you want is equal with four,
which is the number of all channels - this will be useful in loop*/
int main(int argc, char* argv[])
{
std::string names[ALL_CHANNELS];
names[RED] = "RED"; //this is same to names[0]
names[1] = "GREEN";
names[BLUE] = "BLUE";
names[3] = "ALPHA";
/*I'm not sure if char sequences work. If work, use it. I prefer more the strings*/
float colorArray[ALL_CHANNELS];
for (int i = 0; i < ALL_CHANNELS; i++)
{
std::cout << "Enter " << names[i] << " value between 0.0 and 1.0: ";
//For instance "Enter RED value between 0.0 and 1.0: "
//and NOW your read one parameter. You made a nested loop for nothing
std::cin >> colorArray[i];
std::cout << "\n"; //for a new line
}
// all elements read
system("pause");
return 0;
}
Попробуйте внести некоторые улучшения в упражнение, например, записать цвета назад; выписывая, если это более вероятно, красный, синий или зеленый; читать больше цветов; и т.п.
Других решений пока нет …