Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 29.11.2009
Сообщений: 9

Присвоить сжатому массиву точек такие же первую и последную точки, как в исходном

29.11.2009, 13:36. Показов 1393. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Очень нужна помощь!
Нужно написать программу апертурного сжатия с использованием линейной апроксимации (т.е. задается массив значений некой функции и окрестность( некое число)). Если значение, полученное в результате апроксимации, меньше заданной окрестности, то оно пропускается, если же больше, то записывается в новый массив.
Вот! Сама ужасно во всем запуталась, да и как писать программы на Паскале уже забыла.
Помогите!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.11.2009, 13:36
Ответы с готовыми решениями:

Вывести подстроку, расположенную между первой и второй, а также между первой и последней точками исходной строки
Дана строка. Вывести подстроку, расположенную между первой и второй, а также между первой и...

Задать n точек. Найти m=3,4... точек и построить на них m-угольник такой что, количество точек , лежащих внутри и вне m-угольника , минимально различа
Задать n точек. Найти m=3,4... точек и построить на них m-угольник такой что, количество точек ,...

Двумерный массив, пред последнему элементу в столбце присвоить 0, а последнему 1 и так в каждом столбце
Двумерный массив, пред последнему элементу в столбце присвоить 0, а последнему 1 итак в каждом...

15
0 / 0 / 0
Регистрация: 29.11.2009
Сообщений: 9
30.11.2009, 20:22  [ТС]
у меня появился текст программы на С++. Помоги его переделать в Паскаль.
Пожалуйста, очень срочно надо!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//---------------------------------------------------------------------------
 
#pragma hdrstop
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//---------------------------------------------------------------------------
int i,j,N,z;
float q,delta,X,Y,a,b,k,Y1,X1;
float M[10][2],M1[10][2];
#pragma argsused
int main(int argc, char* argv[])
{
int N;
i=0;
printf("Input tha count of dots N=");
scanf("%d",&N);
while (i<N)
{
 printf("\n Input dot coordinates %d -oy точки X=",i+1);
scanf("%f",&X);
 printf("\nInput dot coordinates %d -oy точки Y=",i+1);
scanf("%f",&Y);
M[i][0]=X;
M[i][1]=Y;
 i=i+1;
 }
 
printf("\n Input the aperture value q=");
scanf("%f",&q);
z=1;
M1[z][1]=M[j-1][1];
M1[z][2]=M[j-1][2];
i=0; j=2;
while (i<N-2,j<=N)
 {
 a=(M[j][2]-M[i][2])/(M[j][1]-M[i][1]);
 b=M[j][2]-a*M[j][1];
 printf("\n a=%f b=%f",a,b);
 Y1=a*M[j-1][1]+b;
 delta=M[j-1][2]-Y1;
 if (delta>q)
 {
 printf("\n Y=%f Y1=%f  delta=%f ne szimaetsya",M[j-1][2],Y1,delta);
 i=i+1;
 j=i+2;
 M1[z][1]=M[j-1][1] ;
 M1[z][2]=M[j-1][2];
 z=z+1;
 }
 else
 {
 printf("\n Y=%f Y1=%f  delta=%f",M[j-1][2],Y1,delta);
 i=i;
 j=j+1;
 }
  }
printf("\nArray M*=");
 
for (i=1; i<N;i=i+1)
{
printf("\n M %d=[ %f, %f ]",z,M1[i][0],M1[i][1]);
}
 scanf("%f",&q);
return 0;
 
}
//---------------------------------------------------------------------------
0
0 / 0 / 0
Регистрация: 29.11.2009
Сообщений: 9
01.12.2009, 10:36  [ТС]
Народ! Кто-нибудь! Отзовитесь, помогите!!!
0
 Аватар для Dnnn
1063 / 130 / 34
Регистрация: 09.10.2009
Сообщений: 271
01.12.2009, 10:57
Цитата Сообщение от marleno4ka Посмотреть сообщение
Очень нужна помощь!
Нужно написать программу апертурного сжатия с использованием линейной апроксимации (т.е. задается массив значений некой функции и окрестность( некое число)). Если значение, полученное в результате апроксимации, меньше заданной окрестности, то оно пропускается, если же больше, то записывается в новый массив.
Вот! Сама ужасно во всем запуталась, да и как писать программы на Паскале уже забыла.
Помогите!
так ничего же непонятно, хоть бы формулы написали или теорию подробнее.
что такое ап-е сжатие (и сжатие чего)? как оно соотносится с линейным приближением?
есть массив значений функции M(x1), M(x N), ок.
по любым 2 точкам можно построить прямую (линейное приближение). что дальше?
0
Почетный модератор
 Аватар для Puporev
64316 / 47612 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
01.12.2009, 10:59
Нужно написать программу апертурного сжатия с использованием линейной апроксимации
Я аж плакал, до того понятно.
0
0 / 0 / 0
Регистрация: 29.11.2009
Сообщений: 9
01.12.2009, 11:36  [ТС]
Каюсь, сама виновата.. Просто впервые обращаюсь с такой просьбой... Постараюсь исправиться

Дан массив точек с координатами X,Y, количество точек N. Между (X1,Y1) и (X3,Y3) строим прямую и находим ее уравнение, в которое подставляем координату X2, находим значение Y'2. Высчитываем delta=mod(Y2 - Y'2) и сравниваем с задаваемымой нами q-апертурой (окрестность точки, которая будет одинаковой для всех точек массива). Далее, если delta>q, то записываем значение X2 и Y'2 в новый массив и продолжаем движение, т.е. переходим из (X1,Y1) в (X2,Y2), а из (X3,Y3) в (X4,Y4) и заново высчитываем.
Если же delta<q, то значения никуда не записываем, остаемся в точке (X1,Y1), но из точки (X3,Y3) передвигаемся в (X4,Y4) и все заново.
Надеюсь, что теперь попонятней..
0
Почетный модератор
 Аватар для Puporev
64316 / 47612 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
01.12.2009, 11:47
Высчитываем delta=mod(Y2 - Y'2)
Может delta=abs(Y2 - Y'2) ?
0
0 / 0 / 0
Регистрация: 29.11.2009
Сообщений: 9
01.12.2009, 12:02  [ТС]
Цитата Сообщение от Puporev Посмотреть сообщение
Может delta=abs(Y2 - Y'2) ?
Ой, ну да, конечно
0
 Аватар для Dnnn
1063 / 130 / 34
Регистрация: 09.10.2009
Сообщений: 271
01.12.2009, 12:20
переписала примерно так, если нигде не ошиблась
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
var i, i1, i2 ,N, z: integer; 
     q,delta,X,Y,a,b,k,Y1,X1: real; 
     M, M1: array[1..2, 1..20] of real; {2 stroki - 1- X, 2 - Y }
begin 
 write('Input tha count of dots N='); readln(N);
  for i:=1 to N do 
  begin 
      write('Input dot coordinates ',i,'-oy точки X='); readln(M[1,i]);
      write('Input dot coordinates ',i,' -oy точки Y=');readln(M[2,i]);
  end; 
 
  write('Input the aperture value q='); readln(q);
 
  i1 := 1; i2 := 3;  z:=0; 
  while (i1<=N-2) and (i2<=N) do 
  begin 
       a: = (M[2,i2]-M[2,i1])/(M[1,i2]-M[1,i1]);
       b: = M[2,i2]-a*M[1,i2];
       writeln('a=',a:10:3,' ; b=',b:10:3);
       Y1=a*M[1, i2-1]+b;
       delta=abs(M[2, i2-1]-Y1);
       if (delta>q) then 
         begin 
           writeln(' Y= ',M[2, i2-1]:10:3, ' ; Y1=', y1:10:3, '; delta=', delta:10:3,' ne szimaetsya');
           i1 :=i1+1; i2=i1+2;
           z=z+1;
           M1[1,z]=M[1, i2-1] ;
           M1[2,z]=M[2, i2-1];
         end
       else
         begin  
           writeln('Y=', M[2, i2-1]:10:3,'; Y1=', Y1:10:3,'; delta=',delta:10:3);
           i2=i2+1;
         end;
  end;   
 
  writeln('Array M*:' );
  for i := 1 to z do  
     writeln(' X[',i, ']=', m1[1,i]:10:3,'; Y[',i,']=', M1[2,i]:10:3);
  readln; {nazat Enter}
end.
1
0 / 0 / 0
Регистрация: 29.11.2009
Сообщений: 9
01.12.2009, 14:41  [ТС]
Огромное спасибо! Буду сидеть, разбираться, что к чему!!! Надо еще и блок-схему по этой программе... Но постараюсь сама
Еще раз СПАСИБО!
0
Почетный модератор
 Аватар для Puporev
64316 / 47612 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
01.12.2009, 15:01
Добавлю свои 5 копеек. Во вложении схема, нарисованная редактором по написанному выше коду. Схема алгоритмически верная, просто на ее основе нужно нормальную нарисовать, лишнее выкинуть и т.д.
Вложения
Тип файла: doc Doc2.doc (25.5 Кб, 17 просмотров)
0
0 / 0 / 0
Регистрация: 29.11.2009
Сообщений: 9
01.12.2009, 15:07  [ТС]
Ой, спасибо Вам!
0
dr_lo
01.12.2009, 16:23
Я правилно понимаю, что в этих 2х кусках кода должно быть M[i][1] и M[i][2], вместо M[i][0] и M[i][1] соответственно?
C++
1
2
3
4
5
6
//---------------------------------------------------------------------------
scanf("%f",&Y);
M[i][0]=X;
M[i][1]=Y;
 i=i+1;
 }
C++
1
2
3
4
5
6
for (i=1; i<N;i=i+1)
{
printf("\n M %d=[ %f, %f ]",z,M1[i][0],M1[i][1]);
}
 scanf("%f",&q);
return 0;
0 / 0 / 0
Регистрация: 29.11.2009
Сообщений: 9
04.12.2009, 22:37  [ТС]
У меня возникли еще вопросики.
1.Нужно присвоить сжатому массиву точек такие же первую и последную точки, как в исходном.
2.Мне нужно вывести на экран помимо сжатого массива, еще массив порядковых номеров точек, не вошедших в сжатый массив.
3.А еще нужно подсчитать коэффициент сжатия k=кол-во точек в исходном массиве/кол-во точек в сжатом массиве.
Если несложно, помогите!
0
 Аватар для Dnnn
1063 / 130 / 34
Регистрация: 09.10.2009
Сообщений: 271
07.12.2009, 09:39
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
var i, i1, i2 ,N, z: integer; 
     q,delta,X,Y,a,b,k,Y1,X1: real; 
     M, M1: array[1..2, 1..20] of real; {2 stroki - 1- X, 2 - Y }
begin 
 write('Input tha count of dots N='); readln(N);
  for i:=1 to N do 
  begin 
      write('Input dot coordinates ',i,' X='); readln(M[1,i]);
      write('Input dot coordinates ',i,' Y=');readln(M[2,i]);
  end; 
 
  write('Input the aperture value q='); readln(q);
 
  i1 := 1; i2 := 3;  
  {в массив заносим первую точку}
  z:=1; M1[1,1]=M[1, 1] ; M1[2,1]=M[2, 1];
 
  while (i1<=N-2) and (i2<=N) do 
  begin 
       a: = (M[2,i2]-M[2,i1])/(M[1,i2]-M[1,i1]);
       b: = M[2,i2]-a*M[1,i2];
       writeln('a=',a:10:3,' ; b=',b:10:3);
       Y1=a*M[1, i2-1]+b;
       delta=abs(M[2, i2-1]-Y1);
       if (delta>q) then 
         begin 
           writeln(' Y= ',M[2, i2-1]:10:3, ' ; Y1=', y1:10:3, '; delta=', delta:10:3,' ne szimaetsya');
           i1 :=i1+1; i2=i1+2;
           z=z+1;
           M1[1,z]=M[1, i2-1] ;
           M1[2,z]=M[2, i2-1];
         end
       else
         begin  
           writeln('Y=', M[2, i2-1]:10:3,'; Y1=', Y1:10:3,'; delta=',delta:10:3); { здесь как раз и выводятся не вошедшие в сжатый массив точки }
           i2=i2+1;
         end;
  end;   
  {записываем в конец массива посл точку }
  z := z+1; M1[1,z]=M[1, N] ; M1[2,z]=M[2, N];
 
  writeln('Array M*:' );
  for i := 1 to z do  
     writeln(' X[',i, ']=', m1[1,i]:10:3,'; Y[',i,']=', M1[2,i]:10:3);
 
  writeln('Коэффициент сжатия k = ', N/Z);
  readln; {nazat Enter}
end.
1
0 / 0 / 0
Регистрация: 29.11.2009
Сообщений: 9
07.12.2009, 10:55  [ТС]
Спасибочки! )))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.12.2009, 10:55
Помогаю со студенческими работами здесь

В(I) присвоить 1 , если в первой строке массива есть хотя бы один отрицательный элемент , в противной случае B(I) присвоить 0
Дан массив A.построить массив В(5) по следующему правилу : В(I) присвоить 1 , если в первой строке...

Выбрать три точки из множества точек на плоскости так, чтобы была минимальной разность между количествами точек внутри и вне треугольника
Выбрать три различные точки из заданного множества точек на плоскости так, чтобы была...

Даны два множества точек на плоскости. Выбрать три точки так, чтобы треугольник с вершинами в этих точках содержал равное количество точек
Даны два множества точек на плоскости. Из первого множества выбрать три различные точки так, чтобы...

Из заданного множества точек на плоскости выбрать две различные точки так, чтобы количества точек различались наименьшим образом
Из заданного множества точек на плоскости выбрать две различные точки так, чтобы количества точек,...

На оси абцисс найти такую точку, сумма расстояний, которой до точек А и В-наименьшая для всех точек
Даны действительные числа х1,у1,х2,у2(х1 не равен х2),которые определяют 2 точки А(х1,у1) и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru