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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2008, 15:06   #1
Jondeer
Пользователь
 
Регистрация: 27.10.2007
Сообщений: 42
Печаль точки плоскости, заданные своими координатами, попадают в круг с радиусом R

Здравствуйте!!! Помогите пожалуйста отладить программу!!!!
Задача: Если все точки плоскости, заданные своими координатами, попадают в круг с радиусом R и центром в начале координат, определить их среднюю абсциссу и ординату, иначе распечатать номера точек, не попавших в заданный круг.

Код:
Код:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void main()
{
int n,k,i,R;
float X[50],Y[50],X_sr,Y_sr;
FILE *put,*out;
 put=fopen("C:\\put.txt","r");
 out=fopen("C:\\out.txt","w");
 if (put==0)
  {
   printf("oshibka vvoda");
   exit;
  }
 k=X_sr=Y_sr=0;
fscanf(put,"%d",&R);
 fscanf(put,"%d\n",&n);
for (i=0;i<n;i++)
  fscanf(put,"%f",&X[i]);
 fscanf(put,"\n");
 for (i=0;i<n;i++)
  fscanf(put,"%f",&Y[i]);

for (i=1;i<n;i++)
if((pow(X[i],2)+pow(Y[i],2))<=(R*R))
{  
k++;
}
if (k<n)
{for (i=1;i<n;i++)
if((pow(X[i],2)+pow(Y[i],2))>(R*R)) 
fprintf (out," %5.2f   %5.2f ",X[i],Y[i]);

}
else
{for (i=1;i<n;i++)
{
X_sr=X_sr+X[i];
Y_sr=Y_sr+Y[i];
}

X_sr=X_sr/n;
Y_sr=Y_sr/n;

fprintf(out,"   %5.2f    %5.2f  ",X_sr,Y_sr);
}
fclose(put);
 fclose(out);
}
Используйте тег <CODE> и вообще ошибка то какая!? Или прикажите нам ето еще компилить?

Последний раз редактировалось merax; 15.06.2008 в 15:12.
Jondeer вне форума Ответить с цитированием
Старый 15.06.2008, 18:01   #2
Jondeer
Пользователь
 
Регистрация: 27.10.2007
Сообщений: 42
По умолчанию

Короче! Он среднюю абс и орд считает,а точки не попавшие не выдаёт!!!
Jondeer вне форума Ответить с цитированием
Старый 15.06.2008, 20:15   #3
Игорь007
Пользователь Подтвердите свой е-майл
 
Аватар для Игорь007
 
Регистрация: 30.05.2008
Сообщений: 96
По умолчанию

Во-первых функция
Код:
exit(int status);
должна принимать EXIT_FAILURE или EXIT_SUCCESS (1 или 0);

Во-вторых незачем ставить в функции fscanf "\n" - он все равно здесь не работает. Если будет считан конец строки, указатель позиции в файле сам перейдет на следующую строку.

Код:
#include <stdio.h>   
#include <math.h>   
#include <stdlib.h>   
void main()   
{  
	int n,k,i,R;  
	float X[50],Y[50],X_sr,Y_sr;  
	FILE *put,*out;  
	put=fopen("C://put.txt","r");  
	out=fopen("C://out.txt","w");  
	if (put == 0 || out == 0)  
	{  
		printf("oshibka vvoda");
		fclose(put);   
		fclose(out);
		exit(EXIT_FAILURE);  
	}   
	k=X_sr=Y_sr=0;   
	fscanf(put,"%d",&R);   
	fscanf(put,"%d",&n);   
	for (i=0;i<n;i++)   
		fscanf(put,"%f",&X[i]);      
	for (i=0;i<n;i++)   
		fscanf(put,"%f",&Y[i]);   
	for (i=0;i<n;i++)   
		if((pow(X[i],2)+pow(Y[i],2))<=(R*R))   
		{    
			k++;  
		}   
		if (k<n)   
		{
			for (i = 0;i<n;i++)  
				if((pow(X[i],2)+pow(Y[i],2))>(R*R))   
					printf (" %5.2f   %5.2f ",X[i],Y[i]);  

		}   
		else   
		{for (i=0;i<n;i++)  
		{  
			X_sr=X_sr+X[i];  
			Y_sr=Y_sr+Y[i];  
		}   

		X_sr=X_sr/n;   
		Y_sr=Y_sr/n;   

		fprintf(out,"   %5.2f    %5.2f  ",X_sr,Y_sr);   
		}   
		fclose(put);   
		fclose(out);
                system("PAUSE");   
}

Последний раз редактировалось Игорь007; 15.06.2008 в 20:54. Причина: Не могу без ошибок
Игорь007 вне форума Ответить с цитированием
Старый 15.06.2008, 22:38   #4
Jondeer
Пользователь
 
Регистрация: 27.10.2007
Сообщений: 42
По умолчанию

Чё та не выводит данные в out! А может ктонить написать её с поцедурами????

Последний раз редактировалось Jondeer; 15.06.2008 в 23:23.
Jondeer вне форума Ответить с цитированием
Старый 15.06.2008, 23:34   #5
Игорь007
Пользователь Подтвердите свой е-майл
 
Аватар для Игорь007
 
Регистрация: 30.05.2008
Сообщений: 96
По умолчанию

Я понял так, что если все координаты входят, то записываем средние значения в файл. Если нет, то просто выводим на дисплей те координаты, что не вошли. Если нужно все записывать в файл - поменяй строку 35 (в моем варианте) на
Код:
fprintf (out, " %5.2f   %5.2f ",X[i],Y[i]);
Игорь007 вне форума Ответить с цитированием
Старый 15.06.2008, 23:52   #6
Jondeer
Пользователь
 
Регистрация: 27.10.2007
Сообщений: 42
По умолчанию

ПОЧЕМУ-ТО файл out.txt Не выводит!!!!
Jondeer вне форума Ответить с цитированием
Старый 16.06.2008, 00:06   #7
Игорь007
Пользователь Подтвердите свой е-майл
 
Аватар для Игорь007
 
Регистрация: 30.05.2008
Сообщений: 96
По умолчанию

Вот файл put.
Попробуй его открыть. А ты точно на С: файл создаешь?
Вложения
Тип файла: txt put.txt (27 байт, 155 просмотров)
Игорь007 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
КАК нарисовать круг Elmut Общие вопросы Delphi 5 27.05.2008 14:54
Опредилите попадает ли точка с координатами(х,у) в круг радиуса R Dog Помощь студентам 2 19.05.2008 19:14
Нарисовать круг Brunette Помощь студентам 2 17.05.2008 00:01
Отбражение чисел - точки, это точки, а не запятые, обозначающие дробную часть Дикий Помощь студентам 7 12.05.2008 17:57
Создать класс – треугольник, заданный своими координатами (точками). jenja Общие вопросы Delphi 5 18.04.2008 07:50