Форум программистов, компьютерный форум, киберфорум
Наши страницы

Turbo Pascal

Войти
Регистрация
Восстановить пароль
 
 
Гаичка
1 / 1 / 0
Регистрация: 13.04.2009
Сообщений: 53
#1

Массив - Turbo Pascal

08.10.2011, 17:28. Просмотров 538. Ответов 15
Метки нет (Все метки)

Задание:
Вычислить произведение двух макс и двух мин нечетных чисел,которые находятся на интервале (1..25) массива В(5).

Сдела задачу только для 1 макс и 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
Program lab_6;
uses crt;
const n=5;xn=1;xk=25;
type mas=array[1..n] of integer;
var x:mas;
max,min,p,i:integer;
a:boolean;
begin clrscr;
    writeln(' Vvedite ',n, ' chisel');
    for i:=1 to n do read (x[i]);
    writeln(' ':10,'Ishodniu massiv ');
    FOR I:=1 TO N DO 
    WRITE(X[I]:4); WRITELN;
    readln;
    max:=-maxint; 
    min:=maxint;
        for i:=1 to n do 
        begin
            a:=(x[i]<=xk) and (x[i]>=xn) and (odd(x[i]));
            if (x[i]>max) and a then max:=x[i];
            if (x[i]<min) and a then min:=x[i]
        end;
p:=max*min;
writeln(' ':10,'max el=' , max:4,'   min el=',min:4);
writeln(' ':20,'proezvedenie=',p:4);
readln
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2011, 17:28
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Массив (Turbo Pascal):

Дан массив целых чисел а(12). Переписать в массив х четные, а в массив у нечетные элементы массива а - Turbo Pascal
Помогите пожалуйста решить эту задачу. Массив a выводит на печать. Я пишу a mod 2 = 0 , а он мне 41 ошибку выдает. Что делать? Вот...

Двумерный массив.Дан массив 5 х 5. Определить сумму элементов тех строк, где диагональный элемент равен нулю и записать их в отдельный массив. - Turbo Pascal
помогите составить программу. во задание:Дан массив 5 х 5. Определить сумму элементов тех строк, где диагональный элемент равен нулю и...

Массивы. В массив С переписать сначала массив А затем массив В - Turbo Pascal
В массив С переписать сначала массив А(20) затем массив В(20). Вывести все три массива. Добавлено через 33 минуты Проверьте...

Дан массив А. Составить массив В, в котором b[ i ]=a[0]+a[1]+a[2]+....+a[ i ] i=0,1,2,3,4......n-1. Распечатать массив В - Turbo Pascal
Дан массив А. Составить массив В, в котором b=a+a+a+....+a i=0,1,2,3,4......n-1. Распечатать массив В

Дан массив А[М] — массив чисел. Получить массив С, элементами которого будут модули сумм рядом стоящих чисел - Turbo Pascal
Реализовать в виде модуля набор подпрограмм для выполне¬ния сле-дующих операций над целыми числами: а) сложения; б) вычитания; ...

Из заданного текста выбрать цифры и записать в массив N, а буквы- в массив B. Все остальные символы записать в массив S - Turbo Pascal
подскажите как делать Из заданного текста выбрать цифры и записать в массив N, а буквы- в массив B. Все остальные символы записать в...

15
Zhexon
312 / 271 / 89
Регистрация: 25.09.2011
Сообщений: 477
08.10.2011, 18:29 #2
а если в массиве из 5 элементов не найдется 4х нечетных чисел, или вообще нет 4 чисел в нужном диапазоне что делать?
у тебя про нечетные числа в реализации ничего нет.
если в массиве все числа нечетные и все правильно, то я бы отсортировал и перемножил первые и последние 2 элемента.

Добавлено через 2 минуты
пардон) odd не заметил. есть про нечетные
0
Гаичка
1 / 1 / 0
Регистрация: 13.04.2009
Сообщений: 53
08.10.2011, 18:31  [ТС] #3
Цитата Сообщение от Гаичка Посмотреть сообщение
(odd(x[i]));
- нечетные числа

да без разницы сколько вводить чисел,это можно и изменить!Но как вытягавать 2 максимальных и 2 минимальных числа??без сортировки желательно!можно процедурой сделать,но мне это не нужно
0
Zhexon
312 / 271 / 89
Регистрация: 25.09.2011
Сообщений: 477
08.10.2011, 18:32 #4
Цитата Сообщение от Zhexon Посмотреть сообщение
то я бы отсортировал и перемножил первые и последние 2 элемента.
ну по сортировке
1
Гаичка
1 / 1 / 0
Регистрация: 13.04.2009
Сообщений: 53
08.10.2011, 18:34  [ТС] #5
а можно кодом пример?
0
Zhexon
312 / 271 / 89
Регистрация: 25.09.2011
Сообщений: 477
08.10.2011, 18:55 #6
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
uses crt;
const n=5;xn=1;xk=25;
type mas=array[1..n] of integer;
var res,x:mas;
max,min,p,i,j:integer;
a:boolean;
begin clrscr;
        writeln(' Vvedite ',n, ' chisel');
        for i:=1 to n do read (x[i]);
        writeln(' ':10,'Ishodniu massiv ');
        FOR I:=1 TO N DO
        WRITE(X[I]:4); WRITELN;
        readln;
        max:=-maxint;
        min:=maxint;
        j:=0;
                for i:=1 to n do
                if (x[i]<=xk) and (x[i]>=xn) and (odd(x[i])) then begin
                  inc (j); res[j]:=x[i];
                end;
 
    repeat
      a:=true;
      for i:=1 to j-1 do if res[i]>res[i+1] then begin
        a:=false;
        p:=res[i];
        res[i]:=res[i+1];
        res[i+1]:=p;
      end;
    until a;
    writeln('massiv otsortirowan :');
    for i:=1 to j do write(res[i],'  '); writeln;
    if j>3 then begin
                  P:=res[1]*res[2]*res[j]*res[j-1];
                  Writeln('P= ',p);
                end
           else writeln('net dostatochnogo kol-wa elementow');
 
readln
end.
1
Гаичка
1 / 1 / 0
Регистрация: 13.04.2009
Сообщений: 53
08.10.2011, 19:02  [ТС] #7
Спасибо!!
0
Zhexon
312 / 271 / 89
Регистрация: 25.09.2011
Сообщений: 477
08.10.2011, 19:06 #8
если без сортировки, то все равно нужно будет иметь дополнительный массив для результатов [1..4] и при опеределении мин и макс складывать значения в соответствующие элементы, то есть предыдущий мин ложить в [2] а предыдущий макс в [3]. Мин и макс соответственно в 1 и 4
Наверное как то так ))
0
Гаичка
1 / 1 / 0
Регистрация: 13.04.2009
Сообщений: 53
10.10.2011, 16:54  [ТС] #9
А если все тоже самое, сделать сортировку,и искать не два макс и мин числа,а просто два первых числа и два последних (не обязательно одиниковых)?!как реализовать?
0
Zhexon
312 / 271 / 89
Регистрация: 25.09.2011
Сообщений: 477
10.10.2011, 17:44 #10
После сортировки как раз и получаются два первых числа это минимальные, а два последних максимальные. Насчет одинаковости, это уж какая будет последовательность. Если можно, то поподробнее вопрос, так что же все таки нужно реализовать?
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,295
Записей в блоге: 2
Завершенные тесты: 1
10.10.2011, 17:53 #11
Разве так сложно сначала завести запись:
Pascal
1
2
3
type ch = record
key,pos: longint;
end;
Потом искать 2 максимальных и два минимальных и смотреть, чтобы их позиции (pos) не были равны.
0
Гаичка
1 / 1 / 0
Регистрация: 13.04.2009
Сообщений: 53
10.10.2011, 18:00  [ТС] #12
Цитата Сообщение от Zhexon Посмотреть сообщение
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
uses crt;
const n=5;xn=1;xk=25;
type mas=array[1..n] of integer;
var res,x:mas;
max,min,p,i,j:integer;
a:boolean;
begin clrscr;
 writeln(' Vvedite ',n, ' chisel');
 for i:=1 to n do read (x[i]);
 writeln(' ':10,'Ishodniu massiv ');
 FOR I:=1 TO N DO
 WRITE(X[I]:4); WRITELN;
 readln;
 max:=-maxint;
 min:=maxint;
 j:=0;
 for i:=1 to n do
 if (x[i]<=xk) and (x[i]>=xn) and (odd(x[i])) then begin
 inc (j); res[j]:=x[i];
 end;
repeat
 a:=true;
 for i:=1 to j-1 do if res[i]>res[i+1] then begin
 a:=false;
 p:=res[i];
 res[i]:=res[i+1];
 res[i+1]:=p;
 end;
 until a;
 writeln('massiv otsortirowan :');
 for i:=1 to j do write(res[i],' '); writeln;
 if j>3 then begin
 P:=res[1]*res[2]*res[j]*res[j-1];
 Writeln('P= ',p);
 end
 else writeln('net dostatochnogo kol-wa elementow');
readln
end.

Тут выберает одинаковых макс и мин числа,если не повторяется число макс или мин,то выдает,что "Нет достаточного ко-ва элементов",а надо просто самые большие и маленькие 2 числа
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,295
Записей в блоге: 2
Завершенные тесты: 1
10.10.2011, 18:16 #13
И меня получилось такое:
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
type ch = record
     key,pos: longint;
     end;
var a: array[1..250] of ch;
    i,j,k,n: longint;
    max,max1,min,min1: ch;
begin
readln (n);
for i:= 1 to n do
begin
read (a[i].key);
a[i].pos:= i;
end;
max.key:= -1;
 
 
for i:= 1 to n do
if (a[i].key mod 2 = 1) and (a[i].key>max.key) then max:= a[i];
max1.key:= -1;
for i:= 1 to n do
if (a[i].key mod 2 = 1) and (a[i].key>max1.key) and (max.pos<>a[i].pos) then max1:= a[i];
min.key:= max1.key+1;
for i:= 1 to n do
if (a[i].key mod 2 = 1) and (a[i].key<min.key) then min:= a[i];
min1.key:= max1.key+1;
for i:= 1 to n do
if (a[i].key mod 2 = 1) and (a[i].key<min1.key) and (min.pos<>a[i].pos) then min1:= a[i];
writeln (max.key*max1.key*min.key*min1.key);
end.
Добавлено через 13 минут
Так красивее =)
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
type ch = record
     key,pos: longint;
     end;
     
var a: array[1..250] of ch;
    i,j,k,n: longint;
    max,max1,min,min1,h: ch;
 
 
function search (b: boolean; m: ch): ch;
var i: integer;
    res: ch;
begin
res:= m;
if b=true then res.key:= -1 else res.key:= 100000000;
for i:= 1 to n do
if (b=true) and (a[i].key>res.key) and (a[i].pos<>m.pos) and (a[i].key mod 2 = 1) then res:= a[i]
else if (b=false) and (a[i].key<res.key) and (a[i].pos<>m.pos) and (a[i].key mod 2 = 1) then res:= a[i];
search:= res;
end;
 
begin
readln (n);
for i:= 1 to n do
begin
read (a[i].key);
a[i].pos:= i;
end;
h.key:= -1; h.pos:= 0;
max:= search (true,h);
max1:= search (true,max);
h.key:= max.key+1;
min:= search (false,h);
min1:= search (false,min);
writeln (max.key*max1.key*min.key*min1.key);
end.
0
Гаичка
1 / 1 / 0
Регистрация: 13.04.2009
Сообщений: 53
10.10.2011, 18:26  [ТС] #14
Спасибо!хорошая программка,но мне не надо функцией!На много проще надо
можно просто добавить к моей программе??
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,295
Записей в блоге: 2
Завершенные тесты: 1
10.10.2011, 18:31 #15
Надо добавить запоминание позиций (чтобы не было 2 одинаковых). Для этого я и сдела запись в первой программе (над программой с функцией). Ну если хотите добавьте записи во 1ых и 2 цикла: сначала ищутся мах и мин а потом мах1 и мин1 (мах1 и мин1 надо сравнивать по позициям с мах и мин).
0
10.10.2011, 18:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2011, 18:31
Привет! Вот еще темы с ответами:

Дан одномерный массив A из N элементов. Переписать положительные элементы массива в массив B, а отрицательные в массив C - Pascal
Дан одномерный массив A из N элементов. Переписать положительные элементы массива в массив B, а отрицательные в массив C.

Дан массив А. Составить массив В, в котором b[ i ]=a[0]+a[1]+a[2]+....+a[ i ] i=0,1,2,3,4......n-1. Распечатать массив В - Pascal
Дан массив А. Составить массив В, в котором b=a+a+a+....+a i=0,1,2,3,4......n-1. Распечатать массив В.

из заданного теста выбрать цифры и записать в массив N ,а буквы - в массив B .Все остальные символы записать в массив S - Pascal
Привет всем.Помогиет пожалуйста решить задачку из заданного теста выбрать цифры и записать в массив N ,а буквы - в массив B .Все...

Двумерный массив. Вывести массив без i-той строки, и j-того столбца - Turbo Pascal
Дан двумерный массив, а также целые числа i и j.Вывести массив без i-той строки, и j-того столбца.


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru