Создать файл содержащий сведения о кубиках - 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;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы: stdio.h и stdlib.h.
  2. Объявляется структура cube, которая содержит три поля: размер кубика (целое число), массив цветов (целые числа) и массив материала (целые числа).
  3. Определяется функция generateCube, которая генерирует кубики. Она открывает файл cube.db в режиме добавления (w+), записывает в него кубики и закрывает файл.
  4. Определяется функция main. В ней создается экземпляр структуры cube, открывается файл cube.db в режиме чтения (r) и выполняется цикл, который читает из файла кубики и выводит их на экран.
  5. Выполняется вызов функции generateCube с аргументом 10, чтобы создать 10 кубиков.
  6. После выполнения функции generateCube открывается файл cube.db в режиме чтения (r) и выполняется цикл, который читает из файла кубики и выводит их на экран.
  7. Файл cube.db закрывается.
  8. Программа возвращает 0, что означает успешное выполнение.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы