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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2014, 12:09   #1
shalgan
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 68
По умолчанию в непустой последовательности целых чисел определить количество смен знака числа (Delphi)

добрый день,требуется совет.Безымянный.jpg

вот задание,не могу понять ,как на языке паскаль это все изобразить. Мое предположение,сначала числа сравниваем с 0,если больше 0 то в колонку положительный,если меньше в отрицательную,только я не знаю как сделать,чтобы программа посчитала сколько раз меняется знак
shalgan вне форума Ответить с цитированием
Старый 25.02.2014, 12:21   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Алгоритм:
Счетчик изменений знака = 0
Задаем первое число = 0
Считываем второе число (по сути, первое из последовательности)
Заходим в цикл while, который проверяет второе число на неравенство нулю
Если это так, то внутри цикла смотрим на знак произведения первого и второго чисел
Если оно меньше нуля, то увеличиваем счетчик
Теперь присваиваем значение второго числа первому числу
Считываем второе число
Далее цикл начинается сначала
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 25.02.2014, 13:35   #3
shalgan
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 68
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Алгоритм:
Счетчик изменений знака = 0
Задаем первое число = 0
Считываем второе число (по сути, первое из последовательности)
Заходим в цикл while, который проверяет второе число на неравенство нулю
Если это так, то внутри цикла смотрим на знак произведения первого и второго чисел
Если оно меньше нуля, то увеличиваем счетчик
Теперь присваиваем значение второго числа первому числу
Считываем второе число
Далее цикл начинается сначала

Спасибо большое,уже начал что-то изобретать, только вот "Если это так, то внутри цикла смотрим на знак произведения первого и второго чисел"

записать это так? while a[1]<>0 do begin K:=a[1]*a[2]; if k<0 do begin s:=s+1??
shalgan вне форума Ответить с цитированием
Старый 25.02.2014, 13:42   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Да, так, можно записать короче:
Код:
while b <> 0 do
begin
  if a * b < 0 then
    inc(s);
  ...
end;
Где a и b - первое и второе числа.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 25.02.2014, 13:43   #5
shalgan
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 68
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Алгоритм:
Счетчик изменений знака = 0
Задаем первое число = 0
Считываем второе число (по сути, первое из последовательности)
Заходим в цикл while, который проверяет второе число на неравенство нулю
Если это так, то внутри цикла смотрим на знак произведения первого и второго чисел
Если оно меньше нуля, то увеличиваем счетчик
Теперь присваиваем значение второго числа первому числу
Считываем второе число
Далее цикл начинается сначала
и забыл добавить.a[1],a[2], не знаю правильно или нет взял т.к первый опыт в визуальном программировании и на да сделать через мемо,а не едит
shalgan вне форума Ответить с цитированием
Старый 25.02.2014, 13:48   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Ну Вы пока решите для консольного, а потом уже прикрутим штуку, чтобы из мемо брались числа.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 25.02.2014, 15:39   #7
shalgan
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 68
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Ну Вы пока решите для консольного, а потом уже прикрутим штуку, чтобы из мемо брались числа.


Код:
program Project1;
type mas=array[1..100] of Integer; var b,s,z,q,w:Integer;i:Integer; a:mas;
begin
Writeln('vvedite kol-vo chisel');
readln(q);
Writeln('vvedite chisla');
for i:=1 to q do begin
readln(a[i]);
end;
z:=0;
s:=0;
while b <> 0 do
begin
  if w*b < 0 then
    inc(s);
 z:=b;
 readln(b);
end;
Readln;
end.
программа просто закрывается после ввода чисел. И я не понимаю как сделать, чтобы программа брала числа с массива, через a[1,2,3] как- долго, и чтобы после сравнивания она переходила ко следующему
shalgan вне форума Ответить с цитированием
Старый 25.02.2014, 16:23   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
program Project1;
var
  a, b, s: Integer;
begin
  Writeln('vvedite chisla');
  a := 0;
  s := 0;
  read(b);
  while b <> 0 do
  begin
    if a * b < 0 then
      inc(s);
   a := b;
   read(b);
  end;
  writeln(s);
  Readln;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 25.02.2014, 17:07   #9
shalgan
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 68
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Код:
program Project1;
var
  a, b, s: Integer;
begin
  Writeln('vvedite chisla');
  a := 0;
  s := 0;
  read(b);
  while b <> 0 do
  begin
    if a * b < 0 then
      inc(s);
   a := b;
   read(b);
  end;
  writeln(s);
  Readln;
end.

не работает :D
shalgan вне форума Ответить с цитированием
Старый 25.02.2014, 17:14   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Сообщение от shalgan Посмотреть сообщение
не работает :D
Сочувствую
http://ideone.com/8KSlmy
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
последовательности a(1)...a(n) определить число соседств двух чисел разного знака (написать код на visual basic) эленька Помощь студентам 0 25.04.2013 02:25
Дана последовательность ненулевых целых чисел,оканчивающая нулем.Определить,сколько раз в этой последовательности меняеться знак.( Salomon9393 Помощь студентам 0 07.12.2012 18:59
Дана последовательность N целых чисел. Определить число членов последовательности, для которых выполняется условие dmitriy20104 Паскаль, Turbo Pascal, PascalABC.NET 3 29.06.2012 10:25
В последовательности определить сумму чисел,их количество,максимальное и минимальное число с их порядковыми номерами (QBasic) Лена1308 Помощь студентам 3 14.12.2011 22:20
В последовательности определить сумму чисел,их количество,максимальное и минимальное число с их порядковыми номерами (QBasic) Лена1308 Помощь студентам 0 01.12.2011 21:19