Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вычислительная геометрия на плоскости 
:(
    Опции темы
rubaka
Дата 13.12.2010, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 2.12.2010

Репутация: нет
Всего: нет



Помогите с двумя задачами (на си):

1. http://acmp.ru/?main=task&id_task=117
2. http://acmp.ru/?main=task&id_task=370

Или хотябы объясните алгоритм smile 
PM MAIL   Вверх
rubaka
Дата 15.12.2010, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 2.12.2010

Репутация: нет
Всего: нет



Задача 370:

Код

#include <stdio.h>
int main(){
FILE *in,*out;
in=fopen("input.txt","r");
out=fopen("output.txt","w");

float s;
int n,min;
char x[500];
char y[500];
fscanf(in,"%d",&n);
for(int i=0;i<n;i++)
fscanf(in,"%d %d",x[i], y[i]);
x[n+1]=x[0];
y[n+1]=y[0];
min=y[0];
for(int i=1;i<n;i++){
if(min>y[i]) 
min=y[i];
else 
for(int i=0;i<n+1;i++)
y[i]=y[i]-min;
}
s=0.0;
for(int i=0;i<n;i++){
s=s+((y[i+1]+y[i])*(x[i+1]-x[i])/2);
}
fprintf(out,"%d",s);
fclose(in);
fclose(out);
}


Компилируется, но вылетает при запуске. В чем ошибка?
PM MAIL   Вверх
rubaka
Дата 15.12.2010, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 2.12.2010

Репутация: нет
Всего: нет



Код

#include <stdio.h>
main(){
FILE *in,*out;
in=fopen("input.txt","r");
out=fopen("output.txt","w");
 
float s;
int n,min;
char x[50];
char y[50];
fscanf(in,"%d",&n);
for(int i=0;i<n;i++)
{
fscanf(in,"%d",&x[i]);
fscanf(in,"%d",&y[i]);
}
x[n]=x[0];
y[n]=y[0];
 
min=y[0];
for(int i=1;i<n;i++)
if(min>y[i])min=y[i];
 
for(int i=0;i<n+1;i++)
y[i]=y[i]-min;
 
s=0;
for(int i=0;i<n;i++){
s=s+((y[i+1]+y[i])*(x[i+1]-x[i])/2);
}
if(s<0);
s=-s;
fprintf(out,"%1.1f",s);
fclose(in);
fclose(out);
}


Отредактировал.. Почти все нормально: заместо 3.5 3.0.. Где я напутал? 


Это сообщение отредактировал(а) rubaka - 15.12.2010, 10:18
PM MAIL   Вверх
RastaDja
Дата 15.12.2010, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 1.11.2010

Репутация: 3
Всего: 5



я вот так сделал
Код

#include "stdafx.h"
#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{
    FILE *in,*out;
    in=fopen("D:\\input.txt","r");
    out=fopen("D:\\output.txt","w");
    float s;
    int n;
    int x[500];
    int y[500];
    fscanf(in,"%d",&n);
    for(int i=0;i<n;i++)
        fscanf(in,"%d %d", &x[i], &y[i]);
    x[n] = x[0];
    y[n] = y[0];
    double plos = 0;
    for (int i=0;i<n;i++){
        plos += (x[i]*y[i+1]-y[i]*x[i+1]);
    }
    s = plos/2;
            
    fprintf(out,"%f",s);
    fclose(in);
    fclose(out);
    
    return 0;
}

почти тоже что и у тебя, для +значений есть abs функция

Добавлено через 9 минут и 13 секунд
#include <math.h>

s = fabs(plos)/2;


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
rubaka
Дата 15.12.2010, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 2.12.2010

Репутация: нет
Всего: нет



Цитата(RastaDja @  15.12.2010,  10:20 Найти цитируемый пост)
я вот так сделал

Не компилируется 
stdafx.h: No such file or directory. 
`_TCHAR' has not been declared 
 ISO C++ forbids declaration of `argv' with no type 
PM MAIL   Вверх
RastaDja
Дата 15.12.2010, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 1.11.2010

Репутация: 3
Всего: 5



 
Цитата

stdafx.h: No such file or directory. 

закоментируй
Код

int _tmain(int argc, _TCHAR* argv[])[quote]
[/quote]

измен на 
Код

main()



--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
rubaka
Дата 15.12.2010, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 2.12.2010

Репутация: нет
Всего: нет



Вот код кому надо:

Код

#include <stdio.h>
main(){
FILE *in,*out;
in=fopen("input.txt","r");
out=fopen("output.txt","w");
 
float s;
int n,min;
long x[50000];
long y[50000];
fscanf(in,"%d",&n);
for(int i=0;i<n;i++)
{
fscanf(in,"%d",&x[i]);
fscanf(in,"%d",&y[i]);
}
x[n]=x[0];
y[n]=y[0];
 
min=y[0];
for(int i=1;i<n;i++)
if(min>y[i])min=y[i];
 
for(int i=0;i<n+1;i++)
y[i]=y[i]-min;
s=0.0;
for(int i=0;i<n;i++){
s=s+(((float)y[i+1]+(float)y[i])*((float)x[i+1]-(float)x[i])/2);
}
if(s<0)
s=-s;
fprintf(out,"%1.1f",s);
fclose(in);
fclose(out);
}


RastaDja спасибо за ответ..

Это сообщение отредактировал(а) rubaka - 15.12.2010, 11:24
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0493 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.