QBasiс, поиск max/min, сортировка

Ответить
sprite_by
Сообщения: 5
Зарегистрирован: 26 май 2009, 21:34

26 май 2009, 21:55

Никак не могу решить задачи :( Может кто-нибудь поможет?

Задача1.
Определить наибольший и наименьший элементы массива X(n). Вывести исходный массив, эти элементы и их прядковые номера. Упорядочить массив X(n) по убыванию. Вывести полученный массив. Исходный массив элементов получить с помощью датчика случайных чисел. Значения буквенных переменных задавать с клавиатуры.


Задача2.
[*Удалено. См. правила раздела Решите мне задачу*]
Iwan_91
Сообщения: 9
Зарегистрирован: 21 май 2009, 21:38
Контактная информация:

28 май 2009, 15:34

Задача1.
Определить наибольший и наименьший элементы массива X(n). Вывести исходный массив, эти элементы и их прядковые номера. Упорядочить массив X(n) по убыванию. Вывести полученный массив. Исходный массив элементов получить с помощью датчика случайных чисел. Значения буквенных переменных задавать с клавиатуры.

Код: Выделить всё

RANDOMIZE TIMER
CLS
N = 5
DIM A(N)
FOR I = 1 TO N
A(I) = INT(RND * 100)
NEXT I
min = A(1)
max = A(1)
FOR I = 1 TO N
IF min < A(I) THEN
min = A(I)
mi = I
END IF
IF max > A(I) THEN
max = A(I)
ma = I
END IF
NEXT I
PRINT "Massiv";
FOR I = 1 TO N
PRINT A(I);
NEXT I
PRINT
PRINT "Minimalnii"; min; "Nomer"; mi
PRINT "Maxsimalnii"; max; "Nomer"; ma

DIM B(1 TO N)
FOR I = 1 TO N
B(I) = A(I)
NEXT I

FOR j = 1 TO N - 1
FOR I = j + 1 TO N
IF B(j) < B(I) THEN
SWAP B(j), B(I)
END IF
NEXT I
NEXT j

PRINT "Sortirovka"

FOR I = 1 TO N
PRINT B(I)
NEXT I

FOR I = 1 TO N
DO WHILE B(I) = A(I)
B(I) = INT(RND * 100)
LOOP
NEXT I
sprite_by
Сообщения: 5
Зарегистрирован: 26 май 2009, 21:34

29 май 2009, 23:05

чё то не пашет :( . Я вот сам попытлся сделать.но чё то тоже не так по-мойму...

Код: Выделить всё

  CLS 
  input "n=",n
  PRINT "Massiv: ";
  DIM M(N) 
  FOR I = 1 TO N 
  M(I) = INT(RND * 100) 
  PRINT M(I) ;
  NEXT I 
  MAX=M(1)
  FOR I = 2 TO N 
  IF MAX < M(I) THEN MAX=M(I)
  NEXT I 
  PRINT
  PRINT "_________" 
  PRINT "Maximum = "; MAX


  FOR I = 1 TO N 
  M(I) = INT(RND * 100) 
  PRINT M(I) ;
  NEXT I 
  MIN=M(1)
  FOR I = 2 TO N 
  IF MIN > M(I) THEN MIN=M(I)
  NEXT I 
  PRINT
  PRINT "_________" 
  PRINT "Minimum = "; MIN


 

FOR I = 1 TO N
 M(I) = INT(RND * 100)
 PRINT M(I);
NEXT I
 
FOR I = 1 TO N - 1
  FOR J = I + 1 TO N
      IF (M(I) > M(J)) THEN SWAP M(I), M(J)
  NEXT J
NEXT I
 
 PRINT
 PRINT "Sort massiv:"
FOR I = 1 TO N
 PRINT M(I);
NEXT I 

выводит разный исходный массив в max и min...
Iwan_91
Сообщения: 9
Зарегистрирован: 21 май 2009, 21:38
Контактная информация:

29 май 2009, 23:29

Сейчас будем делать. Не пойму, что значит
Значения буквенных переменных задавать с клавиатуры.

--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------

Код: Выделить всё

RANDOMIZE TIMER
CLS
INPUT "n=", N
PRINT "Massiv: ";
DIM M(N)
FOR i = 1 TO N
M(i) = INT(RND * 100)
PRINT M(i);
NEXT i
MAX = M(1)
MIN = M(1)
FOR i = 2 TO N
IF MAX < M(i) THEN
MAX = M(i)
ma = i
END IF
IF MIN > M(i) THEN
MIN = M(i)
mi = i
END IF
NEXT i
PRINT
PRINT "_________"
PRINT "Maximum = "; MAX; "Number ="; ma
PRINT "Minimum = "; MIN; "Number ="; mi;
FOR i = 1 TO N - 1
FOR J = i + 1 TO N
IF (M(i) > M(J)) THEN SWAP M(i), M(J)
NEXT J
NEXT i
PRINT
PRINT "Sort massiv:"
FOR i = 1 TO N
PRINT M(i);
NEXT i
Все было верно, только зачем каждый раз массив новыми случайными числами заполнять.
Как понимать
Исходный массив элементов получить с помощью датчика случайных чисел
P.S. Добавил связку с выводом номера и нахождение минимального максимального свернул в один цикл.
P.P.S Если нужно сортировка по убыванию, то поменяй знак

Код: Выделить всё

IF (M(i) > M(J)) THEN SWAP M(i), M(J)
P.P.S.S. Исправил свою версию. (Писал просто прямо здесь:rolleyes :)
sprite_by
Сообщения: 5
Зарегистрирован: 26 май 2009, 21:34

30 май 2009, 06:39

О-о-о!!! спасибо !!!!!всё работает :D
Randomize timer это и есть датчик случайных чисел.
Iwan_91
Сообщения: 9
Зарегистрирован: 21 май 2009, 21:38
Контактная информация:

30 май 2009, 18:55

Какая второя задача?
sprite_by
Сообщения: 5
Зарегистрирован: 26 май 2009, 21:34

31 май 2009, 17:59

да ладно я уже сдал её :D . если хочешь могу написать, она тоже жёсткая!!!
Iwan_91
Сообщения: 9
Зарегистрирован: 21 май 2009, 21:38
Контактная информация:

31 май 2009, 23:17

Напиши.Интересно.
sprite_by
Сообщения: 5
Зарегистрирован: 26 май 2009, 21:34

02 июн 2009, 22:01

Задача2.
Дана матрица целых чисел X(n,m). Определить номер строки матрицы, сумма элементов которой минимальна. Вывести исходную матрицу,минимальную сумму и номер соответствующей строки. Значения буквенных переменных задавать с клавиатуры.

Код: Выделить всё

CLS
INPUT "n="; n
INPUT "m="; m
DIM a(n, m), summ(n)
 FOR i = 1 TO n
 FOR j = 1 TO m
 a(i, j) = INT(RND(1) * 20) + 1
 PRINT a(i, j);
 NEXT j
 PRINT
NEXT i
FOR i = 1 TO n
s = 0
FOR j = 1 TO m
s = s + a(i, j)
NEXT j
summ(i) = s
NEXT i
PRINT "___________"
PRINT "   isx matrica"; "    summu po strokam"
FOR i = 1 TO n
FOR j = 1 TO m
PRINT a(i, j);
NEXT j
PRINT "     "; summ(i)
NEXT i
PRINT
FOR i = 2 TO n
IF summ(i) < summ(i - 1) THEN
min = summ(i)
k = i
END IF
NEXT i
PRINT "__________"
PRINT "min summa="; min
PRINT "nomer stroki="; k
END

Ответить