масивы в QBasic

Verloren
Сообщения: 7
Зарегистрирован: 13 окт 2008, 22:26

29 ноя 2008, 16:30

№1.задан масив к1..к(n).определить последний дробный элемент масива.вычислить среднее арифметическое неотрицательных элементов с четными индексами.вывести на экран индексы элементов с нулевыми значениями.
№2.задан масив н1...н(n).сформировать из его дробных элементов с четными индексами новый мсив f. в масиве f подсчитать количество отрицательных элементов.
зы:
к 1му нужно еще критические ситуации учесть,когда нет дробных и когда среднее не вычисляется,помогите плиз оч надо=''''(((
помогите пожалуйста!!!
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

29 ноя 2008, 16:51

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

'Ввод массива
print "Введите N";
input N
dim K(1 to N)
for i=1 to n
  print "K(";i;"):";
  input K(i)
next
S=0:NNeg=0:IdxFrac=0  
print "Индексы нулевых элементов   ";
for i=1 to N
  if K(i)=0 then print i;", ";   'вывод индекса нулевого элемента
  if K(i)<>int(K(i)) then IdxFrac=i  'запоминаем индекс дробного (последним запомнится последний :) )
  if K(i)>=0 and i mod 2=0 then  'сложим и сосчитаем четные неотр. элементы
    S=S+K(i)
    NNeg=NNeg+1
  end if  
next
print
if NNeg=0 then
  print "Нельзя подсчитать среднее"
else
  print "Среднее = "; S/NNeg
end if
if IdxFrac=0 then
  print "Нет дробных элементов"
else
  print "Индекс последнего дробного элемента - ";IdxFrac
end if
Verloren
Сообщения: 7
Зарегистрирован: 13 окт 2008, 22:26

30 ноя 2008, 14:46

Naeel Maqsudov,
пасипа огроменое))а ко второму примеру можеш?я конечно понимаю что это наглость но информатика для меня темный лес... :confused:
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

30 ноя 2008, 16:24

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

'Ввод массива
print "Введите N";
input N
dim H(1 to N)
for i=1 to n
  print "H(";i;"):";
  input H(i)
next
'создание массива и подсчет отрицательных элементов
dim F(1 to N)
K=0:Neg=0
for i=2 to n step 2 'будем идти только по четным элементам
  if H(i)<>int(H(i)) then
    K=K+1
    F(K)=H(i)
    if F(K)<0 then Neg=Neg+1
  end if
next
'вывод результатов
print "Массив F содержит ";K;" элем:  ";
for i=1 to K
  print K(i); ", ";
next
print
print "Отрицательных элементов в нем - ";Neg

Elliot
Сообщения: 5
Зарегистрирован: 17 фев 2009, 17:34

18 фев 2009, 15:03

Народ, мне помогите пожалуйста, не могу лабораторную решить...

Вот задания в оригинале

a). Заповнити вектор за допомогою операторiв READ i DATA:
S(8)= (7; –12; 8; 6; 21; 2; 15; –9)
б). Вивести сформований вектор на екран.
в). Всі елементи сформованого вектора кратні 3 замінити нулями.
г). Впорядкувати елементи масиву за зростанням.

На русском но с ошибками

а). Заполнить вектор при помощи операторов READ и DATA
S(8)= (7; –12; 8; 6; 21; 2; 15; –9)\
б.) Вывести сформированный вектор на экран.
в.) Все элементы сформированного вектора кратные 3 заменить нолем.
г.) Сортировать элементы массива по возрастанию.

Первую часть пробовал сделать так

cls
dim s(8)
READ S(i)
data 7,-12,8,6,21,2,15,-9
for i = 1 to 8
print s(i), "";
next i

но не получилось
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

18 фев 2009, 15:10

для начала работа над ошибками

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

cls
data 7,-12,8,6,21,2,15,-9
dim s(8)
'a). Заповнити вектор за допомогою операторiв READ i DATA:
for i = 1 to 8
read S(i)
next
'б). Вивести сформований вектор на екран.
for i = 1 to 8
print s(i), ", ";
next i
Elliot
Сообщения: 5
Зарегистрирован: 17 фев 2009, 17:34

18 фев 2009, 15:21

Спасибо большое
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

18 фев 2009, 15:29

в.) Все элементы сформированного вектора кратные 3 заменить нолем.

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

for i=1 to 8
if (s(i) mod 3)=0 then s(i)=0
next

не помню уже, есть ли mod в qbasic-е.... если нет, то вместо
(s(i) mod 3)=0
надо сделать
s(i)/3=int(s(i)/3)

Сортировка "пузырьком"

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

f=1
while f>0 do
  f=0
  for i=1 to 7
    if s(i) > s(i+1) then 
      t:=s(i)
      s(i)=s(i+1)
      s(i+1)=t
      f=1
    end if
  next
wend
Ну и вывод элементов на экран надо наверное вставить после каждой подзадачи.
Elliot
Сообщения: 5
Зарегистрирован: 17 фев 2009, 17:34

18 фев 2009, 15:37

с с последним не получается, после while f>0 do пишет expected: end-of-statement
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

18 фев 2009, 15:38

Наверное DO тут лишнее
Ответить