Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 18.11.2012, 09:21   #1 (permalink)
Tenken
Banned
 
Регистрация: 18.11.2012
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Добрый день, прошу помощи в решении задачи на массивы

Если элементы массива расположены по возрастанию, то после первого положительного элемента вставить элемент равный сумме всех элементов массива, в противном случае рассортировать элементы массива по возрастанию.
Tenken вне форума   Ответить с цитированием

Старый 18.11.2012, 09:21
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Возможно такое, что проблема уже решена в одной из аналогичных тем

Нужна помощь в решении задачи Pascal
Прошу помощи в решении задач в Pascal
Помогите найти ошибку в решении задачи с массивом

Старый 18.11.2012, 09:35   #2 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 14,460
Записей в дневнике: 57
Сказал(а) спасибо: 124
Поблагодарили 150 раз(а) в 62 сообщениях
Репутация: 59633
По умолчанию

Так как вы не указали язык программирования, даю алгоритм решения в общем виде:
Сначала заполняем массив значениями
Потом определяем, отсортирован ли массив по возрастанию, для этого в цикле сравниваем попарно рядом стоящие элементы массива. Тут же можно подсчитывать и сумму всех элементов. Если в парах все последующие элементы больше всех предыдущих - переходим к поиску первого положительного элемента и следующему за ним присваиваем значение подсчитанной суммы; если же хоть одна пара элементов массива не соответствует критерию "по возрастанию" - переходим к сортировке массива по возрастанию. Так как вы не указали метод сортировки, то можно воспользоваться наиболее популярным - "пузырьковой сортировкой".
AlexZir вне форума   Ответить с цитированием
Старый 18.11.2012, 10:25   #3 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,360
Сказал(а) спасибо: 289
Поблагодарили 507 раз(а) в 165 сообщениях
Репутация: 91953
По умолчанию

Цитата:
Сообщение от AlexZir Посмотреть сообщение
Так как вы не указали язык программирования
Да уж - сдерживаюсь из последних сил, чтобы не начать попросту удалять запросы без указания языка программирования. До чего надоело! Потому что воспринимаю подобные сообщения прежде всего, как свидетельство неуважения, если не сказать наплевательского отношения к нам.
Но пока держусь.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Старый 18.11.2012, 13:50   #4 (permalink)
Tenken
Banned
 
Регистрация: 18.11.2012
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

прошу прощения на паскале
Tenken вне форума   Ответить с цитированием
Старый 18.11.2012, 13:53   #5 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 14,460
Записей в дневнике: 57
Сказал(а) спасибо: 124
Поблагодарили 150 раз(а) в 62 сообщениях
Репутация: 59633
По умолчанию

Не вижу вашего прощения на паскале
AlexZir вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 18.11.2012, 14:22   #6 (permalink)
Tenken
Banned
 
Регистрация: 18.11.2012
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Извините=) Я просто уже второй день её делаю и никак не приду к результату вот и нуждаюсь в помощи профессионалов)
Tenken вне форума   Ответить с цитированием
Старый 18.11.2012, 15:04   #7 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,360
Сказал(а) спасибо: 289
Поблагодарили 507 раз(а) в 165 сообщениях
Репутация: 91953
По умолчанию

Цитата:
Сообщение от Tenken Посмотреть сообщение
прошу прощения на паскале
Тогда, прошу прощения, но, например, так:
Код:
Const
 N=24;

Type
 Ar=Array[1..N+1] of Integer;

Var
 A:Ar;
 i:Integer;
 b:boolean;

Procedure Work_with_Array(B:Ar;var B1:Ar; Var Bb:boolean);
var
 bb1:boolean;
 Ib,Jb:Byte;
 Sum,D:Integer;
begin
 Sum:=0;
 bb1:=true;
 Jb:=0;
 For Ib:=1 to N-1 do
  begin
   Inc(Sum,B[Ib]);
   If B[Ib]>B[Ib+1] then bb1:=false;
   If (B[Ib]>0) and (Jb=0) then Jb:=Ib;
  end;
 If bb1 then
  begin
   Inc(Sum,B[N]);
   For Ib:=N downto Jb+1 do B[Ib+1]:=B[Ib];
   B[Jb+1]:=Sum;
  end
 else
  For Ib:=1 to N-1 do
   For Jb:=1 to N-Ib do
    If B[Jb]>B[Jb+1] then
     begin
      D:=B[Jb];
      B[Jb]:=B[Jb+1];
      B[Jb+1]:=D;
     end;
 B1:=B;
 bb:=bb1;
end;

Begin
 Randomize;
 Writeln('Var_1 (ordered array)');
 Writeln;
 Writeln('Initial array:');
 For i:=1 to N do
  begin
   A[i]:=i-(N div 4);
   Write(A[i]:4);
  end;
 Writeln;
 Writeln('Array after processing:');
 Work_with_Array(A,A,b);
 If b then
 For i:=1 to N+1 do Write(A[i]:4);
 Writeln;
 Writeln;
 Writeln;
 Writeln('Var_2 (disordered array)');
 Writeln;
 Writeln('Initial array:');
 For i:=1 to N do
  begin
   A[i]:=-(N div 4)+Random(N);
   Write(A[i]:4);
  end;
 Writeln;
 Writeln('Array after processing:');
 Work_with_Array(A,A,b);
 If not(b) then
 For i:=1 to N do Write(A[i]:4);
 Readln;
End.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Старый 18.11.2012, 16:03   #8 (permalink)
Tenken
Banned
 
Регистрация: 18.11.2012
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо большое за помощь, но дело в том, что операцию Procedure я не проходил, а наш преподаватель очень придирчив к тому что если я решу задачу с помощью операций, которые мы не проходили она не зачтёт работу к сожалению=(
Tenken вне форума   Ответить с цитированием
Старый 18.11.2012, 16:04   #9 (permalink)
Tenken
Banned
 
Регистрация: 18.11.2012
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

А и ещё с помощью булевого типа мы задачи тоже не решали, так что это она точно не зачтёт(
Tenken вне форума   Ответить с цитированием
Старый 18.11.2012, 16:05   #10 (permalink)
Tenken
Banned
 
Регистрация: 18.11.2012
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Если что я ещё зелёный в этом так что пока не могу решать без помощи задачи такой сложности( как и вся моя группа)(((
Tenken вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 06:57.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.