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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2012, 20:23   #1
dmitriy20104
Пользователь
 
Регистрация: 21.06.2012
Сообщений: 36
Вопрос Задача на циклы

Дана последовательность n целых чисел a1,a2,..,an.
а) Выяснить, какое число встречается в последовательности a1,a2,..,an раньше - положительное или отрицательное. Если все члены равны нулю, то сообщить об этом.
б) Найти номер первого четного члена последовательности а1,a2,..,an. Если четных нет, то сообщить об этом.
dmitriy20104 вне форума Ответить с цитированием
Старый 25.06.2012, 20:33   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

1) Где хоть какое-то преветствие господ программистов?
2) Где просьба о помощи? если это вообще не просьба, то катись ка ты колобок
3) Где хоть строка Вашего кода? идеи реализации? хоть что-то...
Poma][a вне форума Ответить с цитированием
Старый 25.06.2012, 20:51   #3
dmitriy20104
Пользователь
 
Регистрация: 21.06.2012
Сообщений: 36
По умолчанию

Извините. Многоуважаемые программисты, не могли бы вы мне помочь с решением задачи. Так как для моего уровня данная задача сложна, то я даже своего решения не смог написать.
dmitriy20104 вне форума Ответить с цитированием
Старый 25.06.2012, 21:24   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

№1
Код:
const
        SIZE = 10000;

var
        a : array [1..SIZE] of Integer;
        i, res, n : Integer;

begin
        ReadLn (n);

        for i := 1 to n do
                Read (a[i]);

        i := 1;
        res := a[i];
        while (res <= n) and (res = 0) do
                Inc (res);

        if res > 0 then
                WriteLn ('+')
        else if res < 0 then
                WriteLn ('-')
        else
                WriteLn ('0')
end.
№2
Код:
const
        SIZE = 10000;
var
        a : array [1..SIZE] of Integer;
        n, i, PosRes : Integer;

begin
        ReadLn (n);

        for i := 1 to n do
                Read (a[i]);

        PosRes := 1;
        while (PosRes <= n) and (Odd (a[PosRes])) do
                Inc (PosRes);

        if PosRes > n then
                WriteLn ('-')
        else
                WriteLn (PosRes)
end.

Последний раз редактировалось Poma][a; 25.06.2012 в 21:45.
Poma][a вне форума Ответить с цитированием
Старый 25.06.2012, 21:33   #5
dmitriy20104
Пользователь
 
Регистрация: 21.06.2012
Сообщений: 36
По умолчанию

Ромаха, можно ли написать тоже самое, только без массивов и без этого:
const
SIZE = 10000;
dmitriy20104 вне форума Ответить с цитированием
Старый 25.06.2012, 21:38   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Во-первых, немного исправленный вариант решения Poma][a:
Код:
const
  SIZE = 10000;

var
  a: array [1..SIZE] of Integer;
  i, n: Integer;

begin
  repeat
    write('Input n (<=', SIZE, '): ');
    ReadLn(n);
  until n <= SIZE;
  
  for i := 1 to n do
  begin
    write('A[', i, ']: ');
    Readln(a[i]);
  end;
  
  i := 1;
  while (i <= n) and (a[i] = 0) do
    Inc(i);
  
  if i > n then
    WriteLn('0')
  else
  if a[i]  > 0 then
    WriteLn('+')
  else
    WriteLn('-');
  readln;
end.
Poma][a, у вас в res всегда первый элемент (внутри цикла while будет всегда a[1]=0).

Update Сейчас вообще непонятный способ, в котором в res хранится a[1], и на каждой итерации значение res увеличивается на 1.

Вариант 1 задачи без массива:
Код:
var
  a, i, n: integer;

begin
  write('Input n: ');
  readln(n);
  for i := 1 to n do
  begin
    read(a);
    if a > 0 then
    begin
      writeln('First positive');
      readln;
      exit;
    end
    else
    if a < 0 then
    begin
      writeln('First negative');
      readln;
      exit;
    end;
  end;
  writeln('All zero');
  readln;
end.
Update 2 (чтобы не плодить сообщения)
Цитата:
Да, извиняюсь, мой косяк, не досмотрел, не додумал, спасибо!!!
Да, бывает со всеми (сам постоянно грешу косяками в ночных сообщениях ).

Возник вот какой вопрос: ленивые или жадные логические выражения в паскале? Пока не смог нагуглить. Этот вопрос относится к строчке while (i <= n) and (a[i] = 0) do. Если в паскале не ленивые выражения, то будет выход за пределы массива.

Более красивый вариант 1 задачи:
Код:
var
  a, i, n: integer;

begin
  write('Input n: ');
  readln(n);
  i := 1;
  repeat
    read(a);
    inc(i);
  until (a <> 0) or (i > n);
  if a > 0 then
    writeln('First positive')
    else
  if a < 0 then
    writeln('First negative')
  else
    writeln('All zero');
  readln;
end.
2 задача:
Код:
var
  a, i, n: integer;

begin
  write('Input n: ');
  readln(n);
  i := 1;
  repeat
    read(a);
    inc(i);
  until (a mod 2 = 0) or (i > n);
  if a mod 2 = 0 then
    writeln('First even element on ', i - 1, ' position')
  else
    writeln('No even');
  readln;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 25.06.2012 в 22:03.
BDA на форуме Ответить с цитированием
Старый 25.06.2012, 21:45   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Да, извиняюсь, мой косяк, не досмотрел, не додумал, спасибо!!!
Poma][a вне форума Ответить с цитированием
Старый 25.06.2012, 22:48   #8
dmitriy20104
Пользователь
 
Регистрация: 21.06.2012
Сообщений: 36
По умолчанию

Спасибо, парни! Без вас бы не справился.
dmitriy20104 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на циклы Terson Помощь студентам 0 17.12.2011 15:10
задача на циклы! Voldemort93 Паскаль, Turbo Pascal, PascalABC.NET 9 11.09.2010 16:04
Задача на циклы Элис Помощь студентам 4 30.04.2009 19:44
Задача на циклы AlexLAN Паскаль, Turbo Pascal, PascalABC.NET 4 16.11.2008 10:57