Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Сарумян
Статус: Студент
Рейтинг: 256
∙ повысить рейтинг >>
Hubbitus
Статус: 10-й класс
Рейтинг: 146
∙ повысить рейтинг >>
Stealthm
Статус: 4-й класс
Рейтинг: 120
∙ повысить рейтинг >>

∙ / КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 1134 от 30.06.2009, 22:35
Администратор рассылки: Товарищ Бородин, Академик
В рассылке: подписчиков - 603, экспертов - 162
В номере: вопросов - 1, ответов - 1

Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке:
оценить выпуск >>

Вопрос № 169886: Здравствуйте! У меня задача на си, работает стабильно, НО очень-очень нужно переделать на PHP. Помогите пожалуйста! Условие было такое: 1. задается число фиксированных точек, для каждой фиксированной точки задаются координаты 2. для...



Вопрос № 169886:

Здравствуйте! У меня задача на си, работает стабильно, НО очень-очень нужно переделать на PHP. Помогите пожалуйста!


Условие было такое:
1. задается число фиксированных точек, для каждой фиксированной точки задаются координаты
2. для каждой фиксированной точки задается свое фиксированное расстояние
3. задается число дополнительных точек, для каждой дополнительной точки задаются координаты
4. для каждой фиксированной точки ищется ближайшая из дополнительных и считается это расстояние
5. если полученное расстояние меньше или равно фиксированному (заданному в пункте 2), то выводим запись: например "для т. А ближайшая т. Б с координатами (5,6) расстояние =3"
6. если же полученное расстояние больше фиксированного выводим запись: например "для точки А ближайших точек нет"


Код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

main()

{
int n1, n2, i, j, k, m, t, p;
float dist, dist1;

printf("Vvedite kolichestvo fiksirovannih tochek\n");
scanf("%i",&n1);
//float mas1[n1][2];
float **mas1;
mas1 = new float *[n1];
for (m = 0; m < n1; m++)
mas1[m] = new float [2];
printf ("\n");
printf("Vvedite kolichestvo dopolnitelnih tochek\n");
scanf("%i",&n2);
//float mas2[n2][2];
float **mas2;
mas2 = new float *[n2];
for (t = 0; t < n2; t++)
mas2[t] = new float [2];

printf ("\n");
for (i=0; i<n1; ++i)
{
printf("Vvedite koordinati %i", i+1);
printf(" fiksirovannoy tochki (cherez probel)\n");
scanf("%f%f", &mas1[i][0], &mas1[i][1]);
printf("Vvedite rastoyanie do % i", i+1);
printf(" fiksirovannoy tochki\n");
scanf("%f", &mas1[i][2]);
}

printf ("\n");
for (i=0; i<n2; ++i)
{
printf("Vvedite koordinati %i", i+1);
printf(" dopolnitelnoy tochki (cherez probel)\n");
scanf("%f%f", &mas2[i][0], &mas2[i][1]);
}

//float res[n1][2];
float **res;
res = new float *[n1];
for (p = 0; p < n1; p++)
res[p] = new float [2];

for (i=0; i<n1; i++)
{
dist1=sqrt(pow( ((mas1[i][0])-(mas2[0][0])),2) + pow(((mas1[i][1])-(mas2[0][1])),2));
for (j=0; j<n2; j++)
{
dist=sqrt(pow( ((mas1[i][0])-(mas2[j][0])),2) + pow(((mas1[i][1])-(mas2[j][1])),2));
if (dist<=dist1)
{
res[i][0]=dist;
res[i][1]=j;
dist1=dist;
}
}
}

for (i=0; i<n1; ++i)
{
k=int(res[i][1]);
if (res[i][0]<=mas1[i][2])
{
printf ("\n");
printf ("Blijayshaya k A%i",i+1);
printf (" tochka B%i",k+1);
printf (" s koordinatami (%3.3f",mas2[k][0]);
printf (",%3.3f",mas2[k][1]);
printf (") rasstojanie = %3.3f\n", res[i][0]);
printf ("\n");
}
else
{
printf ("\n");
printf ("Blijayshih k A%i",i+1);
printf (" tochek net");
printf ("\n");
}
}

system("PAUSE");
delete[] mas1;
delete[] mas2;
delete[] res;
return 0;

}

Отправлен: 25.06.2009, 22:13
Вопрос задал: Yutta, Посетитель
Всего ответов: 1
Страница вопроса >>


Отвечает Абельхарисов Руслан/Marked One, Практикант :
Здравствуйте, Yutta.
Код с комментариями в приложении.
Проверить работу скрипта можно здесь.
Удачи!!!

Приложение:

Ответ отправил: Абельхарисов Руслан/Marked One, Практикант
Ответ отправлен: 26.06.2009, 15:02

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 251511 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!



    Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке:
    оценить выпуск >>

    подать вопрос экспертам этой рассылки >>

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.3 от 20.06.2009

    В избранное