Создать файл содержащий сведения о кубиках - C (СИ)
Формулировка задачи:
1. Создать файл "Кубики", содержащий сведения о кубиках: размер (длина ребра), цвет (из семи цветов радуги), материал (дерево, металл, картон). Найти количество кубиков каждого из возможных цветов и их суммарный объем. 2. Создать файл f, компоненты которого являются целыми числами. Никакая из компонент не равна нулю. Файл f содержит равное число отрицательных и положительных чисел. Число компонентов файла делится на четыре. Используя вспомогательный файл, переписать компоненты файла f в файл g так, чтобы в файле g числа шли в следующем порядке: ++ -- ++ --..., то есть два положительных числа, два отрицательных числа и так далее.
Буду рада даже в помощи с одной задачей. Не могу разобраться с потоками.
Вторую решила.) Но если кто знает, как работать с первой - буду рада.
Решение задачи: «Создать файл содержащий сведения о кубиках»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
// size = тут все и так ясно :)
// color = 1 бит = черный, 2 бит -белый, и так далее.
// material = 0 = дерево , 1 = металл, 2=картон
struct cube {
int size;
int color[7];
int material[3];
};
int generateCube(int countCube)
{
FILE *fp;
int x = 0;
struct cube cub ={ 1,
{0,0,0,0,0,0,1},
{0,0,1} };
if (!(fp = fopen("cube.db", "w+")))
{
printf("error open file\n");
exit(0);
}
for(x=0; x<countCube; x++)
{
cub.size = x;
fwrite(&cub, sizeof(cub), 1, fp);
}
fclose(fp);
return 0;
}
int main(int argc, char *argv[])
{
struct cube cub;
FILE *fp;
int count = 1;
generateCube(10);
if (!(fp = fopen("cube.db", "r")))
{
printf("error open file\n");
exit(0);
}
while ((fread(&cub, sizeof(cub), 1, fp))!=0)
printf("Cube number[%3d]: Size cube: %d\n", count++,cub.size);
fclose(fp);
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: stdio.h и stdlib.h.
- Объявляется структура
cube, которая содержит три поля: размер кубика (целое число), массив цветов (целые числа) и массив материала (целые числа). - Определяется функция generateCube, которая генерирует кубики. Она открывает файл
cube.dbв режиме добавления (w+), записывает в него кубики и закрывает файл. - Определяется функция main. В ней создается экземпляр структуры
cube, открывается файлcube.dbв режиме чтения (r) и выполняется цикл, который читает из файла кубики и выводит их на экран. - Выполняется вызов функции generateCube с аргументом 10, чтобы создать 10 кубиков.
- После выполнения функции generateCube открывается файл
cube.dbв режиме чтения (r) и выполняется цикл, который читает из файла кубики и выводит их на экран. - Файл
cube.dbзакрывается. - Программа возвращает 0, что означает успешное выполнение.