Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

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

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

№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
Репутация: 6
По умолчанию

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

icq: 438888048
По умолчанию

Во-первых, немного исправленный вариант решения 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,886
Репутация: 1941
По умолчанию

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

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

Опции темы

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

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

Быстрый переход

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


07:37.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru