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

В файле расставить положительные элементы в порядке возростания отклонения их значений от среднего положительных элементов

27.04.2013, 18:48. Показов 748. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите доделать,в файле целого типа надо расставить положительные элементы в порядке возростания отклонения их значений от среднего положительных элементов.Пробол разные способы(закоменчены),среднее находит,а вот дальше траблы
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
Program two;
uses crt;
var f:file of integer;
    i,j,a,k,v,m:integer;
    x,z,y:real;
 
    procedure r(Filename:string);
    var p:file of integer;
 
    begin
    assign(p,'f');
rewrite(p);
i:=0;
 
  randomize;
for i:=1 to random(40)+25 do
begin
 
 k:=random(90)-20;
write(p,k);
i:=i+1;
end;
close(p);
 writeln;
end;
 
 
procedure reading( nameFile:string  );
       var r1:integer;
       p: file of integer ;
       begin
        assign(p,nameFile);
            reset(p);
       while   not eof (p) do   begin
       read(p,r1);
       write(r1,' ');
       end;
      close(p);
      writeln;
//Ниже первый способ сортировки
        {end;
        
                       procedure sort(nameFile:string; sred:real );
                        var p :file of integer;
                        z,y,s,r1,r2:integer;
                        flag: boolean;
                        begin
                         assign(p,nameFile);
 
       reset(p);
 
 s:=filesize(p);
 
     repeat
 
     flag:=false;
 
  for i:=0 to s-2 do
 
           begin
 
    seek(p,i);
 
     read(p,r1,r2) ;
     if r1>0 or r2>0 then begin
     z:=abs(sred)-r1;
    y:=abs(sred)-r2;
        if z<y then
 
begin
seek(p,i);
 
write(p,r2,r1);
 
flag:=true ;  end ;
 
 
end;
 
s:=s-1  ;
 
until not flag;
 
 close(p) ;  }
 
    //кончается первый способ сортировки(не работает)
 
      end;
begin    //главная прогармма
  x:=0;
 r('f');
  assign(f,'f');
 reset(f);
 while not eof(f) do begin
 read(f,k);
 write(k,' ');
 end;
 close(f);
  writeln;
  
  
   reset(f);
 j:=filesize(f);
 while not eof(f) do begin
 for i:=0 to j-1 do
  begin
  seek(f,i);
  read(f,a);
  If a>0 then
  x:=x+a;//находим сумму всех положит элементов файла
  end;
  writeln('summa polgit ',x);
 x:=x/j;//среднее значение всех элементво файла
 end;
  writeln('srznah ',x:9:2);
  
 
 {for i:=0 to j-2 do
  for k:=0 to j-2 do
  begin
   seek(f,i);
   read(f,a);
   //находим разность между средним значением положит элементов и текущим для i-ого элемента
   if a>0 then
   z:=abs(abs(x)-abs(a));
   seek(f,k+1);
   read(f,a);
    begin
    seek(f,i);//перемещаемся в i-ый элемент
    read(f,v);//записываем его в v
    seek(f,k+1);//перемещаемся в к+1 элемент
    read(f,m);//записываем его в m
    seek(f,i);//перемещаемся в i-ый элемент файла
    write(f,m);//записсываем в него значение из m
    seek(f,k+1);//перемещаемся в к+1 элемент
    write(f,v);//записываем его значение из v
    end;
  end;  }
//Все что выше,второй способ сортировки пробовал,не работает  
     close(f);
  //sort('f',x);
 
 reading('f');
end.
Добавлено через 5 минут
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
Помогите доделать,в файле целого типа надо расставить положительные элементы в порядке возростания отклонения их значений от среднего положительных элементов.Пробол разные способы(закоменчены),среднее находит,а вот дальше траблы
[PASCAL]Program two;
uses crt;
var f:file of integer;
    i,j,a,k,v,m:integer;
    x,z,y:real;
 
    procedure r(Filename:string);
    var p:file of integer;
 
    begin
    assign(p,'f');
rewrite(p);
i:=0;
 
  randomize;
for i:=1 to random(40)+25 do
begin
 
 k:=random(90)-20;
write(p,k);
i:=i+1;
end;
close(p);
 writeln;
end;
 
 
procedure reading( nameFile:string  );
       var r1:integer;
       p: file of integer ;
       begin
        assign(p,nameFile);
            reset(p);
       while   not eof (p) do   begin
       read(p,r1);
       write(r1,' ');
       end;
      close(p);
      writeln;
//Ниже первый способ сортировки
        {end;
        
                       procedure sort(nameFile:string; sred:real );
                        var p :file of integer;
                        z,y,s,r1,r2:integer;
                        flag: boolean;
                        begin
                         assign(p,nameFile);
 
       reset(p);
 
 s:=filesize(p);
 
     repeat
 
     flag:=false;
 
  for i:=0 to s-2 do
 
           begin
 
    seek(p,i);
 
     read(p,r1,r2) ;
     if r1>0 or r2>0 then begin
     z:=abs(sred)-r1;
    y:=abs(sred)-r2;
        if z<y then
begin
* * * * * * * * * * * * * * * *seek(f,i);
* * * * * * * * * * * * * * * *read(f,v);
* * * * * * * * * * * * * * * *seek(f,k+1);
* * * * * * * * * * * * * * * *write(f,m);
* * * * * * * * * * * * * * * *seek(f,i+k+1);
* * * * * * * * * * * * * * * *write(f,v);
                  
                  seek(p,i);
 
                  write(p,r2,r1);
 
                  flag:=true ;  end ;end;
 
 
       end;
 
    s:=s-1  ;
 
until not flag;
 
 close(p) ;  }
 
    //кончается первый способ сортировки(не работает)
 
      end;
begin    //главная прогармма
  x:=0;
 r('f');
  assign(f,'f');
 reset(f);
 while not eof(f) do begin
 read(f,k);
 write(k,' ');
 end;
 close(f);
  writeln;
  
  
   reset(f);
 j:=filesize(f);
 while not eof(f) do begin
 for i:=0 to j-1 do
  begin
  seek(f,i);
  read(f,a);
  If a>0 then
  x:=x+a;//находим сумму всех положит элементов файла
  end;
  writeln('summa polgit ',x);
 x:=x/j;//среднее значение всех элементво файла
 end;
  writeln('srznah ',x:9:2);
  
 
 {for i:=0 to j-2 do
  for k:=0 to j-2 do
  begin
   seek(f,i);
   read(f,a);
   //находим разность между средним значением положит элементов и текущим для i-ого элемента
   if a>0 then
   z:=abs(abs(x)-abs(a));
   seek(f,k+1);
   read(f,a);
    begin
    seek(f,i);//перемещаемся в i-ый элемент
    read(f,v);//записываем его в v
    seek(f,k+1);//перемещаемся в к+1 элемент
    read(f,m);//записываем его в m
    seek(f,i);//перемещаемся в i-ый элемент файла
    write(f,m);//записсываем в него значение из m
    seek(f,k+1);//перемещаемся в к+1 элемент
    write(f,v);//записываем его значение из v
    end;
  end;  }
//Все что выше,второй способ сортировки пробовал,не работает  
     close(f);
  //sort('f',x);
 
 reading('f');
end.
[/PASCAL]

исправил немного
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.04.2013, 18:48
Ответы с готовыми решениями:

Расставить строки в порядке возростания дат
дана матрица A(n,3) где первый столбец дата, второй столбец месяц, а третий год. Расставить строки в порядке возростания дат. procedure...

Положительные элементы массива расставить в порядке убывания
Работаем только с положительными, их нужно расставить в порядке убывания а отрицательные остаются на своем месте, вот мои наработки только...

В массиве переставить вперед положительные и равные нулю елементы в порядке убивания их значения, а затем отрицательные в порядке возростания.
массив M состоящий из 30 елементов, переоформить так, чтобы вначале стояли все положительные и равные нулю елементы в порядке убивания их...

1
0 / 0 / 2
Регистрация: 14.11.2012
Сообщений: 12
14.05.2013, 16:22  [ТС]
Доделал.может понадобиться кому-то
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
program L2;
uses crt;
var f:file of real;
i,j,k,n,y:integer;
s,r,a,b,v,sr:real;
begin
     assign(f,'f');
     rewrite(f);
     i:=0;
     r:=random(50)+20;
     while i<r do
           begin
                write(f,random(100)-50);
                i:=i+1
           end;
     n:=filesize(f);
     
     seek(f,0);
     writeln('Эл-ты файла в данный момент:');
     while not eof(f) do
           begin
                read (f,s);
                write(s,' ');
                i:=i+1;
           end;
     //нахождение среднего значения
     writeln;
     seek(f,0);
      s:=0;
    i:=0;
     while not eof(f) do
           begin
                read(f,r);
                If r>0  then
                 begin    s:=s+r;    y:=y+1;end;
                i:=i+1;
 
 
           end;  s:=s/y;//среднее значение всех положит эл-тов
           writeln('sred polojit ',s:9:2);
     writeln;
 
//     write(s-r);
     for i:=0 to j-1 do
  begin
  seek(f,i);
  read(f,a);
   
      end;
    writeln;
 
 
 
      for i:=1 to n-1 do
  for j:=0 to n-i do
   for k:=1 to n-j-1 do
       begin
            seek(f,j);//
            read(f,a);//
            if a>=0 then
               begin
                    seek(f,j+k);
                    read(f,b);
                    if b>=0 then
                       if abs(a-s)>abs(b-s) then
                          begin
                               seek(f,j);
                               read(f,v);
                               seek(f,j);
                               write(f,b);
                               seek(f,j+k);
                               write(f,a);
                               end
           
               end
    
 
       end;
    writeln();
 
 
 
    writeln('Эл-ты файла после осртировки:');
    seek(f,0);
    i:=1;
    while not eof(f) do
          begin
               read (f,s);
               write(s,' ');
               i:=i+1;
          end;
close(f);
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.05.2013, 16:22
Помогаю со студенческими работами здесь

Подсчёт среднего арифметического матрицы, и отклонения от среднего у элементов первой строки
Дана целочисленная матрица. Составить программу подсчёта среднего арифметического значения матрицы. Найти отклонение от среднего у...

Элементы каждой строки матрицы расставить в порядке возрастания абсолютных значений
Дана числовая вещественная матрица а,имеющая n строк и m столбцов.Составить программу предусматривающий контр.вывод исход. матрицы в окно...

Задан линейный массив, состоящий из n элементов. Расставить положительные, отрицательные и нулевые элементы
Задан линейный массив, состоящий из n элементов. Расставить в нём в том же порядке сначала положительные элементы, затем отрицательные,...

Составить программу вычисления среднего арифметического отрицательных значений и среднего геометрического положительных значений функции
Составить программу вычисления среднего арифметического отрицательных значений и среднего геометрического положительных значений функции...

Упорядочить массив в порядке возростания АБСОЛЮТНЫХ значений
Написать функцию, упорядочивает элементы настоящего массива в порядке возрастания их абсолютных значений. Я хз, как это сделать, рил....


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru