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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2009, 12:05   #11
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Цитата:
не могу понять вашей логики, нам сказали что задача как-то сводится сама к себе, и не нужно проходить все элементы
а вы спросите у того кто вам это сказал- как не проходя всех элементов узнать максимальную сумму подмассива из всего массива? Вроде все логично!
p.s программа работает,
сумму выдает,
судя по вашему условию задача решена верно если не брать в расчет пустых массивов!
ну а как её решать и к чему сводить это личное дело Вас и того кто задал Вам эту задачу!
Цитата:
а если не все отрицательные
то алгоритм описан в посте№2
p.p.s
вы комменты читали?
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.

Последний раз редактировалось ОДИНОЧЕСТВО В СЕТИ; 04.11.2009 в 12:11.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 05.11.2009, 15:50   #12
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

вот что у меня получилось:
Код:
program sum_max;
var
   a:array[1..100] of integer;
   i,p,sum1,sum2:integer;
   fo,fi:text;
   n:integer;
   s:integer;
   
{--------------------------ïðîöåäóðà ââîäà äàííûõ-------------------------------}
procedure inputData;
begin
	assign(fi,'input3.txt');
	reset(fi);
	assign(fo,'output3.txt');
	rewrite(fo);
	readln(fi,n);
	while (not eof(fi)) do
	begin
		for i:=1 to n do
		begin
			read(fi,s);
			a[i]:=s;
		end;
	end;
end;

{--------------------------ïðîöåäóðà âûâîäà äàííûõ------------------------------}
procedure outputData;
begin
     close(fi);
     write(fo);
     write(fo,sum2);
     close(fo);
end;

{--------------------ôóíêöèÿ íàõîæäåíèÿ ìàêñèìàëüíîãî ýëåìåíòà------------------}
function max:integer;
var
   m:integer;
begin
     m:=a[1];
     for i:=2 to n do
     begin
          if m<a[i] then m:=a[i];
     end;
     max:=m;
end;
{----------------------ãëàâíàÿ ïðîãðàììà----------------------------------------}
begin
     inputData;
     sum1:=0;
     sum2:=0;
     p:=0;
     for i:=1 to n do
     begin
          if(a[i]>0)and(p=0) then sum1:=sum1+a[i]
          else p:=1;
          if(p=1) then
          begin
               if(sum1>sum2) then sum2:=sum1;
               p:=0;
               sum1:=0;
          end;
    end;
    if (sum2<sum1) then sum2:=sum1;
    if sum2=0 then sum2:=max;
    OutputData;
end.
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма четных элементов матрицы. Произведение элементов 3-го столбца. Минимальный элемент матрицы. renovare Помощь студентам 2 03.07.2009 21:13
В массиве A, состоящем из 10 элементов, подсчитать количество положительных элементов Alex61 Помощь студентам 5 16.05.2009 23:06
В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму элементов массива HazelHen Общие вопросы C/C++ 2 29.03.2009 15:16
Количество элементов в массиве skit Общие вопросы C/C++ 3 18.03.2009 21:56
СУММА ЗНАЧЕНИЙ ЭЛЕМЕНТОВ Dimak24 Помощь студентам 1 24.12.2008 09:29