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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2009, 22:56   #1
бедный_студент
Форумчанин
 
Регистрация: 09.02.2009
Сообщений: 143
По умолчанию Как определить разность знаков у переменных

В заданном одномерном массиве поменять соседние элементы, если они имеют разные знаки

прога простая начал писать думал делать нефиг, а потом дошло что не все подряд переменные свопить надо а только те что стоят рядом и имеют разные знаки. как мне в блоке иф определить разность знакой у m(i) и m(i+1) ?

CLS
INPUT "", n
DIM m(n)
RANDOMIZE TIMER
FOR i = 1 TO n
m(i) = 50 - (INT(RND(1) * 100))
PRINT m(i)
NEXT i
PRINT
PRINT
FOR i = 1 TO n - 1
IF m(i + 1) < 0 THEN SWAP m(i + 1), m(i) // не верно
NEXT i
FOR i = 1 TO n
PRINT m(i)
NEXT i
бедный_студент вне форума Ответить с цитированием
Старый 21.03.2009, 23:02   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

что то вроде этого :

если (первое меньше нуля И второе больше нуля) ИЛИ (первое больше нуля И второе меньше нуля )
то Меняем
counter вне форума Ответить с цитированием
Старый 21.03.2009, 23:20   #3
бедный_студент
Форумчанин
 
Регистрация: 09.02.2009
Сообщений: 143
По умолчанию

if m(i)>0 and m(i+1)<0 then swap m(i),m(i+1)
if m(i)<0 and m(i+1)>0 then swap m(i),m(i+1)
тока он вроде такие сложные операторы не поддерживает ...
бедный_студент вне форума Ответить с цитированием
Старый 21.03.2009, 23:29   #4
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

в C/С++ так

Код:
if( (m[i]>0 && m[i+1]<0) || (m[i]<0 && m[i+1]>0) )
counter вне форума Ответить с цитированием
Старый 21.03.2009, 23:31   #5
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Цитата:
Сообщение от бедный_студент Посмотреть сообщение
if m(i)>0 and m(i+1)<0 then swap m(i),m(i+1)
if m(i)<0 and m(i+1)>0 then swap m(i),m(i+1)
тока он вроде такие сложные операторы не поддерживает ...
Код:
if ((m(i)>0) and (m(i+1)<0)) or ((m(i)<0) and (m(i+1))>0) then swap m(i),m(i+1)
Так будет работать!
Levsha100 вне форума Ответить с цитированием
Старый 21.03.2009, 23:34   #6
бедный_студент
Форумчанин
 
Регистрация: 09.02.2009
Сообщений: 143
По умолчанию

ах вона что, тут скобки нужны! урааа))) благодарю
бедный_студент вне форума Ответить с цитированием
Старый 21.03.2009, 23:57   #7
бедный_студент
Форумчанин
 
Регистрация: 09.02.2009
Сообщений: 143
По умолчанию

тогда еще вот задачка:
Дано натуральное число. Определить, является ли сумма его максимальной и минимальной цифр кратной числу а

CLS
PRINT TAB(10);
PRINT "Naiti summu minimal'nogo i maksimal'nogo elementa "; ""
PRINT TAB(10);
PRINT "Natural'nogo chisla i opredelit' yavlyaetsya li ono kratnym chislu a";
PRINT
FOR i = 1 TO 80
PRINT CHR$(196);
NEXT i
PRINT : PRINT : PRINT TAB(10);
PRINT "Vvedite natural'noe chislo...";
INPUT "", n
PRINT TAB(10);
PRINT "Vvedite chislo a...";
INPUT "", a
n$ = n
dp = LEN(n$)
PRINT dp
DIM a(dp): n = 10 ^ (dp - 1)

FOR i = 1 TO dp
a(i) = ((c / n) MOD 10): n = n / 10
If i=1 then a(i)-c/n
IF i = dp THEN a(i) = c MOD 10
NEXT i




я на правильном пути ?
какая дробь как делит я забыл / - нацело, а \ - как есть ?

Последний раз редактировалось бедный_студент; 22.03.2009 в 00:02.
бедный_студент вне форума Ответить с цитированием
Старый 22.03.2009, 00:21   #8
бедный_студент
Форумчанин
 
Регистрация: 09.02.2009
Сообщений: 143
По умолчанию

опаньки, оказывается нельзя делать так n$=n (строковой переменной нельзя приравнять значение чифровой....как мне это сделать мне нужно узнать длину переменнной n а "len (n)" так не делает....?)
бедный_студент вне форума Ответить с цитированием
Старый 22.03.2009, 01:20   #9
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

что за язык? указывайте, пожалуйста, в скобках в имени темы
capta1n вне форума Ответить с цитированием
Старый 22.03.2009, 02:54   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

бедный_студент
Цитата:
Дано натуральное число. Определить, является ли сумма его максимальной и минимальной цифр кратной числу а
Вот как:
Код:
CLS
DIM n AS LONG
DIM a AS INTEGER
DIM min, max, t AS INTEGER

INPUT "Vvedite n: "; n
INPUT "Vvedite a: "; a
min = 10
max = -1
DO WHILE n > 0
 t = n MOD 10
 IF t < min THEN
  min = t
 END IF
 IF t > max THEN
  max = t
 END IF
 n = n \ 10
LOOP

IF (min + max) MOD a = 0 THEN
 PRINT USING "# + # delitsya na #"; min; max; a
ELSE
 PRINT "Ne delitsya"
END IF

END
Или, если читать число как строку, то так:
Код:
CLS
DIM n AS STRING
DIM a, i AS INTEGER
DIM min, max, t AS INTEGER

INPUT "Vvedite n: "; n
INPUT "Vvedite a: "; a
min = 10
max = -1

i = 1
DO WHILE i <= LEN(n)
 t = VAL(MID$(n, i, 1))
 IF t > max THEN
  max = t
 END IF
 IF t < min THEN
  min = t
 END IF

i = i + 1
LOOP

IF (min + max) MOD a = 0 THEN
 PRINT USING "# + # delitsya na #"; min; max; a
ELSE
 PRINT "Ne delitsya"
END IF

END
И переменные хорошо бы объявлять. Не стоит пользоваться этим допущением бейсика - плохому учит.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 22.03.2009 в 02:57.
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как отрегулировать кол-во знаков после запятой, при выведении числа(delphi) photozaz Общие вопросы Delphi 11 10.02.2011 21:20
Разность двух таблиц exile БД в Delphi 4 16.03.2009 09:27
Разность между max и min значениями Иван 883 Паскаль, Turbo Pascal, PascalABC.NET 2 16.02.2009 23:24
Определить число Y знаков в факториале от X KnDmPetr Паскаль, Turbo Pascal, PascalABC.NET 8 24.03.2008 17:10
Найти разность суммы элементов массива В(20) с чётными номерами... никита989 Помощь студентам 6 16.01.2008 13:51