Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2009, 09:36   #1
Сергей К.
Пользователь
 
Регистрация: 08.05.2009
Сообщений: 11
По умолчанию Pascal. поиск макс. элемента массива

помогите пожалуйста! как найти в одномерном массиве с числами от 1 до 99 (Random) элемент, первая цифра которого максимальная? массив состоит из 9 элементов.

Последний раз редактировалось Сергей К.; 09.12.2009 в 09:43.
Сергей К. вне форума Ответить с цитированием
Старый 09.12.2009, 10:18   #2
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Код:
var
  i, ind : integer;
  arr : array[1..9] of byte;
  max, cur : real;
begin
randomize;
for i := 1 to 9 do
  begin
  arr[i] := random(98);
  inc(arr[i]);
  end;
max := 0;
for i := 1 to 9 do
begin
  if arr[i] < 10 then
    cur := arr[i]
  else
    cur := (arr[i] / 10) - ((arr[i] mod 10) * 0.1);
  if cur > max then
  begin
  max := cur;
  ind := i;
  end;
end;
writeln(arr[ind]);
end;
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.

Последний раз редактировалось notHaker; 09.12.2009 в 10:29.
notHaker вне форума Ответить с цитированием
Старый 09.12.2009, 10:22   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

В цикле по элементам и сравниваешь с некой переменной. Если очередной элемент более этой переменной, присваиваешь переменной этот элемент.

И незачем так кричать...

Цитата:
notHaker
Фухх... Не сложновато ли?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.12.2009, 10:26   #4
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Фухх... Не сложновато ли?
Дык там вродь про первую максимальную цифру он говорил...
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 09.12.2009, 10:27   #5
Сергей К.
Пользователь
 
Регистрация: 08.05.2009
Сообщений: 11
По умолчанию

СПАСИБО БОЛЬШОЕ! пытался сделать что-то вроде: если меньше 10, то ищет макс, иначе делит на 10, но ничего не получалось! СПАСИБО!!!))


Ну да, про ПЕРВУЮ МАКСИМАЛЬНУЮ ЦИФРУ а там просто ищет максимальное число?
Сергей К. вне форума Ответить с цитированием
Старый 09.12.2009, 10:31   #6
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Цитата:
Сообщение от Сергей К. Посмотреть сообщение
СПАСИБО БОЛЬШОЕ! пытался сделать что-то вроде: если меньше 10, то ищет макс, иначе делит на 10, но ничего не получалось! СПАСИБО!!!))


Ну да, про ПЕРВУЮ МАКСИМАЛЬНУЮ ЦИФРУ а там просто ищет максимальное число?
нет... по первой цифре находит.
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 09.12.2009, 10:34   #7
Сергей К.
Пользователь
 
Регистрация: 08.05.2009
Сообщений: 11
По умолчанию

СПАСИБО!!!
Сергей К. вне форума Ответить с цитированием
Старый 09.12.2009, 11:05   #8
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

что-то больно сложновато вы сделали =))) там же легко, вот пример на си

Код:
#include <stdio.h>

int main(void)
{
    
    int a[] = {25,55,78,23,98,19};
    int size = 6;
    int max = a[0], i;
    for(i=0; i<size; i++)
    {
             if(a[i]/10 > max/10)
                  max = a[i];
    }
    printf("%d\n", max);
    getch();
    return 0;
}
NiCola999 вне форума Ответить с цитированием
Старый 09.12.2009, 15:19   #9
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Цитата:
Сообщение от NiCola999 Посмотреть сообщение
что-то больно сложновато вы сделали =))) там же легко, вот пример на си

Код:
#include <stdio.h>

int main(void)
{
    
    int a[] = {25,55,78,23,98,19};
    int size = 6;
    int max = a[0], i;
    for(i=0; i<size; i++)
    {
             if(a[i]/10 > max/10)
                  max = a[i];
    }
    printf("%d\n", max);
    getch();
    return 0;
}
1) массив заполняется рандомом
2) фактически у вас не находит нужный индекс массива (пример : в массиве два элемента 88 и 89, то ваш алгоритм будет указывать на последний, тк 8,9 > 8,8. а должно быть иначе 8,0 = 8,0). К пареньку придерутся. А по вашему алгоритму можно вабще не делить, тк результат будет тот же.
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.

Последний раз редактировалось notHaker; 09.12.2009 в 15:28.
notHaker вне форума Ответить с цитированием
Старый 10.12.2009, 18:00   #10
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

думаю, проще так:
Код:
function FirstDigit(X: Integer);
begin
  while X div 10 <> 0 do
    X := X div 10;
  FirstDigit := X;
end;

var
  I, Max: Integer;
  a: Array[1..9] of Integer;
begin
  Randomize;
  for I := 1 to 9 do
    a[I] := 1 + Random(98);
  max := 0;
  for I := 1 to 9 do
    if Max < FirstDigit(a[I]) then Max := FirstDigit(a[i]);
  WriteLn(Max);
end.
правда не компилировал, на ходу написал, так что может где-то надо что-то подправить...
Alex_FF вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск мин. элемента массива lg12 Помощь студентам 1 10.07.2009 15:07
Поиск Макс элемента kostya2 Общие вопросы C/C++ 5 26.04.2009 16:49
Поиск минимального (максимального) элемента массива Radamant Помощь студентам 10 24.12.2008 17:44
Поиск позиции элемента несортированного массива gdneon Microsoft Office Excel 4 16.04.2007 08:08