You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// структура, представляющая информацию о плитке
typedef struct {
char type[20]; // тип плитки
double length; // длина плитки
double width; // ширина плитки
double price; // цена плитки
} tile;
// структура, представляющая информацию о помещении
typedef struct {
char name[50]; // название помещения
double length; // длина помещения
double width; // ширина помещения
double wallprotrusion; // выступы стены
double area; // площадь помещения
double volume; // объем помещения
} room;
// функция для чтения информации о строительных материалах из файла
tile* readtilesfromfile(char* filename, int* numtiles) {
FILE* file = fopen(filename, "r");
if (file == NULL) {
printf("не удалось открыть файл\n");
return NULL;
}
// функция для записи информации о материалах, помещениях и конструкциях в файл
void writedatatofile(char* filename, room* room, int numtiles, tile* tiles) {
FILE* file = fopen(filename, "w");
if (file == NULL) {
printf("не удалось открыть файл\n");
return;
}
// запись информации о помещении
fprintf(file, "%s %.2lf %.2lf %.2lf\n", room->name, room->length, room->width, room->wallprotrusion);
// запись информации о плитках
fprintf(file, "%d\n", numtiles);
for (int i = 0; i < numtiles; i++) {
fprintf(file, "%s %.2lf %.2lf %.2lf\n", tiles[i].type, tiles[i].length, tiles[i].width, tiles[i].price);
}
fclose(file);
}
// функция для вывода изображения помещения
void printroom(const room* room) {
int totallength = (int)room->length;
int totalwidth = (int)room->width;
for (int i = 0; i < totallength + 2; i++) {
printf("-");
}
printf("\n");
for (int i = 0; i < totalwidth; i++) {
printf("|");
for (int j = 0; j < totallength; j++) {
printf(" ");
}
printf("|\n");
}
for (int i = 0; i < totallength + 2; i++) {
printf("-");
}
printf("\n");
}
int main() {
setlocale(LC_ALL, "rus");
char filename[100];
int choice;
room room;
tile* tiles = NULL;
int numtiles = 0;
printf("введите название файла: ");
scanf("%s", filename);
// создание и открытие файла для записи
FILE* file = fopen(filename, "r");
if (file == NULL) {
printf("не удалось открыть файл\n");
return -1;
}
fclose(file);
// чтение данных из файла
tiles = readtilesfromfile(filename, &numtiles);
while (1) {
printf("\n ********************главное меню********************");
printf("\n1) рассчитать количество плиток и стоимость\n");
printf("2) вывести изображение помещения\n");
printf("3) запись информации в файл\n");
printf("4) изменить данные о помещении\n");
printf("5) считать данные из файла\n");
printf("6) вывести информацию о размерах плитки\n");
printf("7) выйти из программы\n");
printf("введите выбор (1-7): ");
scanf("%d", &choice);
switch (choice) {
case 1: // рассчитать количество плиток и стоимость
printf("введите длину помещения (в метрах): ");
scanf("%lf", &room.length);
printf("введите ширину помещения (в метрах): ");
scanf("%lf", &room.width);
printf("введите выступы стены (в метрах): ");
scanf("%lf", &room.wallprotrusion);
// вычисление площади пола
room.area = room.length * room.width;
// вычисление объема помещения
room.volume = room.area * room.wallprotrusion;
printf("площадь помещения: %.2lf м^2\n", room.area);
printf("объем помещения: %.2lf м^3\n", room.volume);
// вычисление площади и стоимости для каждой плитки
for (int i = 0; i < numtiles; i++) {
printf("введите цену за штуку плитки (в рублях): ");
scanf("%lf", &tiles[i].price);
double tilearea = tiles[i].length * tiles[i].width;
double numtotaltiles = room.area / tilearea + 0.5; // округляем результат к ближайшему целому
int roundednumtotaltiles = (int)round(numtotaltiles); // приводим результат к типу int
double totalprice = roundednumtotaltiles * tiles[i].price;
printf("для плитки %s:\n", tiles[i].type);
printf("необходимо %.0lf плиток\n", numtotaltiles);
printf("стоимость всего материала: %.2lf рублей\n", totalprice);
}
break;
case 2: // вывести изображение помещения
printf("введите название помещения: ");
scanf("%s", room.name);
printroom(&room);
break;
case 3: // запись информации в файл
writedatatofile(filename, &room, numtiles, tiles);
printf("данные успешно записаны в файл\n");
break;
case 4: // изменить данные о помещении
printf("введите длину помещения (в метрах): ");
scanf("%lf", &room.length);
printf("введите ширину помещения (в метрах): ");
scanf("%lf", &room.width);
printf("введите выступы стены (в метрах): ");
scanf("%lf", &room.wallprotrusion);
break;
case 5: // считать данные из файла
tiles = readtilesfromfile(filename, &numtiles);
break;
case 6: // вывести информацию о размерах плитки
printf("Размеры плитки:\n");
for (int i = 0; i < numtiles; i++) {
printf("Тип плитки: %s\n", tiles[i].type);
printf("Длина плитки: %.2lf\n", tiles[i].length);
printf("Ширина плитки: %.2lf\n", tiles[i].width);
printf("Цена плитки: %.2lf\n", tiles[i].price);
}
break;
case 7: // выйти из программы
printf("программа завершена\n");
return 0;
default:
printf("некорректный выбор\n");
break;
}
}
}
The text was updated successfully, but these errors were encountered:
Help with the code, please. The output of the tile cost and the total number of tiles does not work.
Code on C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define _crt_secure_no_deprecate
#include <stdio.h>
#include <stdlib.h>
#define _use_math_defines
#include <math.h>
#include <locale.h>
#pragma warning(disable : 4996)
// структура, представляющая информацию о плитке
typedef struct {
char type[20]; // тип плитки
double length; // длина плитки
double width; // ширина плитки
double price; // цена плитки
} tile;
// структура, представляющая информацию о помещении
typedef struct {
char name[50]; // название помещения
double length; // длина помещения
double width; // ширина помещения
double wallprotrusion; // выступы стены
double area; // площадь помещения
double volume; // объем помещения
} room;
// функция для чтения информации о строительных материалах из файла
tile* readtilesfromfile(char* filename, int* numtiles) {
FILE* file = fopen(filename, "r");
if (file == NULL) {
printf("не удалось открыть файл\n");
return NULL;
}
}
// функция для записи информации о материалах, помещениях и конструкциях в файл
void writedatatofile(char* filename, room* room, int numtiles, tile* tiles) {
FILE* file = fopen(filename, "w");
if (file == NULL) {
printf("не удалось открыть файл\n");
return;
}
}
// функция для вывода изображения помещения
void printroom(const room* room) {
int totallength = (int)room->length;
int totalwidth = (int)room->width;
}
int main() {
setlocale(LC_ALL, "rus");
char filename[100];
int choice;
room room;
tile* tiles = NULL;
int numtiles = 0;
}
The text was updated successfully, but these errors were encountered: