Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
demon31
0 / 0 / 2
Регистрация: 01.10.2013
Сообщений: 341
#1

Как сделать так, чтобы считались и отрицательные числа в приведенном коде - Pascal ABC

24.06.2014, 17:57. Просмотров 346. Ответов 5
Метки нет (Все метки)

Подскажите как сделать так чтобы считались и отрицательные числа, просто когда вводишь отрицательное выдает ошибку ...

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
const n=5;
var
  q, w : set of shortint;
  i, x : byte;
  f : text;
begin
  assign(f, 'file.txt'); rewrite(f);
  w:=[]; q:=[];
  Write('Введите множество: ');
  for i:=1 to n do
    begin
      read(x);
      q:=q+[x];
    end;
  write('Исходное множество: ');
  for i:=0 to 255 do
    if i in q then
      write(i,' ');
          writeln;
  for i:=0 to 255 do
    if (i in q) and (i mod 2=0) then
      w:=w+[i]
    else
      if (i in q) and (i mod 2<>0) then
        write(f,i,' ');
  writeln;
  write('Множество четных: ');
  for i:=0 to 255 do
    if i in w then
      write(i,' ');
  close(f);
end.

http://www.cyberforum.ru/pascalabc/thread1116037.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2014, 17:57
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как сделать так, чтобы считались и отрицательные числа в приведенном коде (Pascal ABC):

Изменить последовательность указателей так, чтобы отрицательные числа находились в начале списка
Массив целых чисел представлен в виде динамического списка. Изменить...

В данной последовательности целых чисел переставьте члены так, чтобы отрицательные числа шли в порядке убывания в начале массива
В данной последовательности целых чисел переставьте члены так, чтобы...

Переставить элементы в массиве так, чтобы сначала следовали все отрицательные числа, а затем все остальные
Дан одномерный массив целых чисел. Переставить элементы в массиве таким...

как переставить числа в очереди таким образом, чтобы в начале последовательности оказались все положительные числа, а в конце отрицательные?
как переставить числа в очереди таким образом, чтобы в начале...

Как сделать так, что б в коде использовалось только две переменных?
Естьготовый код: var a,b,s,r,d,c:real; begin write('a= '); readln(a); if...

5
APALoff
1638 / 1067 / 1080
Регистрация: 03.07.2013
Сообщений: 4,507
24.06.2014, 18:22 #2
Цитата Сообщение от demon31 Посмотреть сообщение
read(x);
x - имеет тип Byte = 0..255

поменяйте, например, на integer

Добавлено через 57 секунд
или на тот же shortint
0
demon31
0 / 0 / 2
Регистрация: 01.10.2013
Сообщений: 341
24.06.2014, 18:23  [ТС] #3
Не помогло, всё ровно на отрицательном числе выкидывает
0
Puporev
Модератор
54132 / 41765 / 28876
Регистрация: 18.05.2008
Сообщений: 98,299
24.06.2014, 18:24 #4
Лучший ответ Сообщение было отмечено demon31 как решение

Решение

Нужно объявлять множество так
Pascal
1
q, w : set of byte;
заносить числа в интервале [-127..127] так
Pascal
1
q:=q+[a+127];
выводить так
Pascal
1
2
for i:=0 to 255 do
if i in q then write(i-127,' ');
1
demon31
0 / 0 / 2
Регистрация: 01.10.2013
Сообщений: 341
24.06.2014, 18:33  [ТС] #5
Чёт не понял о_о

Добавлено через 3 минуты
Сделвл как казал Puporev, начало считать с отрицательными, но вывод неправильно срабатывает

Добавлено через 1 минуту
А, нет, всё верно, не везде так сделал, спасибо, помогли :*
0
Puporev
Модератор
54132 / 41765 / 28876
Регистрация: 18.05.2008
Сообщений: 98,299
24.06.2014, 18:36 #6
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
const n=5;
var
  q, w : set of byte;
  i,x : shortint;
  f : text;
begin
  assign(f, 'file.txt');
  rewrite(f);
  w:=[]; q:=[];
  Write('Ââåäèòå Г¬Г*îæåñòâî: ');
  for i:=1 to n do
    begin
      readln(x);
      q:=q+[x+127];
    end;
  write('ÈñõîäГ*îå Г¬Г*îæåñòâî: ');
  for i:=-127 to 127 do
  if i+127 in q then  write(i,' ');
  writeln;
  for i:=-127 to 127 do
  if i+127 in q then
   begin
    if i mod 2=0 then  w:=w+[i+127]
    else write(f,' ',i);
   end;
  writeln;
  write('ГЊГ*îæåñòâî Г·ГҐГІГ*ûõ: ');
  for i:=-127 to 127 do
  if i+127 in w then  write(i,' ');
  close(f);
end.
0
24.06.2014, 18:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2014, 18:36
Привет! Вот еще темы с решениями:

Как в приведенном коде можно использовать функцию?
Подскажите, где тут можно использовать функцию? Надо что бы в коде обязательно...

Как сделать так чтобы вопросы не повторялись?
Есть массив из 5-ти вопросов. Выбираются случайно 3. Как сделать так чтобы...

Как обойтись без дополнительного массива в приведенном коде
Сделала лабу, всё зачли, но встал вопрос, о том, что эту программу можно...

Как сделать так, чтобы размерность массива было от 1 до N
как сделать так, чтобы размерность массива было от 0 до N(N нужно будет задать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru