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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2009, 18:03   #31
Эмиль_C++
Пользователь
 
Регистрация: 17.04.2009
Сообщений: 61
По умолчанию

for (x=A.x;x<B.x;ч+=h)
{ kvadrat=x/h; я Вас правильно понял?
Эмиль_C++ вне форума Ответить с цитированием
Старый 19.05.2009, 18:12   #32
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
я Вас правильно понял?
Да, примерно так. Это будет номер квадрата по горизонтали.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 20.05.2009, 18:25   #33
Эмиль_C++
Пользователь
 
Регистрация: 17.04.2009
Сообщений: 61
По умолчанию

А Вы не знаете как можно использовать рекурсию?
Эмиль_C++ вне форума Ответить с цитированием
Старый 20.05.2009, 18:30   #34
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Эмиль_C++
А Вы не знаете как можно использовать рекурсию?
Где ее использовать здесь не вижу.
Можно, конечно, извратиться, и вместо цикла сделать рекурсивную функцию (условие выхода - x>B.x) и посылать в качестве аргумента x+h.
Только вот смысл?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 07.06.2009, 22:38   #35
Эмиль_C++
Пользователь
 
Регистрация: 17.04.2009
Сообщений: 61
По умолчанию

Здравствуйте! я бы еще хотел спросить как рекурсивный проход координатной сетки по прямой пройти? ну вот например рассмотрим отдельный квадратик квадратной координатной сетки. у нее есть 4 стороны. и вот нужно применить рекурсию при пересечении этот квадрат если это не конечная точка движения, то движемся дальше=> условием выхода из рекурсии является дохождение до конечной точки отрезка А=>B рассматриваем рекурсию при движениее снизу вверх т.е с увеличением координаты х и у
Эмиль_C++ вне форума Ответить с цитированием
Старый 07.06.2009, 23:26   #36
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Ну отдаленно что-то такое (пример для икса):
Код:
void fun(double x)
 {
 if(x>=B.x) return; //вышли
 fun(x+h); // иначе смещаемся на h
 }
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 12.06.2009, 16:31   #37
Эмиль_C++
Пользователь
 
Регистрация: 17.04.2009
Сообщений: 61
По умолчанию

Здорово! Можешь помочь??? у меня че то не выводит правильный ответ...

Код:
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <dos.h>
#include <stdio.h>
struct point
{float x,y;
};
struct koord
{
float xu;
float yu;
float xd;
float yd;
};

void main()
{  clrscr();
float y,x, s, k, l;
s=1;
int i,j;
struct koord kv[5][5];
  kv[0][0].yd=0;
  kv[0][0].xd=0;
 kv[0][0].yu=kv[0][0].yd+s;
kv[0][0].xu=kv[0][0].xd+s;

  for(i=0;i<5;i++)
  { 
       
    for(j=1;j<5;j++)
   {
       kv[i][j].xd=kv[i][j-1].xu;
          kv[i][j].yd=kv[i-1][j].yu;
 
       kv[i][j].xu=kv[i][j-1].xu+s;
          kv[i][j].yu=kv[i-1][j].yu; 
  printf("KV xd=%.0f, yd=%.0f, xu=%.0f, yu=%.0f\n",kv[i][j].xd, kv[i][j].yd, kv[i][j].xu, kv[i][j].yu);
} 
  }

   struct point A,B;
       printf ("Vvedite koord A(x,y)\n");
    scanf ("%f%f",&A.x,&A.y);
       printf ("Vvedite koord B(x,y)\n");
    scanf ("%f%f",&B.x,&B.y);

  float xmin, xmax, ymin, ymax;


  if(A.x<B.x)
  {
    xmin=A.x;
    xmax=B.x;
  }
    else
    {
    xmin=B.x;
    xmax=A.x;
    }

	if(A.y<B.y)
	 {
	   ymin=A.y;
	   ymax=B.y;
	 }
	 else
	 {
	   ymin=B.y;
	   ymax=A.y;
	 }
for(i=0;i<5;i++)
		{


			for(j=0;j<5;j++)
			   {    if(xmin<kv[i][j].xu&&xmin>kv[i][j].xd&&ymin<kv[i][j].yu&&ymin>kv[i][j].yd)
			    printf("Kvadrat tochki A= %d  %d\n",i+1,j+1);
			     else
				  if(xmax<kv[i][j].xu&&xmax>kv[i][j].xd&&ymax<kv[i][j].yu&&ymax>kv[i][j].yd)
				     printf ("Kvadrat tochki B= %d  %d\n",i+1,j+1);}}

if(B.x!=A.x)
{
	l=(B.y-A.y)/(B.x-A.x);
	for(i=0;i<5;i++)
	{


		for(j=0;j<5;j++)
		{


			k=(kv[i][j].yu-kv[i][j].yd)/(kv[i][j].xu-kv[i][j].xd);
			if(k!=l||-k!=l)
				{
					x=(k*kv[i][j].xd-l*A.x+A.y-kv[i][j].yd)/(k-l);
					y=(((x-kv[i][j].xd)*(kv[i][j].yu-kv[i][j].yd))/(kv[i][j].xu-kv[i][j].xd))+kv[i][j].yd;
				if(x<xmax&&x>xmin&&y<ymax&&y>ymin&&x<kv[i][j].xu&&x>kv[i][j].xd&&y<kv[i][j].yu&&y>kv[i][j].yd)
				 {
					printf("Kvadrat %d  %d\n",i+1,j+1);
				 }
				else
				{
					x=(-k*kv[i][j].xu-l*A.x+A.y-kv[i][j].yd)/(-k-l);
					y=(((x-kv[i][j].xu)*(kv[i][j].yu-kv[i][j].yd))/(kv[i][j].xd-kv[i][j].xu))+kv[i][j].yd;
					if(x<xmax&&x>xmin&&y<ymax&&y>ymin&&x<kv[i][j].xu&&x>kv[i][j].xd&&y<kv[i][j].yu&&y>kv[i][j].yd)
					{
						printf("Kvadrat %d  %d\n",i+1,j+1);
					}
				}
			}
			else
			{
					printf("Kvadrat %d  %d\n",i+1,j+1);
			}
		}
	}
}
else
{
     for(i=0;i<5;i++)
     for(j=0;j<5;j++)               if(kv[i][j].xd<xmax&&kv[i][j].xu>xmin&&kv[i][j].yd<ymax&&kv[i][j].yu>ymin)

		    printf("Kvadrat %d  %d\n",i+1,j+1);
}
     getch();

}
сразу же вылетает не вводит значения...

исправь пожалуйста что не правильно...

Модератор: пользуйтесь "правкой" и тегом CODE!

Последний раз редактировалось Эмиль_C++; 12.06.2009 в 16:41.
Эмиль_C++ вне форума Ответить с цитированием
Старый 12.06.2009, 16:43   #38
Эмиль_C++
Пользователь
 
Регистрация: 17.04.2009
Сообщений: 61
По умолчанию

спасибо! а то я что-то не заметил)

k-коэффициент диагонали координатного квадрата
l-коэффициент прямой проходящей через эти квадраты

Последний раз редактировалось Sazary; 12.06.2009 в 16:49.
Эмиль_C++ вне форума Ответить с цитированием
Старый 12.06.2009, 17:14   #39
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Эмиль_C++, для вас ваша программа понятна и очевидна, чего не могу сказать о себе. И так просто исправить или хотя бы понять, что она вообще должна выводить я не могу. Хоть бы закомментировали ее.

У вас весь вывод происходит в случае выполнения каких-то условий. Логично предположить, что ни одно из них не выполняется.
Еще вот этот момент:
Код:
if(k!=l||-k!=l)
может, тут все-таки
Код:
if(k!=l&&-k!=l)
?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 12.06.2009, 17:27   #40
Эмиль_C++
Пользователь
 
Регистрация: 17.04.2009
Сообщений: 61
По умолчанию

Код:
Struct koord kv-структура координат квадрата: (рисунок 2.3)

 Рисунок 2.3- Структура координат квадрата

kv[5][5]-двумерный массив, где 5- максимальное значение
struct point- структура точки
k-угловой коэффициент диагонали квадрата
s-шаг координатной сетки
l-угловой коэффициент прямой
I,j-номер столбца и строки соответственно
float-вещественные числа одинарной точности
int-целые числа

#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <dos.h>
#include <stdio.h>
struct point  // структура точки
{
float x,y;
};
struct koord // структура координат квадрата
{
float xu;
float yu;
float xd;
float yd;
};

void main() //главная функция
{  
clrscr(); //очистка экрана
float y,x, s, k, l;
s=1; //шаг деления координатной сетки
int i,j;
struct koord kv[5][5]; // создание координатной сетки размерностью 5*5
    kv[0][0].yd=0; // присваивание координат первому квадрату
    kv[0][0].yu=kv[0][0].yd+s
    kv[i][0].xd=0;
    kv[0][0].xu=kv[0][0].xd+s  
  for(i=0;i<5;i++)
  { 
    for(j=1;j<5;j++)
   {
       kv[i][j].xd=kv[i][j-1].xu;
          kv[i][j].yd=kv[i-1][j].yu;
 
       kv[i][j].xu=kv[i][j-1].xu+s;
          kv[i][j].yu=kv[i-1][j].yu; 
  printf("KV xd=%.0f, yd=%.0f, xu=%.0f, yu=%.0f\n",kv[i][j].xd, kv[i][j].yd, kv[i][j].xu, kv[i][j].yu);
} 
  }

   struct point A,B; // Ввод координат точек А и В
       printf ("Vvedite koord A(x,y)\n");
    scanf ("%f%f",&A.x,&A.y);
       printf ("Vvedite koord B(x,y)\n");
    scanf ("%f%f",&B.x,&B.y);

  float xmin, xmax, ymin, ymax;


  if(A.x<B.x)
  {
    xmin=A.x;
    xmax=B.x;
  }
    else
    {
    xmin=B.x;
    xmax=A.x;
    }

	if(A.y<B.y)
	 {
	   ymin=A.y;
	   ymax=B.y;
	 }
	 else
	 {
	   ymin=B.y;
	   ymax=A.y;
	 }
for(i=0;i<5;i++)
		{


			for(j=0;j<5;j++)
			   {    if(xmin<kv[i][j].xu&&xmin>kv[i][j].xd&&ymin<kv[i][j].yu&&ymin>kv[i][j].yd) // если точка принадлежит тому или иному квадрату
			    printf("Kvadrat tochki A= %d  %d\n",i+1,j+1);
			     else
				  if(xmax<kv[i][j].xu&&xmax>kv[i][j].xd&&ymax<kv[i][j].yu&&ymax>kv[i][j].yd)
				     printf ("Kvadrat tochki B= %d  %d\n",i+1,j+1);}}

if(B.x!=A.x) // условие- если координаты х точек А и В не равны между собой, то делаем следующие операции
{
	l=(B.y-A.y)/(B.x-A.x); // угловой коэффициент прямой
k=(kv[i][j].yu-kv[i][j].yd)/(kv[i][j].xu-kv[i][j].xd); // угловой коэффициент диагонали координатного квадрата
	for(i=0;i<5;i++)
	{


	   for(j=0;j<5;j++)
	    {
if(k!=l||-k!=l) // если коэффициенты не равны по модулю
			{
		 	 x=(k*kv[i][j].xd-l*A.x+A.y-kv[i][j].yd)/(k-l);
			y=(((x-kv[i][j].xd)*(kv[i][j].yu-kv[i][j].yd))/(kv[i][j].xu-kv[i][j].xd))+kv[i][j].yd;
				if(x<xmax&&x>xmin&&y<ymax&&y>ymin&&x<kv[i][j].xu&&x>kv[i][j].xd&&y<kv[i][j].yu&&y>kv[i][j].yd)
				 {
					printf("Kvadrat %d  %d\n",i+1,j+1);
				 }
				else
				{
					x=(-k*kv[i][j].xu-l*A.x+A.y-kv[i][j].yd)/(-k-l);
					y=(((x-kv[i][j].xu)*(kv[i][j].yu-kv[i][j].yd))/(kv[i][j].xd-kv[i][j].xu))+kv[i][j].yd;
					if(x<xmax&&x>xmin&&y<ymax&&y>ymin&&x<kv[i][j].xu&&x>kv[i][j].xd&&y<kv[i][j].yu&&y>kv[i][j].yd)
					{
						printf("Kvadrat %d  %d\n",i+1,j+1);
					}
				}
			}
			else
			{
					printf("Kvadrat %d  %d\n",i+1,j+1);
			}
		}
	}
}
else 
{
     for(i=0;i<5;i++)
     for(j=0;j<5;j++)               if(kv[i][j].xd<xmax&&kv[i][j].xu>xmin&&kv[i][j].yd<ymax&&kv[i][j].yu>ymin)

		    printf("Kvadrat %d  %d\n",i+1,j+1); // вывод координаты квадрата на экран
}
     getch();

}
Эмиль_C++ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение трассы движения точки на плоскости Эмиль_C++ Общие вопросы C/C++ 4 20.04.2009 14:26
Анимация движения точки по траектории ariant Microsoft Office Excel 4 25.12.2008 06:28
Уравнение плоскости eoln Помощь студентам 5 27.09.2008 09:22
точки плоскости, заданные своими координатами, попадают в круг с радиусом R Jondeer Общие вопросы C/C++ 6 16.06.2008 00:06
Отбражение чисел - точки, это точки, а не запятые, обозначающие дробную часть Дикий Помощь студентам 7 12.05.2008 17:57