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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2016, 21:06   #1
Ben_Franklin
Пользователь
 
Регистрация: 07.04.2016
Сообщений: 11
По умолчанию Как лучше составить программу

Составить программу не более 50 строк кода
Найти область попадания точки
Полоса, ограниченная прямыми i + j + 10 = 0 и i + j + 20 = 0.
i0 = −30, j0 = −4, l0 = 12,

ik+1 = |ik − lk| + min(jk mod 10, lkk mod 10) − 20,

jk+1 = max(k − ik, min(jk, max(ik − lk, jk − lk))) mod 30,

lk+1 = lk2 mod 20 − max(ik, jk) mod (k + 1).
Я склоняюсь чтобы использовать конструкцию с while ,
но проблема не знаю как составить программу вбить данные саму эту конструкцию(что выше) а что дальше?
Изображения
Тип файла: jpg задиние.jpg (19.7 Кб, 111 просмотров)
Ben_Franklin вне форума Ответить с цитированием
Старый 07.04.2016, 21:43   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Ну что ж, продолжим обсуждение
В прошлой теме (пользователя djeak11) как-то более понятно было условие. Не очень понимаю, что за область нужно найти.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 07.04.2016 в 21:56.
BDA вне форума Ответить с цитированием
Старый 07.04.2016, 22:52   #3
Ben_Franklin
Пользователь
 
Регистрация: 07.04.2016
Сообщений: 11
По умолчанию

Программа толжна описывать некоторое регулярное движение точки в целочисленной системе координат (i, j) с дискретным временем k и динамическим параметром движения l.Вывести попала ли точка в область и найти координаты i и j куда она попала а также найти значение параметра l и когда все закончилось
Ben_Franklin вне форума Ответить с цитированием
Старый 07.04.2016, 23:30   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Так-то лучше (с более полным условием). Начните с объявления переменных. Подсказка: их 7 штук (по предварительным прикидкам).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 11.04.2016, 16:06   #5
Ben_Franklin
Пользователь
 
Регистрация: 07.04.2016
Сообщений: 11
По умолчанию

Вопрос с областью
int jlow, jhigh;
jlow = -i-20
jhigh = -i-10
printf("lowPoint: [%i, %i] HighPoint : [%i, %i] OurPoint [%i, %i] \n" , i, jlow, i ,jhigh, i, j);

if ((j >= jlow) && (j <=jhigh)
Выводит огромный столбец точек в чем тут ошибка или что нужно переделать
Ben_Franklin вне форума Ответить с цитированием
Старый 11.04.2016, 16:22   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Насколько я понял условие, нужно просто проверять, не попала ли на текущем шаге точка (i,j) в область, ограниченную прямыми, а именно:
Код:
if (i + j + 10 <= 0 && i + j + 20 >= 0) {
    // попали в область
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 14.04.2016, 20:42   #7
Ben_Franklin
Пользователь
 
Регистрация: 07.04.2016
Сообщений: 11
По умолчанию

Пишет ошибка перегружена std::min
Код:
#include "stdafx.h"
#include <algorithm>
#include <math.h>
using namespace std;

int sign(int s)
{
	return (s > 0) - (s < 0);
}


int main()
{
	int I0 = -30;
	int	J0 = -4;
	int L0 = 12;
	int MaxStep = 50;

	int i = 0;
	int j = 0;
	int l = 0;

	int Ip = I0;
	int Jp = J0;
	int Lp = L0;

	for (int k=1; k < MaxStep; k++)
	{
		i = abs(Ip - Lp) + std::min(Jp % 10), Lp * k % 10) - 20;

		j = std::max(k - Ip, std::min(Jp, std::max(Ip - Lp, Jp - Lp))) % 30;

		l = Lp ^ 2 % 20 - std::max(Ip, Jp) % (k + 1);

		if (i + j + 10 <= 0 && i + j + 20 >= 0)
		{
			printf_s("PointInSide [%i; %i] \n", i, j);
		}
			
		Ip = i;
		Jp = j;
		Lp = l;
	}
	getchar();
	return 0;
}

Последний раз редактировалось BDA; 14.04.2016 в 21:04.
Ben_Franklin вне форума Ответить с цитированием
Старый 14.04.2016, 21:20   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

1) Для оформления кода используйте кнопочку Решетка #.
2) При первом использовании min вы поставили лишнюю скобку, из-за чего уменьшилось количество параметров вызова.
3) Я себе код представлял примерно так:
Код:
int main()
{
    int MaxStep = 50;
    int k = 0;
    int Ip = -30;
    int Jp = -4;
    int Lp = 12;
    while (k <= MaxStep && !(Ip + Jp + 10 <= 0 && Ip + Jp + 20 >= 0)) {
        int tmpi = abs(Ip - Lp) + min(Jp % 10, Lp * k % 10) - 20;
        int tmpj = max(k - Ip, min(Jp, max(Ip - Lp, Jp - Lp))) % 30;
        int tmpl = Lp * Lp % 20 - max(Ip, Jp) % (k + 1);
        Ip = tmpi;
        Jp = tmpj;
        Lp = tmpl;
        ++k;
    }
    if (k <= MaxStep) {
        cout << "PointInSide [" << Ip << ", " << Jp << "] Parameter = " << Lp << " Time = " << k << endl;
    } else {
        cout << "Time is over" << endl;
    }
    getchar();
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 14.04.2016 в 21:58.
BDA вне форума Ответить с цитированием
Старый 14.04.2016, 22:28   #9
Ben_Franklin
Пользователь
 
Регистрация: 07.04.2016
Сообщений: 11
По умолчанию

А как это понять что для чего используется замена переменной tmp?
Ip = tmpi;
Jp = tmpj;
Lp = tmpl;
++k;
}
if (k <= MaxStep) {
cout << "PointInSide [" << Ip << ", " << Jp << "] Parameter = " << Lp << " Time = " << k << endl;
} else {
cout << "Time is over" << endl;
Ben_Franklin вне форума Ответить с цитированием
Старый 14.04.2016, 22:52   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Приписал tmp (там ведь не просто tmp, а tmpi, tmpj, tmpl) к именам переменных просто чтобы подчеркнуть их временность.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить программу вычисления и печати таблицы значений функции при заданных значениях параметров Составить программу вычисле Марина1986 C/C++ Сетевое программирование 1 08.05.2013 13:34
Как составить программу Алексей555 Помощь студентам 4 16.12.2012 00:39
програмирование циклических алгоритмов, как думаете как составить программу romati__@mail.ru C++ Builder 1 23.01.2012 10:57
Как лучше организовать программу типа BPwin? Innser Общие вопросы .NET 2 18.05.2010 21:14
Пишу программу которая ищет файлы на компьютере ! Как лучше организовать структуры данных ? asked86 Общие вопросы Delphi 13 14.12.2008 19:33