Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2012, 10:14   #1
aleks240295
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 16
По умолчанию проверьте что не так

Дан файл действительных чисел, каждая тройка чисел определяет на плоскости квадрат со сторонами, параллельными координатным осям,причем первые 2 числа,определяют координаты центра квадрата, а 3 число - длину его стороны. Определить имеются ли на плоскости точки принадлежащие все квадратам.


Код:
#include<stdio.h>
#include<string.h>
#include<conio.h>
void main()
{
  int x,y,a;
  float t,b,l,r;
  //FILE *file = fopen("Y:\\1g41-x\\G0lyakin\\tema6.txt","wb+");//
  FILE *file = fopen("E:\\programmi\\tema6.txt","wb");
  printf("vvedite x:");scanf("%i",&x);
  printf("vvedite y:");scanf("%i",&y);
  printf("vvedite a:");scanf("%i",&a);
  fwrite(&x,sizeof(double),1,file);
  fwrite(&y,sizeof(double),1,file);
  fwrite(&a,sizeof(double),1,file);
   rewind(file);
    fread(&x,sizeof(double),1,file);
    fread(&y,sizeof(double),1,file);
    fread(&a,sizeof(double),1,file);
  printf("%i %i %i\n",x,y,a);
  t=y+a/2; b=y-a/2;
  l=x-a/2; r=x+a/2;
  while(file!='\0'&& t>=b && r>=l)
  {
     printf("vvedite x:");scanf("%i",&x);
     printf("vvedite y:");scanf("%i",&y);
     printf("vvedite a:");scanf("%i",&a);
     fwrite(&x,sizeof(double),1,file);
     fwrite(&y,sizeof(double),1,file);
     fwrite(&a,sizeof(double),1,file);
      rewind(file);
     fread(&x,sizeof(double),1,file);
     fread(&y,sizeof(double),1,file);
     fread(&a,sizeof(double),1,file);
      printf("%i %i %i\n",x,y,a);
     if (a!=0)
     {
         if(x-a/2>l) l=x-a/2;
         if(x+a/2<r) r=x+a/2;
         if(y-a/2>b) b=y-a/2;
         if(y+a/2<t) t=y+a/2;
     }
  }
  if(t>=b && r>=l) printf("ect'");
   else printf("net");
  getch();
  fclose(file);
}

Последний раз редактировалось ACE Valery; 19.12.2012 в 15:19.
aleks240295 вне форума Ответить с цитированием
Старый 19.12.2012, 10:52   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

0) Код оформляется тегом форума CODE.
1) x имеет тип int, но записывается и читается как double.
Abstraction вне форума Ответить с цитированием
Старый 19.12.2012, 11:24   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

К замечаниям Abstractionа.
1) Кросспостинг (http://programmersforum.ru/showthread.php?t=222038) - неявный, но все же могли продолжать обсуждение 1 задачи в 1 теме
2) file != '\0', по-моему, так нельзя определять конец файла, для этого есть функция feof
3) rewind(file); - получается, что в файле будет всего 3 числа, т.к. эта функция сдвигает указатель на начало файла
4) Вам уже дан файл, и программа должна его обработать - предлагаю разбить ввод данных и задачу на 2 программы или сделать оператор условия в начале, что делать в данный момент: вводить данные или искать точки
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 19.12.2012, 18:13   #4
aleks240295
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 16
По умолчанию

значит сначала я должен осуществить ввод данных и записать их в файл потом цикл а в цикле что их из файла читать или что я не пойму ни как....
aleks240295 вне форума Ответить с цитированием
Старый 19.12.2012, 18:36   #5
aleks240295
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 16
По умолчанию

Код:
#include<stdio.h>
#include<string.h>
#include<conio.h>
void main()
{
  int x,y,a;
  float t,b,l,r;
  //FILE *file = fopen("Y:\\1g41-x\\G0lyakin\\tema6.txt","wb+");//
  FILE *file = fopen("E:\\programmi\\tema6.txt","wb");
  printf("vvedite x:");scanf("%i",&x);
  printf("vvedite y:");scanf("%i",&y);
  printf("vvedite a:");scanf("%i",&a);
  fwrite(&x,sizeof(int),1,file);
  fwrite(&y,sizeof(int),1,file);
  fwrite(&a,sizeof(int),1,file);
    fread(&x,sizeof(int,1,file);
    fread(&y,sizeof(int),1,file);
    fread(&a,sizeof(int),1,file);
  printf("%i %i %i\n",x,y,a);
  t=y+a/2; b=y-a/2;
  l=x-a/2; r=x+a/2;
  while(feof(file) && t>=b && r>=l)
  {
     printf("vvedite x:");scanf("%i",&x);
     printf("vvedite y:");scanf("%i",&y);
     printf("vvedite a:");scanf("%i",&a);
     fwrite(&x,sizeof(int),1,file);
     fwrite(&y,sizeof(int),1,file);
     fwrite(&a,sizeof(int),1,file);
     fread(&x,sizeof(int),1,file);
     fread(&y,sizeof(int),1,file);
     fread(&a,sizeof(int),1,file);
      printf("%i %i %i\n",x,y,a);
     if (a!=0)
     {
         if(x-a/2>l) l=x-a/2;
         if(x+a/2<r) r=x+a/2;
         if(y-a/2>b) b=y-a/2;
         if(y+a/2<t) t=y+a/2;
     }
  }
  if(t>=b && r>=l) printf("ect'");
   else printf("net");
  getch();
  fclose(file);
}

Последний раз редактировалось aleks240295; 19.12.2012 в 18:41.
aleks240295 вне форума Ответить с цитированием
Старый 19.12.2012, 18:45   #6
aleks240295
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 16
По умолчанию

мне 4 пункт не очень понятен что то...
aleks240295 вне форума Ответить с цитированием
Старый 19.12.2012, 19:27   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Не проверял:
Код:
#include<stdio.h>
#include<string.h>
#include<conio.h>
void main()
{
  int x,y,a,n,i;
  float t,b,l,r;
  FILE *file = fopen("E:\\programmi\\tema6.txt","wb");
  printf("vvedite n:");scanf("%i",&n);
  for (i=0;i<n;++i) {
    printf("vvedite x:");scanf("%i",&x);
    printf("vvedite y:");scanf("%i",&y);
    printf("vvedite a:");scanf("%i",&a);
    fwrite(&x,sizeof(int),1,file);
    fwrite(&y,sizeof(int),1,file);
    fwrite(&a,sizeof(int),1,file);
  }
  rewind(file);
  fread(&x,sizeof(int),1,file);
  fread(&y,sizeof(int),1,file);
  fread(&a,sizeof(int),1,file);
  t=y+a/2; b=y-a/2;
  l=x-a/2; r=x+a/2;
  while(!feof(file) && t>=b && r>=l)
  {
     fread(&x,sizeof(int),1,file);
     fread(&y,sizeof(int),1,file);
     fread(&a,sizeof(int),1,file);
     if (a!=0)
     {
         if(x-a/2>l) l=x-a/2;
         if(x+a/2<r) r=x+a/2;
         if(y-a/2>b) b=y-a/2;
         if(y+a/2<t) t=y+a/2;
     }
  }
  if(t>=b && r>=l) printf("ect'");
   else printf("net");
  getch();
  fclose(file);
}
Правда, это не 4 пункт.
Сначала записываем n квадратов в файл.
Затем считываем данные из файла и обрабатываем.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 19.12.2012 в 19:30.
BDA вне форума Ответить с цитированием
Старый 19.12.2012, 20:52   #8
aleks240295
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 16
По умолчанию

спасибо большое проверю завтра отпишусь
aleks240295 вне форума Ответить с цитированием
Старый 20.12.2012, 08:53   #9
aleks240295
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 16
По умолчанию

незнаю что такое вродь все правильно но результат ни какой не выводит
aleks240295 вне форума Ответить с цитированием
Старый 20.12.2012, 18:52   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
#include<stdio.h>
#include<string.h>
#include<conio.h>

void main()
{
    int x,y,a,n,i;
    float t,b,l,r;
    FILE *file = fopen(".\\tema6.txt","w+b");
    printf("vvedite n:");
    scanf("%i",&n);
    for (i=0; i<n; ++i)
    {
        printf("vvedite x:");
        scanf("%i",&x);
        printf("vvedite y:");
        scanf("%i",&y);
        printf("vvedite a:");
        scanf("%i",&a);
        fwrite(&x,sizeof(int),1,file);
        fwrite(&y,sizeof(int),1,file);
        fwrite(&a,sizeof(int),1,file);
    }
    rewind(file);
    fread(&x,sizeof(int),1,file);
    fread(&y,sizeof(int),1,file);
    fread(&a,sizeof(int),1,file);
    t=y+a/2;
    b=y-a/2;
    l=x-a/2;
    r=x+a/2;
    while(!feof(file) && t>=b && r>=l)
    {
        fread(&x,sizeof(int),1,file);
        fread(&y,sizeof(int),1,file);
        fread(&a,sizeof(int),1,file);
        if (a!=0)
        {
            if(x-a/2>l) l=x-a/2;
            if(x+a/2<r) r=x+a/2;
            if(y-a/2>b) b=y-a/2;
            if(y+a/2<t) t=y+a/2;
        }
    }
    if(t>=b && r>=l) printf("ect'");
    else printf("net");
    getch();
    fclose(file);
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что-то не так в программе...не пойму что Karina_Vamp Помощь студентам 5 24.12.2010 21:06
Проверьте. Что не так. Кромка матрицы Pixma Помощь студентам 0 09.12.2010 18:10
проверьте программу плиз и исправьте что там не так Gronex Помощь студентам 3 21.05.2009 17:01
проверьте пожалуйста, что не так, а то она не работает Анжелика Помощь студентам 2 06.12.2008 11:42