英文:
Calculating intensity for an RGB Color
问题
I would like to ask how I can calculate my variable y for an RGB color intensity. These r, g, b letters in my RGB_Trypel struct are representing each array element for the arrays red, yellow, green, white, black. So I need to multiply these r, g, b array elements with the displayed numbers in my y variable.
I would appreciate some help.
#define CRT_SECURE_NO_WARNINGS
#include <stdio.h>;
struct RGB_Trypel
{
unsigned char r, g, b; // stores values only up to 255 and positive values
};
int main(void)
{
struct RGB_Trypel red = { 255, 0, 0 }, yellow = { 255, 255, 0 }, green = { 0, 255, 0 };
const struct RGB_Trypel white = { 255, 255, 255 };
const struct RGB_Trypel black = { 0, 0, 0 };
struct RGB_Trypel colorArray[5] = { red, yellow, green, white, black };
int n = 5;
unsigned char intensity(struct RGB_Trypel t)
{
int y;
y = 0.299 * t.r + 0.587 * t.g + 0.114 * t.b;
return y;
}
for (int i = 0; i < n; i++)
{
printf("(%3d, %3d, %3d): \t intensity(%d) \n", colorArray[i].r, colorArray[i].g, colorArray[i].b, intensity(colorArray[i]));
}
return 0;
}
Note: I've corrected some syntax issues in your code.
英文:
i would like to ask how i can calculate my variable y for an RGB color intensity.
These r,g,b letters in my RGB_Trypel struct are representing each array element for the arrays rot, gelb, gruen, weiss, schwarz. So i need here to multiply these r,g,b array elements with the shown numbers in my y variable.
i would really be glad for some help.
#define CRT_SECURE_NO_WARNINGS
#include <stdio.h>
struct RGB_Trypel
{
unsigned char r, g, b; // speichert Werte nur bis 255 und positive Werte
};
int main(void)
{
struct RGB_Trypel rot = { 255,0,0 }, gelb = { 255,255,0 }, gruen = { 0,255,0 };
const struct RGB_Trypel weiss = { 255,255,255 };
const struct RGB_Trypel schwarz = { 0,0,0 };
struct RGB_Trypel fafeld[5] = { rot, gelb, gruen, weiss, schwarz };
int n = 5;
unsigned char intensiteat(struct RGB_Trypel t);
{
int = y;
y = 0.299 * r + 0.587 * g + 0.114 * b;
}
for (int i = 0; i < n; i++)
{
printf("(%3d,%3d,%3d): \t intensiteat(%d) \n",fafeld[i].r, fafeld[i].g, fafeld[i].b, intensiteat(fafeld[i]);
}
return 0;
}
I am not really sure how i can put my struct array element into a function and let it multiply following numbers in my y variable.
答案1
得分: 1
unsigned char intensiteat(struct RGB_Trypel t)
{
int y;
y = 0.299 * t.r + 0.587 * t.g + 0.114 * t.bb;
}
You have other errors, but this should help you get started.
BTW, you missed an underscore at the beginning of that define. It should be:
#define _CRT_SECURE_NO_WARNINGS
英文:
Your big problem here is that this
unsigned char intensiteat(struct RGB_Trypel t);
{
int = y;
y = 0.299 * r + 0.587 * g + 0.114 * b;
}
looks like an attempt to define a function inside another function. This wont work. Move it to be before main. Like this:
unsigned char intensiteat(struct RGB_Trypel t)
{
int = y;
y = 0.299 * r + 0.587 * g + 0.114 * b;
}
int main(void)
{
second, to refer to fields of a struct inside that function do this:
unsigned char intensiteat(struct RGB_Trypel t)
{
int = y;
y = 0.299 * t.r + 0.587 * t.g + 0.114 * t.bb;
}
you have multiple other errors, but this will get you started
BTW you missed an _ of the front the that define. Should be:
#define _CRT_SECURE_NO_WARNINGS
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论