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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2011, 14:40   #1
мария 12
Пользователь
 
Регистрация: 26.05.2011
Сообщений: 26
Печаль задача

помогите плиз... найти сумму элементов одномерного массива расположенных между 1 и 2 отрицательными элементами за1 проход по массиву..
мария 12 вне форума Ответить с цитированием
Старый 26.05.2011, 14:45   #2
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

задача простая... наработки есть?
Pein95 вне форума Ответить с цитированием
Старый 26.05.2011, 14:47   #3
мария 12
Пользователь
 
Регистрация: 26.05.2011
Сообщений: 26
По умолчанию

begin
k1:=0;
k2:=0;
i:=1;
while (i<=n) do
begin
readln(x[i]);
if x[i]<0 then
begin
if k1=0 then
begin
k1:=i;
i:=i+1;
s:=0;
k2:=0;
while (i<=n) and (k2=0) do
begin
readln(x[i]);
if x[i]>=0 then
begin
s:=s+x[i] ;
writeln(s)
end
else
k2:=i;
i:=i+1
end;
end;
end
else i:=i+1;
writeln(s)
end;
if (k1=0)or (k2=0) then
writeln('решений нет,нет 2х отрицательных элементов')
else
if k2=k1+1 then
writeln('Отрицательные элементы соседи');
readln;
end;
результат не выводит вообще((
мария 12 вне форума Ответить с цитированием
Старый 26.05.2011, 14:55   #4
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

за 1 проход тоисть нужно в етом проходе найти отрицательные елементы и пощитать суму елементов между ними?
или можно найти первый 2 мин елемент в отдельном цыкле?
Pein95 вне форума Ответить с цитированием
Старый 26.05.2011, 14:59   #5
мария 12
Пользователь
 
Регистрация: 26.05.2011
Сообщений: 26
По умолчанию

за всю программу нужно сделать один проход по массиву
мария 12 вне форума Ответить с цитированием
Старый 26.05.2011, 15:00   #6
Donatello
Форумчанин
 
Аватар для Donatello
 
Регистрация: 22.12.2010
Сообщений: 109
По умолчанию

Во первых код программы заключай те в тег [code ] [/code ] он же в виде символа решетки присутствует в панели при наборе текста.

Во вторых у вас нету массива, ну либо я их так плохо понимаю что его тут не вижу. Массив задается след образом
Код:
x: array [1..10] of Integer;
[1.10] это размер массива или по другому кол-во элементов.
Если не принципиально как вводится массив, то вот массив из 100 элементов со случайным заполнением онного.
Код:
var
    x: array [1..100] of Integer;
    i: Integer;
begin
    for i := 1 to 100 do begin
      x[i] := random(50) - 25; // вычитание 25 позволит в массиве появлятся отрицательным числам
      Write(x[i],' ');
    end;
Дальше тебе надо сделать условие, которое позволит выполнить твое задание.
И в твоем коде например от ошибка
Код:
if (k1=0)or (k2=0) then
в это условие он у тебя войдет только в том случае, если k1 или k2 равны нулю, а не отрицательны или положительны, следовательно код должен выглядеть примерно так
Код:
if (k1>=0)or (k2>=0) then
и для массивов лучше использовать цикл for.
Я бы изменил мир, но бог не дает исходников (c)

И сказал мыслитель, напиши свою проблему на бумаге и ты увидишь свои ошибки.
Donatello вне форума Ответить с цитированием
Старый 26.05.2011, 15:03   #7
мария 12
Пользователь
 
Регистрация: 26.05.2011
Сообщений: 26
По умолчанию

ну я бы рада сделать с for но условия таковы что нужно с while может другой вариант предложишь???
мария 12 вне форума Ответить с цитированием
Старый 26.05.2011, 15:09   #8
Donatello
Форумчанин
 
Аватар для Donatello
 
Регистрация: 22.12.2010
Сообщений: 109
По умолчанию

Ну про то что нужно с while Ты ничего не написала вот я и привел с for.
С while рандомное заполнение массива будет выглядеть наверное вот так.
Код:
var
    x: array [1..100] of Integer;
    i: Integer;
begin
    i:=1;
    While (i != 100) do begin
      x[i] := random(50) - 25; // вычитание 25 позволит в массиве появлятся отрицательным числам
      Write(x[i],' ');
      inc(i);
     end;
Но тут только заполнение массива положительными и отрицательными числами, я точно хз правильно я перевел из for в while, так как сам всегда для массивов использовал for.
Дальше надо подумать как за 1 цикл провести все остальные операции.
Я бы изменил мир, но бог не дает исходников (c)

И сказал мыслитель, напиши свою проблему на бумаге и ты увидишь свои ошибки.

Последний раз редактировалось Donatello; 26.05.2011 в 15:13.
Donatello вне форума Ответить с цитированием
Старый 26.05.2011, 15:12   #9
мария 12
Пользователь
 
Регистрация: 26.05.2011
Сообщений: 26
По умолчанию

эм.... насчет ввода массива я знаю все... мне нужно решение задачи с ручным вводом массива ,есть мысля использования булевского флажка но не знаю как ее осуществить,плиз подумай)))
мария 12 вне форума Ответить с цитированием
Старый 26.05.2011, 15:14   #10
Donatello
Форумчанин
 
Аватар для Donatello
 
Регистрация: 22.12.2010
Сообщений: 109
По умолчанию

А вложенный цикл использовать можно??? Если да то есть идейка, если нет то над еще подумать.
Я бы изменил мир, но бог не дает исходников (c)

И сказал мыслитель, напиши свою проблему на бумаге и ты увидишь свои ошибки.
Donatello вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача минимизации дисбаланса на линии сборки (задача минимакса) LenZab Microsoft Office Excel 13 13.03.2011 22:51
Задача slavik-slash Общие вопросы C/C++ 0 05.01.2011 16:53
Задача stck Microsoft Office Excel 1 30.12.2010 10:04
Задача laxe Общие вопросы C/C++ 10 29.08.2009 18:42