Определить площадь каждого прямоугольника - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задать файл, содержащий координаты левого верхнего и нижнего правого угла прямоугольника – целые числа типа int. Определить площадь каждого прямоугольника, упорядочить эти значения по возрастанию и записать в файл. Нужно решит задачу на C вот код, но у меня не работает цикл (не выдает "неверное условие"), там a--x1, b--y1, c--x2, d--y2
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
struct koord{
int a;
int b;
int c;
int d;
} zap[40], zap1[40],t;
FILE *Fzap;
void main(void)
{ int i,j,a,b,c,d,S,size=sizeof(koord),N, nn=0;
clrscr();
 
Fzap=fopen("d:\\koord.dat","wb");
puts("Vvedi kol-vo pramoygolnikov ");
fflush(stdin);
scanf("%d",&N);
printf(" n=%d\n",N);
for (j=0; j<N; j++)
{ puts("vvedi a ");
fflush(stdin);
scanf("%d",&zap[j].a);
puts("vvedi b");
fflush(stdin);
scanf("%d",&zap[j].b);
puts("vvedi c");
fflush(stdin);
scanf("%d",&zap[j].c);
puts("vvedi d");
fflush(stdin);
scanf("%d",&zap[j].d);
fwrite(&zap[j], size, 1, Fzap); //5
}
{
if ((c>a) && (d<b)) S=fabs((c-a)*(b-d));    //проверка координат (явл-тся ли прямоугольником)
else puts("\n nevernoe yslovie");
}
 
puts("\ninfo");
for (j=0; j<N; j++)
{
printf("%3d %3d %3d %3d \n",zap[j].a, zap[j].b,zap[j].c,zap[j].d);
}
 
fclose(Fzap);
getch();
}
и еще вопрос: как записать в файл площади??? t - это буферная переменная, zap1 - для упорядоченных площадей

Решение задачи: «Определить площадь каждого прямоугольника»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <locale.h>
 
#define MAX_ZAPS 100
#define FILE_NAME "d:\\koord.txt"
 
typedef struct koord {
    int x1; int y1; // координаты левой верхней точки
    int x2; int y2; // координаты нижней правой точки
    int S;          // площадь
};
 
int main(int argc, char ** argv)
{
    FILE *Fzap;
    struct koord zap[MAX_ZAPS];
    struct koord *z = zap; // используем этот указатель вместо индекса
    int size = sizeof(struct koord), j, N;
 
    // чистим экран
    system("cls");
    setlocale(LC_ALL, "Russian");   
 
    // вводим кол-во
    printf("Введите кол-во прямоугольников: ");
    if (!scanf("%d", &N)) { fflush(stdin); N = 10; }
    if (N >= MAX_ZAPS || N < 1) N = MAX_ZAPS;
 
    // вводим данные в файл    
    Fzap = fopen(FILE_NAME, "wb");
    j = 0;
    for (;;)
    {
        printf("прямоугольник №%d\n", j + 1);
        printf("x(1): "); scanf("%d", &z->x1);
        printf("y(1): "); scanf("%d", &z->y1);
        printf("x(2): "); scanf("%d", &z->x2);
        printf("y(2): "); scanf("%d", &z->y2);
        if ((z->x2 > z->x1) && (z->y2 < z->y1))
        {
            // пишем в файл
            z->S = fabs((z->x2 - z->x1) * (z->y1 - z->y2));
            fwrite(z, size, 1, Fzap);
            ++z;
            if (++j == N) break;
        }
        else
            printf("\n неверное условие\n");
    }
    fclose(Fzap);
 
    // выводим координаты из файла из файла
    Fzap = fopen(FILE_NAME,"rb");
    if (!Fzap) { printf("немогу открыть файл :(\n"); return 1; }
 
    // читаем из файла
    fread(&zap, size, N, Fzap);
    z = zap;
    // выводим на консоль каждую запись
    for (j = 0; j < N; ++j)
    {
        printf("(%d;%d) (%d;%d) %d\n", z->x1, z->y1, z->x2, z->y2, z->S);
        ++z;
    }
    fclose(Fzap);
 
    // ждем когда пользователь нажмет кнопку
    system("pause");
    return 0;
}

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

  1. Подключаем необходимые библиотеки
  2. Определяем структуру koord для хранения координат прямоугольников и их площади
  3. Устанавливаем размерность структуры koord
  4. Инициализируем переменные для ввода и вывода данных
  5. Запрашиваем у пользователя количество прямоугольников
  6. Проверяем корректность ввода и, при необходимости, устанавливаем значение по умолчанию
  7. Открываем файл для записи данных
  8. Организуем цикл для ввода данных о каждом прямоугольнике
  9. Проверяем условие для прямоугольника (разница между x2 и x1 положительна, а разница между y2 и y1 отрицательна)
  10. Если условие выполняется, то записываем данные в файл и переходим к следующему прямоугольнику
  11. Если условие не выполняется, то выводим сообщение об ошибке и прерываем цикл
  12. Закрываем файл
  13. Открываем файл для чтения данных
  14. Проверяем, удалось ли открыть файл
  15. Если файл успешно открыт, то читаем данные из файла
  16. Выводим данные на консоль
  17. Закрываем файл
  18. Ждем нажатия кнопки пользователем
  19. Завершаем программу

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


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

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

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