Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> "[QBasic] как поменять элементы в массиве" 
V
    Опции темы
Artiom18
Дата 9.3.2008, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 9.3.2008

Репутация: нет
Всего: нет



В одномерном массиве из M эл-тов (M-четное) поменять местами 1-ый и последний, 2-й и предпоследний, и т. д.  эл-ты.

Вот что у меня получилось, но что-то оно не хочет работать.

Код

20 INPUT "кол-во эл-тов"; M
21 Z = M / 2: X = INT(Z) 
25 IF M > 0 GOTO 47
30 IF M <= 0 
45 GOTO 20
47 IF Z - X <> O THEN GOTO 20 'определяется четный ли массив (делится ли он на 2)
50 DIM A(M)
60 FOR I = 1 TO M
70 INPUT A(I)
80 NEXT I
...
Вот тут надо бы напечатать исходный массив, да чего-то у меня не получается.
...
90 FOR J = 1 TO (M / 2) ' 1-ая часть массива
92 DIM B(J)
100 NEXT J
110 FOR K = (M / 2) + 1 TO M ' 2-ая часть массива
112 DIM C(K)
120 NEXT K
130 SWAP B(J), C(K)  'меняем эл-ты местами <- вот тут пишет ошибка
140 PRINT B(J), C(K)
150 END


Кто-нибудь, подскажите.
PM MAIL   Вверх
THandle
Дата 9.3.2008, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 30
Всего: 372



Код

LOOP
INPUT M
UNTIL M > 0
DIM A(M)
FOR I = 1 TO M
INPUT A(I)
NEXT I
I = 1
J = M
LOOP
TMP = A(J)
A(J) = A(I)
A(I) = TMP
I = I + 1
J = J - 1
UNTIL I > J
FOR I = 1 TO M
PRINT A(I)
NEXT I
END


Не гарантирую что работает, так как QBasic'a у меня нет и последний раз на нем я программировал больше 2 с лишним лет назад.

На всякий случай привожу кад работающей программы на Делфи.

Код

program Project1;

{$APPTYPE CONSOLE}

var
  a : array of integer;
  i, j, m, tmp : integer;
begin
  repeat
    writeln('Vvedite M: ');
    readln(m);
  until m > 0;
  dec(m);
  setlength(a, m);
  for i := 0 to m do
    begin
      writeln('Vvedite chislo: ');
      readln(a[i]);
    end;
    i := 0;
    j := m;
  while i <= j  do
    begin
      tmp := a[j];
      a[j] := a[i];
      a[i] := tmp;
      inc(i);
      dec(j);
    end;
  for i := 0 to m do
    writeln(a[i]);
  readln;
end.


PM   Вверх
Artiom18
Дата 9.3.2008, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 9.3.2008

Репутация: нет
Всего: нет



Спасибо огромное! Правда оно пока работать отказывается, но думаю, что заставлю. smile 
PM MAIL   Вверх
THandle
Дата 9.3.2008, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 30
Всего: 372



Artiom18, да не за что))) примерный алгоритм такой как там описан. могут быть просто ошибки с синтаксисом(все таки долго на QBasic не писал). Больше помочь ничем не могу так как не знаю какие ошибки в привеленном мною коде. Вобщем удачи тебе. smile 
PM   Вверх
Artiom18
Дата 9.3.2008, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 9.3.2008

Репутация: нет
Всего: нет



ЗАРАБОТАЛА!! smile  smile 

Вот такое получилось:
Код

10 CLS
20 INPUT M
30 IF M <= 0 OR M / 2 <> INT(M / 2) THEN GOTO 20
40 DIM A(M)
50 FOR I = 1 TO M
60 INPUT A(I)
70 NEXT I
80 I = 1
90 J = M
100 WHILE I < J
110 SWAP A(J), A(I)
140 I = I + 1
150 J = J - 1
160 WEND
170 FOR I = 1 TO M
180 PRINT A(I)
190 NEXT I
200 END


Еще раз огромное спасибо!!
PM MAIL   Вверх
THandle
Дата 9.3.2008, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 30
Всего: 372



Artiom18, алгоритм впринципе тот который я и предлагал. smile 

Пометь тему как решенную. Для порядку. smile 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0533 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.