Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
[Just]LoOny
5 / 5 / 1
Регистрация: 22.11.2010
Сообщений: 15
1

Массив и его сортировка

22.11.2010, 19:00. Просмотров 412. Ответов 9
Метки нет (Все метки)

Необходимо написать программу, выполняющую следующие действия:
1) Заполнение массива (я сделал вручную для проверки).
2) Нахождение четных положительных чисел в массиве.
3) Нахождение из (2) наименьшего.

Свой алгоритм написан, но он ошибочный и скорее всего не рациональный. (Заодно,кто-нибудь киньте мне совет как алгоритмы копировать с Паскаля и вставлять, буду признателен)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2010, 19:00
Ответы с готовыми решениями:

Дан массив из N целых чисел.Изменить его таким образом чтоб его значения шли в обратном порядке.
Дан массив из N целых чисел.Изменить его таким образом чтоб его значения шли в...

дан массив. Переписать его положительные элементы во второй массив ........
помогите пожалуйста решить две задачи очень срочно нужно 1. дан массив....

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

Массив и сортировка
Задача 1.Массив состоит из 10 рандомных чисел из интервала ,1-ую половину...

массив + сортировка
Задача 1. Из 20-и вводимых натуральных чисел, определить сколько четных....

9
Antifag
Заблокирован
22.11.2010, 19:15 2
1)
Pascal
1
2
3
допустим, так
fromString :: String -> [Int]
fromString = map read . words
2)
Pascal
1
2
import Control.Applicative
filterOddPos = filter (liftA2 (&&) (>0) even)
3)
Pascal
1
minFromList = minimum . filterOddPos
0
jonni
109 / 109 / 25
Регистрация: 03.03.2010
Сообщений: 436
22.11.2010, 19:19 3
1)
Pascal
1
2
3
Randomize;
for i:=1 to n do 
mass[i]=random(100);
2)
Pascal
1
2
3
for i:=1 to n do 
if((mass[i]>0) and(mass[i] mod 2=0))
Writeln(mass[i]);
3)
Pascal
1
if(a>b) writeln(a) else writeln(b);
0
[Just]LoOny
5 / 5 / 1
Регистрация: 22.11.2010
Сообщений: 15
24.11.2010, 16:12  [ТС] 4
Так, вижу не совсем поняли что надо... Пишу подробней и уже со своим.
Программа должна из 10 значений массива найти наименьшее четное кратное число. Я получил нечто следующее:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
t:array [1..10] of integer;
begin
for j:=1 to 10 do begin
write('Вводим значение переменной массива'); {ручной ввод поставил для более удобной проверки результатов}
readln(t[j]);
end;
 
Nmin:=t[1];
 for j:=1 to 10 do begin
  if (t[j]>0) and (t[j] mod 2 = 0) {находим кратные четные числа}
  then writeln(t[j]);
  Nmin:=t[j];
end;
 
if t[j] mod 2 = 0 {Тут мы должны найти наименьшее значение из уже найденых ранее}
 then write('Нaименьшее ', Nmin)
 else write('None');
readln;
end.
Последний блок у меня и вызвал затруднения, т.к он в первоначальном виде искал вообще только четные и выводил последнее введенное. При дальнейшей правке выводилось только наименьшее из введенных при сравнении с 0. Понимаю, что проблема в последнем IFе, но дорешения так и не додумался..
0
[Just]LoOny
5 / 5 / 1
Регистрация: 22.11.2010
Сообщений: 15
25.11.2010, 16:45  [ТС] 5
Апъ
По-моему как-то так:
Pascal
1
2
if Nmin<t[j] then write(Nmin)
else write(t[j]);
Подсказать никто не хочет?

Добавлено через 20 минут
Ага... В общем пришел к ситуации: если первым стоит "-2", то при коде
Pascal
1
2
3
4
5
6
... Nmin:=t[1];
end;
if (Nmin mod 2 = 0) and (Nmin<t[j]) then write(Nmin)
else write('None');
readln;
end.
Он не видит условия Nmin mod 2 = 0 и благополучно выводит первый из введеных значений массива..
0
Dekio
Фрилансер
Эксперт С++
5838 / 1219 / 499
Регистрация: 23.11.2010
Сообщений: 3,377
Записей в блоге: 1
25.11.2010, 18:49 6
3) Нахождение из (2) наименьшего.
что имееться ввиду?
0
[Just]LoOny
5 / 5 / 1
Регистрация: 22.11.2010
Сообщений: 15
27.11.2010, 12:28  [ТС] 7
Из найденных значений массива ( те, которые четные и кратны 2 ), найти наименьшее.
идея есть такая
Pascal
1
2
if Nmin mod 2 = 0 then write(Nmin);
if (t[j]<Nmin) and (t[j] mod 2 = 0) then write(t[j]);
не знаю, Я уже запутался... Он не видит условие (Nmin mod 2 = 0) and (Nmin<t[j])! Тупо мод пропускает и всё
0
Dekio
Фрилансер
Эксперт С++
5838 / 1219 / 499
Регистрация: 23.11.2010
Сообщений: 3,377
Записей в блоге: 1
27.11.2010, 17:34 8
попробуйте

if (not odd(t[j])) and (t[j]<Nmin) then write(t[j]);

Добавлено через 100500 минут
так подойдет?
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
program try;
const
n=10;
var
mas :array [1..n] of integer;
i, min :integer;
begin
min:=0;
writeln('Введите массив');
for i:=1 to n do
readln(mas[i]);
 
for i:=1 to n do {находим 1-й четный элемент}
if not odd(mas[i]) then
begin
min:=mas[i];
break;
end;
 
for i:=1 to n do
if (not odd(mas[i])) and (mas[i]<min) then
min:=mas[i];
 
if min <> 0 then
writeln('Наименьшее ', min)
else
writeln('Такого числа нет');
end.
0
godrik
0 / 0 / 1
Регистрация: 27.11.2010
Сообщений: 5
27.11.2010, 17:59 9
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
program massiv;
var
mas :array [1..100] of integer;
masP :array [1..100] of integer;
i,n,m,min :integer;
begin
writeln('Введите кол-во элементов');
readln(n);
writeln('Введите массив');
for i:=1 to n do
readln(mas[i]);
 
m:=0;
for i:=1 to n do
  if (mas[i] > 0) and (mas[i] mod 2 = 0) then begin
    masP[m] = mas[i];
      if m=0 then min = masP[m]
      else if masP[m] < min then min = masP[m];
    m++;
  end;
 
if m=0 then writeln('min нету')
else writeln('Наименьшее ', min)
где то так)
0
Dekio
Фрилансер
Эксперт С++
5838 / 1219 / 499
Регистрация: 23.11.2010
Сообщений: 3,377
Записей в блоге: 1
27.11.2010, 18:06 10
masP[m] = mas[i];

тут должно быть
masP[m] := mas[i];

тут тоже
if m=0 then min = masP[m]
должно быть :=

тоже самое
else if masP[m] < min then min = masP[m];

m++;
есть в С++ и ему подобных. в Pascal 'e inc(m);

в конце end. добавь

Pascal
1
2
3
4
5
m:=0;
for i:=1 to n do
  if (mas[i] > 0) and (mas[i] mod 2 = 0) then begin
    masP[m] := mas[i];
      if m=0 then min := masP[m]
тут логическая ошибка.
1
27.11.2010, 18:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2010, 18:06

Одномерный массив сортировка
Ввести массив N произвольных чисел (N записано в const) Отсортировать...

Двумерный массив и сортировка!
Помогите пожалуйста решить. Характеристикой строки матрицы назовем сумму ее...

Блок схема.Сортировка «Пузырьком», Сортировка методом «Последовательных перестановок», Сортировка «Вставками»
Помогите, нужны блок схемы Сортировка «Вставками» Program Vstavka; uses dos;...


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

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

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