2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Задача на массивы в паскале.Помогите решить!!!)))
Сообщение17.02.2009, 17:25 
пожалуйста помогите решит задачу)))



Определить максимальный элемент массива В (составленного из 12-ти элементов) и его номер.

 
 
 
 
Сообщение17.02.2009, 17:33 
Хорошо помогу но при условии что вы покажете сначала
как обявить этото масив, как вывести на экран 1-вый елемент масива,
и ещо напишыте цыкл который делает 10 проходов(кругов).

 
 
 
 
Сообщение17.02.2009, 17:40 
Аватара пользователя
А какие затруднения? Цикл for, две переменные - с номером и значением максимального элемента, и условие if в цикле. Вы пробовали решить? Что у Вас получилось?

Добавлено спустя 1 минуту 25 секунд:

Nerazumovskiy, зачем Вам 10 проходов? Сортировка здесь ни к чему...

 
 
 
 
Сообщение17.02.2009, 18:01 
ну должен же я знать что человек умеет писать цыклы.

 
 
 
 
Сообщение17.02.2009, 18:05 
Аватара пользователя
Судя по вопросу - не вполне :roll:

 
 
 
 
Сообщение17.02.2009, 18:09 
неPascal
. . .
1 continue
a=k(1)
i=1
b=k(i+1)
if(a.gt.b) then
a=b
endif
i=i+1
if(i.gt.n-1) then
write(*,*) a,i
else
go to 1
endif
end
n-кол-во элементов

 
 
 
 
Сообщение17.02.2009, 18:18 
Аватара пользователя
Danila88, а у Вас - бесконечный цикл... И за goto в Паскале нормальные преподы делают строгие замечания - это плохой стиль.

 
 
 
 
Сообщение17.02.2009, 18:46 
Ладно, ждем ответа на поставленые вопросы...

 
 
 
 
Сообщение19.02.2009, 18:12 
не знаю я начинал решать так-..

program rh
const size=5;
var
a:array[1...size] of integer;
begin
writeln('vvedite ? ? ?)
fork:= to size do

вот а дальше не знаю да и это не знаю правильно ли?

 
 
 
 
Сообщение19.02.2009, 18:39 
Аватара пользователя
Может попробовать сперва составить алгоритм без программы? Судя по всему, Вы совсем новичёк. Это Вам по учёбе нужно?

Я что-то уже успел подзабыть Паскаль, но Ваша программа должна выглядеть примерно так:
Код:
program rh;
const size = 5;
var a: array[1..size] of integer;
     k: integer;
     vmax: integer;
     vidx: integer;
begin
   writeln('Введите массив через пробел и нажмите Enter');
   readln(a); {Вот тут я не помню, вроде так можно - запросить весь массив}

   {Инициализируем}
   vidx := 1;
   vmax := a[1];

   {Ищем максимальный элемент}
   for k := 2 to size do begin
   end;

   writeln('Максимальный элемент:', vmax);
   writeln('Номер элемента в массиве:', vidx);
end.


Попробуйте представить себе, что Вам предъявляют ряд чисел, и в каждый момент у Вас есть возможность запомнить только одно число и его порядковый номер (если Вы запоминаете новое число, то старое забываете). А так же есть возможность сравнивать то число, что Вы запомнили, с тем, которое Вам предъявляют в настоящий момент. Сможете ли Вы после того, как просмотрите таким образом весь ряд, назвать наибольшее число и его номер?

 
 
 
 
Сообщение21.02.2009, 22:37 
AlexDem писал(а):
Код:
   {...}
   {Ищем максимальный элемент}
   for k := 2 to size do begin
   end;
  {...}

Кажется, Вы забыли if a[k] > vmax then vmax := a[k] (или как там на Pascal правильно)

 
 
 
 
Сообщение22.02.2009, 07:30 
AlexDem писал(а):
Danila88, а у Вас - бесконечный цикл... И за goto в Паскале нормальные преподы делают строгие замечания - это плохой стиль.

Прерывание находится здесь:

if(i.gt.n-1) then
write(*,*) a,i
else
go to 1
endif
однако ошибка есть в выводе номера, надо так:


1 continue
a=k(1)
i=1
b=k(i+1)
if(a.gt.b) then
a=b
NUM=i
endif
i=i+1
if(i.gt.n-1) then
write(*,*) a,NUM
else
go to 1
endif
end

Данный метод обработки (неявно заданный цикл) позволяет обрабатывать большой объём числовых данных - последовательный доступ

 
 
 
 
Сообщение26.02.2009, 17:53 
мдэ

Код:
uses crt;

var a:array[1..12] of Integer;
i, n: Integer;

begin
clrscr;
for i:=1 to 12 do Readln(a[i]);
Writeln;
n:=1;
for i:=2 to 12 do
    if a[i]>=a[n] then n:=i;
Writeln('MAX element = ', a[n], '    Nomer = ', n);
readkey;
end.

 
 
 
 
Сообщение26.02.2009, 18:03 
Аватара пользователя
Ой, что-то я уведомлений не получал, а тема-то разрослась... :)

Усталый в сообщении #188427 писал(а):
Кажется, Вы забыли if a[k] > vmax then vmax := a[k] (или как там на Pascal правильно)

Это я не забыл, а оставил для dioramer в качестве упражнения. А Вы, Усталый, его успешно решили (хотя и не полностью), поздравляю :lol:

Danila88 в сообщении #188483 писал(а):
Прерывание находится здесь:

А если на начало посмотрим:
Код:
1 continue
a=k(1)
i=1

- у Вас же i всё время затирается, так же как и a. Поэтому Вы всё время ходите по первому элементу.

littledespair в сообщении #189822 писал(а):
мдэ

Тоже вариант, чуть посложней и, возможно, помедленней - я о нём знал :P

 
 
 
 
Сообщение26.02.2009, 18:06 
AlexDem писал(а):
Тоже вариант, чуть посложней и, возможно, помедленней - я о нём знал :P
разве может быть что-то проще? О_о
о скорости в 12-тиэлементном массиве думать не приходится
да и выделение памяти минимальное же

 
 
 [ Сообщений: 25 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group