C/C++

Найти количество кубиков каждого из перечисленных цветов и их суммарный объем, на СИ

задача: дан массив структур,содержащий сведения о кубиках: размер каждого кубика(длина ребра в см) и его цвет (красный, желтый, зелёный, синий). Найти количество кубиков каждого из перечисленных цветов и их суммарный объем. Данные взять из созданного файла... при решении задачи обязательно использовать массивы структур.

Помогите, пожалуйста, написать программу!!! Я примерно представляю как необходимо это сделать: создаём файл, задаём количество кубиков, заполняем значения о размере и цвете этих кубиков, потом считываем файл, считаем суммарный объём и выводим значение на экран.
Но моих знаний не хватает, чтобы произвести данные операции, помогите пожалуйста...
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

// Определяем структуру "Кубик"
struct Cube {
float size; // Размер кубика
string color; // Цвет кубика
};

int main() {
const int MAX_SIZE = 100; // Максимальное количество кубиков
Cube cubes[MAX_SIZE]; // Массив структур для хранения данных о кубиках
int count_red = 0, count_yellow = 0, count_green = 0, count_blue = 0; // Счетчики количества кубиков каждого цвета
float total_volume = 0; // Общий объем кубиков

ifstream fin("cubes.txt"); // Открываем файл с данными

if (! fin.is _open()) { // Проверяем, удалось ли открыть файл
cout << "Ошибка открытия файла!" << endl;
return -1;
}

int n = 0; // Счетчик кубиков

// Читаем данные из файла и сохраняем их в массив структур
while (fin >> cubes[n].size >> cubes[n].color) {
// Увеличиваем счетчик количества кубиков каждого цвета
if (cubes[n].color == "красный") {
count_red++;
} else if (cubes[n].color == "желтый") {
count_yellow++;
} else if (cubes[n].color == "зелёный") {
count_green++;
} else if (cubes[n].color == "синий") {
count_blue++;
}

// Увеличиваем общий объем кубиков
total_volume += cubes[n].size * cubes[n].size * cubes[n].size;

n++; // Увеличиваем счетчик кубиков
}

fin.close(); // Закрываем файл

// Выводим результаты на экран
cout << "Количество красных кубиков: " << count_red << endl;
cout << "Количество желтых кубиков: " << count_yellow << endl;
cout << "Количество зеленых кубиков: " << count_green << endl;
cout << "Количество синих кубиков: " << count_blue << endl;
cout << "Общий объем кубиков: " << total_volume << " см^3" << endl;

return 0;
}
Дмитрий Згожев
Дмитрий Згожев
773
Лучший ответ
Дмитрий Згожев Предполагается, что файл cubes.txt имеет следующий формат:

3.5 красный
2.0 желтый
4.1 зелёный
1.7 синий
...
Дмитрий Згожев
         // Увеличиваем общий объем кубиков    
total_volume += cubes[n].size * cubes[n].size * cubes[n].size;

n++; // Увеличиваем счетчик кубиков
}

fclose(fin); // Закрываем файл

// Выводим результаты на экран
printf("Количество красных кубиков: %d\n", count_red);
printf("Количество желтых кубиков: %d\n", count_yellow);
printf("Количество зеленых кубиков: %d\n", count_green);
printf("Количество синих кубиков: %d\n", count_blue);
printf("Общий объем кубиков: %.2lf см^3\n", total_volume);

return 0;
}
Ерхат Габеденов main.c: In function ‘main’:
main.c:13:5: error: unknown type name ‘Cube’; use ‘struct’ keyword to refer to the type
13 | Cube cubes[MAX_SIZE]; // Массив структур для хранения данных о кубиках
| ^~~~
| struct
main.c:26:43: error: request for member ‘size’ in something not a structure or union
26 | while (fscanf(fin, "%lf %s", &cubes[n].size, cubes[n].color) != EOF) {
| ^
main.c:26:58: error: request for member ‘color’ in something not a structure or union
26 | while (fscanf(fin, "%lf %s", &cubes[n].size, cubes[n].color) != EOF) {
Ерхат Габеденов main.c:28:28: error: request for member ‘color’ in something not a structure or union
28 | if (strcmp(cubes[n].color, "красный") == 0) {
| ^
main.c:30:35: error: request for member ‘color’ in something not a structure or union
30 | } else if (strcmp(cubes[n].color, "желтый") == 0) {
| ^
main.c:32:35: error: request for member ‘color’ in something not a structure or union
32 | } else if (strcmp(cubes[n].color, "зелёный") == 0) {
| ^
Ерхат Габеденов main.c:34:35: error: request for member ‘color’ in something not a structure or union
34 | } else if (strcmp(cubes[n].color, "синий") == 0) {
| ^
main.c:38:33: error: request for member ‘size’ in something not a structure or union
38 | total_volume += cubes[n].size * cubes[n].size * cubes[n].size;
| ^
main.c:38:49: error: request for member ‘size’ in something not a structure or union
38 | total_volume += cubes[n].size * cubes[n].size * cubes[n].size;
| ^
за неделю не получилось написать?
Ерхат Габеденов к сожалению... есть намётки, но они не работают! вот и обратился за помощью)