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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2012, 22:11   #1
rtif
Новичок
Джуниор
 
Регистрация: 21.03.2012
Сообщений: 3
По умолчанию Ребят, что я делаю не так? одномерный массив.

дан массив целых чисел из отрезка [-150;150].Определить, сумму четных , положительных элементов?
вот код, как я сделала:uses crt;
var
a:array[1..100] of integer;
i: byte;
n,k:integer;
begin
k:=0;
writeln(ââåäèòå ðàçìåðíîñòü ìàññèâà);
readln(n);
for i:=1 to n do
begin
a:=random(301)-150;
write(a:5);
end;
write;
for i:=i to n do
if (a>0) and (a mod 2=0) then
k:=k+a;
writeln(k);
end.

почему-то у меня выходят наоборот нечетные элементы, и сумма странная?
rtif вне форума Ответить с цитированием
Старый 22.03.2012, 22:51   #2
Arhangel7
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 90
По умолчанию

Код:
var 
a:array[1..100] of integer; 
i: byte;{зачем byte, нужно integer} 
n,k:integer; 
begin 
k:=0; 
writeln(ââåäèòå ðàçìåðíîñòü ìàññèâà); 
readln(n); 
for i:=1 to n do 
begin 
a:=random(301)-150;{ a -  массив, нужно a[I] } 
write(a:5); 
end; 
write; 
for i:=i to n do 
if (a>0) and (a mod 2=0) then { тут проверяем на кратность 2 ? }
k:=k+a; 
writeln(k); 
end.
как-то так
Arhangel7 вне форума Ответить с цитированием
Старый 22.03.2012, 23:17   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
 a[i] := random(301) - 150;
...
if (a[i]>0) and (a[i] mod 2 = 0) then k := k + a[i];

p.s. чтобы числа были случайными, нужно в начале программы вызвать иницилизацию сч.случайны чисел:
Код:
  Randomize;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.03.2012, 03:56   #4
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от rtif Посмотреть сообщение
вот код, как я сделала:
кеша, а этот код вообще компилируется?.. Боюсь, ты привела не окончательный вариант программы..

Главная твоя ошибка в том, что ты используешь идентификатор массива без индексов (Arhangel7 уже это сказал тебе, но не очень внятно). Но ее не должен был пропустить компилятор. Так что не совсем ясно, что именно ты имела в виду.. Скорее всего, тебя подкосил неверный предел в рабочем цикле (надо 1, у тебя i).

Вот тебе твой код, подправленный (что сказал, и еще пара исправлений).
Кстати, для определения четности лучше использовать встроенную функцию odd. И старайся форматировать код - ошибки будет легче искать.
Успехов тебе.
Код:
const
  m= 100;
  r= 150;
var
  a:array[1..m] of integer;
  i: byte;
  n,k:integer;
begin
  {randomize;} {раскомментируй после отладки}
  k:=0;
  writeln('введите размер массива (не более ',m,')'); 
  readln(n);
  for i:=1 to n do begin
    a[i]:=random(r*2+1)-r;
    write(a[i]:5);
  end;
  writeln;
  for i:=1 to n do
    if (a[i]>0) and not odd(a[i]) then k:=k+a[i];
  writeln(k)
end.
Предпочитаю на "ты".

Последний раз редактировалось TinMan; 26.03.2012 в 03:58.
TinMan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что я делаю не так rj-45 Microsoft Office Excel 7 22.11.2011 10:21
Что не так делаю? L6go1as Общие вопросы C/C++ 5 28.10.2011 07:54
Одномерный массив что я делаю не так Fox-mts Общие вопросы C/C++ 3 18.04.2011 19:17
Объсните что не так делаю Crudelis Общие вопросы C/C++ 4 10.06.2010 00:26
Visual C++: Что не так делаю? N!ckeL Помощь студентам 8 19.05.2008 11:28