Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
seosage
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 70
1

Найти наибольший трехзначный элемент массива. Условие

25.10.2011, 20:43. Просмотров 1558. Ответов 15
Метки нет (Все метки)

Дан одномерный целочисленный массив. Составить программы для решения следующих задач, используя сначала процедуры (функции): Найти наибольший трехзначный элемент массива.

Сказали, что решил правильно... (преподаватель). Только попросили поправить кое-что, а именно:

Если мы здесь:

Delphi
1
a[i,j]:=random(999);
вместо 999 поставим 99 (то есть сделаем двухзначные числа в массиве), то программа все равно будет выдавать ответ (искать наибольшее число в массиве - двухзначное), хотя в условии задачи сказано, что нужно найти максимальное трехзначное. Вот нужно сделать условие в основной программе, чтобы выявлять есть ли трехзначные числа в массиве, и если их нет, то выдать, что их нет, а если есть - то найти максимальный.

Сама программа:

Delphi
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
 program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
const n=10;m=1;
  type mas = array [1..n, 1..m] of integer;
  procedure vvod (var a: mas);
  var i,j: integer;
  begin
    for i:=1 to n do
    for j:=1 to m do
    a[i,j]:=random(999);
  end;
  procedure vivod (a: mas);
  var i, j: integer;
  begin
    for i:=1 to n do
    for j:=1 to m do
    write(a[i,j]:4);
    writeln;
  end;
var a: mas; max, i, j: integer;
begin
randomize;
  vvod(a);
  vivod(a);
  max:=a[1,1];
    for i:=1 to n do
    for j:=1 to m do
     if max< a[i,j] then
     max:=a[i,j];
     writeln('Maksimalnoe chislo = ', max);
readln;
end.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2011, 20:43
Ответы с готовыми решениями:

Найти наибольший элемент массива
A Найти наибольший элемент массива.......нужна помощь ребята))))

Даны два целочисленных массива A(m) и B(n). Найти наибольший элемент массива А, не имеющий себе равных в массиве В.
Даны два целочисленных массива A(m) и B(n). Найти наибольший элемент массива А,...

Найти наибольший элемент одномерного массива и его номер
Найти наибольший элемент и его номер в последовательности, элементы которого...

Найти наибольший нечетный элемент одномерного массива используя рекурсию
Собственно, я вот что придумал: { глобальные переменные} var arr1:array of...

Найти наибольший элемент среди всех чётных элементов массива
Ребят, объясните в чем проблема. Программа компилится, но ввожу значения, а она...

15
Puporev
Модератор
55451 / 42564 / 29415
Регистрация: 18.05.2008
Сообщений: 100,688
25.10.2011, 21:05 2
Delphi
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
const n=20;
type mas = array [1..n] of integer;
procedure vvod (var a: mas);
var i,j: integer;
begin
for i:=1 to n do
a[i]:=random(9999);
end;
procedure vivod (a: mas);
var i, j: integer;
begin
for i:=1 to n do
write(a[i]:8);
writeln;
 end;
var a: mas;
    imax, i, j: integer;
begin
randomize;
vvod(a);
vivod(a);
imax:=0;
i:=1;
repeat
if (a[i]>99)and(a[i]<1000) then imax:=i
else i:=i+1;
until (i=n) or(imax>0);
if imax=0 then write('3h-znachnyh chisel net')
else
 begin
  for i:=1 to n do
  if (a[i]>99)and(a[i]<1000)and(a[imax]< a[i]) then imax:=i;
  writeln('Maksimalnoe 3h-znachnoe chislo = ',a[imax]);
 end;
readln;
end.
1
SYSM
117 / 117 / 30
Регистрация: 21.10.2011
Сообщений: 308
25.10.2011, 21:07 3
...max:=a[i,j];
if (max>99)and(max<1000) then
writeln('Maksimalnoe chislo = ', max)
else
writeln('Это не то');
...
1
seosage
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 70
25.10.2011, 21:26  [ТС] 4
Спасибо большое. Условие-то знал как сделать, просто не врубал куда его поместить.... (( Спасибо, все работает
0
seosage
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 70
27.10.2011, 16:42  [ТС] 5
Delphi
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
 program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
const n=10;
  type mas = array [1..n] of integer;
  procedure vvod (var a: mas);
  var i,j: integer;
  begin
    for i:=1 to n do
    a[i]:=random(10000);
  end;
  procedure vivod (a: mas);
  var i, j: integer;
  begin
    for i:=1 to n do
    write(a[i]:5);
    writeln;
  end;
var a: mas; max, i, j: integer;
begin
randomize;
  vvod(a);
  vivod(a);
  max:=a[1];
    for i:=1 to n do
     if max< a[i] then
     max:=a[i];
     if (max>99)and(max<1000) then
     writeln('Maksimalnoe chislo = ', max)
     else
     writeln('3h-znachnyh chisel net');
readln;
end.
Помогите плиз исправить ошибку. Вывод чисел случайный, и при:

Delphi
1
a[i]:=random(10000);
когда в числах есть трехзначные, выдает, что трехзначных нет...

При
Delphi
1
a[i]:=random(99);
все работает
0
Puporev
Модератор
55451 / 42564 / 29415
Регистрация: 18.05.2008
Сообщений: 100,688
27.10.2011, 16:47 6
seosage, А что, во втором посте это не не тебе писали?
0
SYSM
117 / 117 / 30
Регистрация: 21.10.2011
Сообщений: 308
27.10.2011, 16:48 7
все правильно у тебя, ты вводишь числа от 0 до 9999 в массив, выбираешь самое большое допустим 3000, а условие у тебя стоит если 3000>99 и 3000<1000 вот он тебе и выдает что нет чисел

Не по теме:

походу тебя валит препод :D

0
Puporev
Модератор
55451 / 42564 / 29415
Регистрация: 18.05.2008
Сообщений: 100,688
27.10.2011, 16:52 8
Цитата Сообщение от SYSM Посмотреть сообщение
если 3000>99 и 3000<1000 вот он тебе и выдает что нет чисел
Глупости, у меня проверяет 3х-значное число или нет, если не 3х-значное, его не проверяет на максимум.
Я наверное проверяю программы, прежде чем публиковать. Автор темы просто вообще не врубается в смысл задачи.
0
seosage
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 70
27.10.2011, 16:58  [ТС] 9
Цитата Сообщение от Puporev Посмотреть сообщение
Автор темы просто вообще не врубается в смысл задачи.
Давайте не будем на личности переходить

Ваша программа у меня просто не запускается. Сейчас попробую вытащить часть кода оттуда
0
SYSM
117 / 117 / 30
Регистрация: 21.10.2011
Сообщений: 308
27.10.2011, 16:58 10
Цитата Сообщение от Puporev Посмотреть сообщение
Глупости, у меня проверяет 3х-значное число или нет, если не 3х-значное, его не проверяет на максимум.
Я наверное проверяю программы, прежде чем публиковать. Автор темы просто вообще не врубается в смысл задачи.
у тебя то проверяет, а в его коде этого нет
0
seosage
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 70
27.10.2011, 17:09  [ТС] 11
Delphi
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
 program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
const n=10;
  type mas = array [1..n] of integer;
  procedure vvod (var a: mas);
  var i: integer;
  begin
    for i:=1 to n do
    a[i]:=random(10000);
  end;
  procedure vivod (a: mas);
  var i: integer;
  begin
    for i:=1 to n do
    write(a[i]:8);
    writeln;
  end;
var a: mas; max, i: integer;
begin
randomize;
  vvod(a);
  vivod(a);
  max:=0;
  i:=1;
repeat
if (a[i]>99)and(a[i]<1000) then max:=i
else i:=i+1;
until (i=n) or(max>0);
if max=0 then write('3h-znachnyh chisel net')
else
 begin
  for i:=1 to n do
  if (a[i]>99)and(a[i]<1000)and(a[max]< a[i]) then max:=i;
  writeln('Maksimalnoe 3h-znachnoe chislo = ',a[max]);
 end;
readln;
end.
Вот, работает, спасибо. Объясните пожалуйста, что выполняется здесь:

Delphi
1
2
3
4
5
6
7
8
9
10
11
repeat
if (a[i]>99)and(a[i]<1000) then max:=i
else i:=i+1;
until (i=n) or(max>0);
if max=0 then write('3h-znachnyh chisel net')
else
 begin
  for i:=1 to n do
  if (a[i]>99)and(a[i]<1000)and(a[max]< a[i]) then max:=i;
  writeln('Maksimalnoe 3h-znachnoe chislo = ',a[max]);
 end;
0
Puporev
Модератор
55451 / 42564 / 29415
Регистрация: 18.05.2008
Сообщений: 100,688
27.10.2011, 17:11 12
Цитата Сообщение от seosage Посмотреть сообщение
Ваша программа у меня просто не запускается.
Конечно, если ты ее пытался в Делфи запустить как есть, без строк
Delphi
1
2
3
4
5
6
 program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
то канешна. А вот у меня запускается.
0
Вложения
Тип файла: rar 123.rar (22.9 Кб, 6 просмотров)
seosage
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 70
27.10.2011, 17:12  [ТС] 13
Puporev, добавлял Ладно, проехали
0
Puporev
Модератор
55451 / 42564 / 29415
Регистрация: 18.05.2008
Сообщений: 100,688
27.10.2011, 17:13 14
Цитата Сообщение от seosage Посмотреть сообщение
Объясните пожалуйста, что выполняется здесь:
Ищем любое трехзначное число, оно пока будет максимальным.
Если их нет, сообщаем, иначе находим самый большой из трехзначных.
0
seosage
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 70
27.10.2011, 17:18  [ТС] 15
Puporev, а именно вот здесь:

Delphi
1
2
3
4
repeat
if (a[i]>99)and(a[i]<1000) then max:=i
else i:=i+1;
until (i=n) or(max>0);
Если число больше 99 и меньше 200, то оно максимальное, иначе ??? (зачем присваиваем i+1?)

и след. строка..
0
Puporev
Модератор
55451 / 42564 / 29415
Регистрация: 18.05.2008
Сообщений: 100,688
27.10.2011, 18:41 16
Pascal
1
2
3
4
5
repeat
if (a[i]>99)and(a[i]<1000) then max:=i//если число трехзначное, оно пока будет максимальным
else i:=i+1;//если не трехзначное, пропускаем
until (i=n) or(max>0);//если нашли трехзначное или дошли до конца массива, конец цикла.
{если дошли до конца и max=0, значит нет трехзначных вообще}
0
27.10.2011, 18:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2011, 18:41

Массив: Найти наибольший элемент массива и указать сколько раз он встречается в массиве
Дан двумерный массив размером 13х12. Найти наибольший элемент массива и указать...

Наибольший элемент первого массива, заменить наименьшим элементом второго массива
Дано 2 массива по 20.Наибольший элемент первого массива, заменить наименьшим...

Алгоритм Нарайаны - Найти такой наибольший j для которого выполняется условие
Алгоритм Нарайаны Шаг 1. Найти такой наибольший j для которого aj&lt;=aj+1; Шаг...


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

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

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