2014 dxdy logo

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

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




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


17/02/09
2
пожалуйста помогите решит задачу)))



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

 Профиль  
                  
 
 
Сообщение17.02.2009, 17:33 


23/12/08
245
Украина
Хорошо помогу но при условии что вы покажете сначала
как обявить этото масив, как вывести на экран 1-вый елемент масива,
и ещо напишыте цыкл который делает 10 проходов(кругов).

 Профиль  
                  
 
 
Сообщение17.02.2009, 17:40 
Заблокирован
Аватара пользователя


07/08/06

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

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

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

 Профиль  
                  
 
 
Сообщение17.02.2009, 18:01 


23/12/08
245
Украина
ну должен же я знать что человек умеет писать цыклы.

 Профиль  
                  
 
 
Сообщение17.02.2009, 18:05 
Заблокирован
Аватара пользователя


07/08/06

3474
Судя по вопросу - не вполне :roll:

 Профиль  
                  
 
 
Сообщение17.02.2009, 18:09 


25/12/08
115
не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 
Заблокирован
Аватара пользователя


07/08/06

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

 Профиль  
                  
 
 
Сообщение17.02.2009, 18:46 


23/12/08
245
Украина
Ладно, ждем ответа на поставленые вопросы...

 Профиль  
                  
 
 
Сообщение19.02.2009, 18:12 


17/02/09
2
не знаю я начинал решать так-..

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

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

 Профиль  
                  
 
 
Сообщение19.02.2009, 18:39 
Заблокирован
Аватара пользователя


07/08/06

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

Я что-то уже успел подзабыть Паскаль, но Ваша программа должна выглядеть примерно так:
Код:
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 


05/09/08
59
AlexDem писал(а):
Код:
   {...}
   {Ищем максимальный элемент}
   for k := 2 to size do begin
   end;
  {...}

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

 Профиль  
                  
 
 
Сообщение22.02.2009, 07:30 


25/12/08
115
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 


26/02/09
2
мдэ

Код:
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 
Заблокирован
Аватара пользователя


07/08/06

3474
Ой, что-то я уведомлений не получал, а тема-то разрослась... :)

Усталый в сообщении #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 


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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group