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

Pascal (Паскаль)

Войти
Регистрация
Восстановить пароль
 
[Just]LoOny
5 / 5 / 0
Регистрация: 22.11.2010
Сообщений: 15
#1

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

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

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

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

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

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

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

массив + сортировка - Pascal
Задача 1. Из 20-и вводимых натуральных чисел, определить сколько четных. Есть такой код Program maxim; Uses crt; ...

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

Одномерный массив сортировка - Pascal
Ввести массив N произвольных чисел (N записано в const) Отсортировать положительные значения по возрастанию, а отрицательные по убыванию,...

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
108 / 108 / 4
Регистрация: 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 / 0
Регистрация: 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 / 0
Регистрация: 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
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 23.11.2010
Сообщений: 3,377
Записей в блоге: 1
25.11.2010, 18:49 #6
3) Нахождение из (2) наименьшего.
что имееться ввиду?
0
[Just]LoOny
5 / 5 / 0
Регистрация: 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
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 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 / 0
Регистрация: 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
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 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
Привет! Вот еще темы с ответами:

Блок схема.Сортировка «Пузырьком», Сортировка методом «Последовательных перестановок», Сортировка «Вставками» - Pascal
Помогите, нужны блок схемы Сортировка «Вставками» Program Vstavka; uses dos; Type mass=array of integer; Var i,b,n,j,a:...

Массив и сортировка....очень надо... - Pascal
Создать массив, содержащий 10 различных символов. Первую половину массива отсортировать по возврастанию, а вторую - по убыванию....

двумерный массив. сортировка строк - Pascal
1.Описать матрицу 8х8 вещественных элементов. 2. Заполнить элементы матрицы согласно варианту случайными вещественными числами в...

Сортировка. Массив латинских букв. - Pascal
Дан одномерный массив латинских букв. Отсортировать их методом выбора в порядке возрастания. Вычислить среднее арифметическое трех...


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

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

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