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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2011, 19:20   #1
aselinochka
Новичок
Джуниор
 
Регистрация: 05.10.2011
Сообщений: 1
По умолчанию массив

помогите решить задачу

1. дано целое число К и набор ненулевых целых чисел;признак его завершения - число 0. вывести номер первого числа в наборе, большего К. если таких чисел нет, то вывести " таких чисел нет".

2. дана квадратная целочисленная матрица D порядка М, заполненная случайными числами в диапазоне от 10 до 99. вывести матрицу D и элементы главной диагонали данной матрицы.

3. дан массив размера N ненулевых случайных целых чисел. найти индексы тех элементов массива, которые больше своего левого соседа, и количество таких элементов. найденные индексы выводить в порядке убывания.
aselinochka вне форума Ответить с цитированием
Старый 06.10.2011, 09:02   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

ваши попытки решения?
p51x вне форума Ответить с цитированием
Старый 09.10.2011, 17:58   #3
Urost
 
Регистрация: 08.10.2011
Сообщений: 4
По умолчанию

Помогите решить задания
Задача 1:
Дана последовательность действительных чисел а1, а2, … аn. Выяснить, будет ли она возрастающей.
Свое решение:
Код:
 program lab51;
var n:integer; a:array[1..n] of integer;i:integer;
  begin
  randomize;
  for i:=1 to n do
  a[i]:=random(n);
   for i:=2 to n do
   if a[i]<a[i+1] then
   writeln('da');
   else
   writeln('Het');
   end;
   end.
Задача 2:
Последовательность a1, a2, … , an состоит из нулей и единиц. Поставить в начало этой последовательности нули, а затем единицы.
Свое решение:
Код:
program ll;
const n=100;
var a:array[1..n] of integer; nmin,i,buf:integer;
 begin
 randomize;
 for i:=1 to n do
 a[i]:=random(2);
 for i:=1 to n-1 do
  begin
  nmin:=i;
  for i:=i+1 to n do
  if a[i]<a[nmin] then nmin:=i;
   begin
   buf:=a[i];
   a[i]:=a[nmin];
   a[nmin]:=buf;
   end;
   end;
   writeln(a[i],' ');
   for i:=1 to n do
   write(a[i]:6);
   end.

Если лень писать все решение, то подскажите, какими командами можно сгруппировать элементы матрицы(как в задаче 2), чтобы получить ответ, а так надеюсь на целое решение.Спасибо


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 10.10.2011 в 00:01.
Urost вне форума Ответить с цитированием
Старый 09.10.2011, 18:21   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Последовательность a1, a2, … , an состоит из нулей и единиц. Поставить в начало этой последовательности нули, а затем единицы.
Отсортировать массив по возрастанию вроде же? Зачем тут искать минимум и что-то еще? Погуглите пузырьковая сортировка, например.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.10.2011, 09:52   #5
Urost
 
Регистрация: 08.10.2011
Сообщений: 4
По умолчанию

Пытался найти что-то более-менее понятное в инете и не нашел:все примеры написаны как-то непонятно(непонятны они, ясен пень, из-за отсутствия моего опыта в этом деле).
Задача 2:
Последовательность a1, a2, … , an состоит из нулей и единиц. Поставить в начало этой последовательности нули, а затем единицы.
Мое решение(если можно это так назвать):
Код:
program sortarr;
   const n=100;
   var
   a : array[1..n] of integer;
   i:integer;
	        begin
		randomize;
		for i:=1 to n do
                a[i]:=random(2);
                for i:=1 to n do
		write(a[i]);
                end.
Вопрос: Выводится на экран, как и надо, рандомная последовательность нулей и единиц, но что писать после второго *for i:=1 to n do*, чтобы начать сортировку вначале нули, потом единицы?..Чтобы отсортировал по возрастанию
Еще 1 вопрос:вот эта строка *for i:=1 to n do* это, как я понимаю, счетчик и он*проходит* по всем элементам массива от 1 до n и делает заданное действие после слова *do*?Тогда если убрать *for i:=1 to n do* после *a[i]:=random(2);* программа будет выводить по 1 элементу на экран, а не 100, почему, если он уже прошелся по всем элементам от 1 до n и присвоил значение *a[i]:=random(2);*?
Благодарю!

Последний раз редактировалось Urost; 10.10.2011 в 09:58.
Urost вне форума Ответить с цитированием
Старый 10.10.2011, 10:01   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Не понял вопрос. Если убрать цикл, то выведется один элемент (с номером i).
Вот пример сортировки пузырьком из википедии.
Код:
for i:=n-1 downto 1 do {n - размер массива M[]}
    for j:=1 to i do
        if M[j]>M[j+1] then 
            begin
               tmp:= M[j];
               M[j]:= M[j+1];
               M[j+1]:= tmp;
            end;
Или не понятен сам принцип ее работы? Много раз (это один их самых медленных алгоритмов сортировки) проходим массив и если текущее число больше\меньше (сортировать по возрастанию или убыванию) следующего (поэтому циклы до размер массива-1, чтобы не выйти за границы массива) , то меняем их местами. Как-то так.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 10.10.2011 в 10:22.
Alex11223 вне форума Ответить с цитированием
Старый 10.10.2011, 20:32   #7
Urost
 
Регистрация: 08.10.2011
Сообщений: 4
По умолчанию

Что такое *tmp*?
Urost вне форума Ответить с цитированием
Старый 10.10.2011, 20:46   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Переменная того же типа, что и массив (т.е. если array of integer, то integer). Если очень надо, то можно обойтись без нее. Там просто меняются местами текущий и следующий элемент.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 10.10.2011 в 20:49.
Alex11223 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задан вектор X[20]. Положительные числа переписать в массив Y, а отрицательные в массив W leha_demi Помощь студентам 2 24.09.2011 18:12
Запись координат в массив в реал тайм, Как записать координаты в массив Dark19 Visual C++ 2 21.06.2011 18:45
Из массив А получить массив В, удвоив все нечётные элементы удвоены ( на Pascal) KARTER Помощь студентам 1 18.06.2011 19:58
Массив - Нужно написать массив и распечатать на экран с конца в начало(язык С++) econ Помощь студентам 1 29.05.2011 22:02
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06