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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2010, 09:09   #1
rapgamer
 
Регистрация: 02.06.2010
Сообщений: 5
По умолчанию считает не правильно

Код:
// lab_2.cpp : Defines the entry point for the console application.
//

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

int main()
{
	MAIN_TESTING
	int a1, b1, r1, a2, b2, r2;
	
	
	input_printf ("Введите координату первой окружности a1: ");
	scanf ("%d", &a1);
	// Проверка введённых величин
    if (a1 < -1000 && a1 > 1000)
    {
        error_printf("a1 должно лежать в интервале [-1000, +1000");
        getch();
        return 0;
    }
	input_printf ("Введите координату первой окружности b1: ");
	scanf ("%d", &b1);
	// Проверка введённых величин
    if (b1 < -1000 && b1 > 1000)
    {
        error_printf("b1 должно лежать в интервале [-1000, +1000");
        getch();
        return 0;
    }
	input_printf ("Введите радиус первой окружности r1: ");
	scanf ("%d", &r1);
	// Проверка введённых величин
    if (r1 < 1 && r1 > 100)
    {
        error_printf("r1 должно лежать в интервале [1, 100");
        getch();
        return 0;
    }
	input_printf ("Введите координату второй окружности а2: ");
	scanf ("%d", &a2);
	// Проверка введённых величин
    if (a2 < -1000 && a2 > 1000)
    {
        error_printf("a2 должно лежать в интервале [-1000, +1000");
        getch();
        return 0;
    }
	input_printf ("Введите координату второй окружности Ь2: ");
	scanf ("%d", &b2);
	// Проверка введённых величин
    if (b2 < -1000 && b2 > 1000)
    {
        error_printf("b2 должно лежать в интервале [-1000, +1000");
        getch();
        return 0;
    }
	input_printf ("Введите радиус второй окружности r2: ");
	scanf ("%d", &r2);	
	// Проверка введённых величин
    if (r2 < 1 && r2 > 100)
    {
        error_printf("r2 должно лежать в интервале [1, 100");
        getch();
        return 0;
    }

	int b=(b2-b1); int a=(a2-a1);
    int L =(a+b);
	
	int M =(L - r1 - r2);
	
	if (a1==a2 && b1==b2 && r1==r2)
		
		M=0;

	if (M == 0)
	
	  M = 0;
	
		

	

    input_printf("Ответ: %d \n", M);


    getch();
	return 0;
}

Последний раз редактировалось Stilet; 14.09.2010 в 09:18.
rapgamer вне форума Ответить с цитированием
Старый 14.09.2010, 17:50   #2
~~~
Заблокирован
 
Регистрация: 13.09.2010
Сообщений: 16
По умолчанию

а что считаешь то?

Цитата:
if (M == 0)

M = 0;
Это зачем?
~~~ вне форума Ответить с цитированием
Старый 14.09.2010, 19:41   #3
rapgamer
 
Регистрация: 02.06.2010
Сообщений: 5
По умолчанию

Цитата:
Сообщение от ~~~ Посмотреть сообщение
а что считаешь то?


Это зачем?
согласен глупо, вот переделанная, а задание, найти расстояние между окружностями.

Не пойму почему первое условие не выполняеться, при пересечении окружностей.

Код:
// lab_2.cpp : Defines the entry point for the console application.
//

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

int main()
{
	MAIN_TESTING
	int a1, b1, r1, a2, b2, r2;
	
	
	input_printf ("Введите координату первой окружности a1: ");
	scanf ("%d", &a1);
	// Проверка введённых величин
    if (a1 < -1000 || a1 > 1000)
    {
        error_printf("a1 должно лежать в интервале [-1000, +1000");
        getch();
        return 0;
    }
	input_printf ("Введите координату первой окружности b1: ");
	scanf ("%d", &b1);
	// Проверка введённых величин
    if (b1 < -1000 || b1 > 1000)
    {
        error_printf("b1 должно лежать в интервале [-1000, +1000");
        getch();
        return 0;
    }
	input_printf ("Введите радиус первой окружности r1: ");
	scanf ("%d", &r1);
	// Проверка введённых величин
    if (r1 < 1 || r1 > 100)
    {
        error_printf("r1 должно лежать в интервале [1, 100");
        getch();
        return 0;
    }
	input_printf ("Введите координату второй окружности а2: ");
	scanf ("%d", &a2);
	// Проверка введённых величин
    if (a2 < -1000 || a2 > 1000)
    {
        error_printf("a2 должно лежать в интервале [-1000, +1000");
        getch();
        return 0;
    }
	input_printf ("Введите координату второй окружности b2: ");
	scanf ("%d", &b2);
	// Проверка введённых величин
    if (b2 < -1000 || b2 > 1000)
    {
        error_printf("b2 должно лежать в интервале [-1000, +1000");
        getch();
        return 0;
    }
	input_printf ("Введите радиус второй окружности r2: ");
	scanf ("%d", &r2);	
	// Проверка введённых величин
    if (r2 < 1 || r2 > 100)
    {
        error_printf("r2 должно лежать в интервале [1, 100");
        getch();
        return 0;
    }

	
    int L =(sqrt(float((b2-b1)*(b2-b1)+(a2-a1)*(a2-a1))));
	
	int M =(L - r1 - r2);
	
	if (M < 0)
	{
		int a =  (L-r1);
		int b = (L-r2);
		M = L-(a+b);
	}
	else
	
	if (a1==a2 && b1==b2 && r1==r2)
		
		M=0;

	
	
    input_printf("Ответ: %d \n", M);


    getch();
	return 0;

Последний раз редактировалось Stilet; 15.09.2010 в 08:37.
rapgamer вне форума Ответить с цитированием
Старый 15.09.2010, 14:23   #4
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

1 Пользуйтесь тег CODE для оформления программы, для чего выделите текст и нажмите значок # на панели сообщения.
2 При нахождения расстояния между окружностями возможны три варианта:
1) окружности не пересекаются и не соприкасаются, тогда Ваше М>0, следовательно
M=L-r1-r2;
2) Окружности соприкасаются, т.е М=0
3) Окружности пересекаются, т.е M<0 и тогда
М=|r1-r2|, следовательно конец Вашей программы будет следующим
Код:
	if (M < 0)
	{
		M = abs(r1-r2);
	}
	if (a1==a2 && b1==b2 && r1==r2)
			M=0;
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
неверно считает? штохл Microsoft Office Excel 3 17.05.2010 22:24
Не правильно считает сумму чисел, которые находятся в файле. TheWanderer Общие вопросы C/C++ 6 17.04.2009 18:43
EXCEl не правильно считает формулу beliy-dis Microsoft Office Excel 5 30.07.2008 14:18