|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Двумерный массив. Строки
Дан двумерный массив из четного числа строк, строки верхней половины массива поменять местами со строками нижней половины! Помогите пожалуйста или намекните
|
#2
|
||||
|
||||
Ну и какие мысли есть у вас на эту тему, хоть что нибудь проблеснуло?
Например, объясните пжлст, каково ваше понимание что есть Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
например массив такой:
123 456 789 356 123 и 456 это верхние строки 789 и 356 нижние поменять их местами |
#4
|
||||
|
||||
Стесняюсь спросить, а зачем тогда двумерный массив нужен, в другую размерность нужно результат положить что ли?
З.Ы. And then there was another influence... Ну да ладно, не хотите обучаться - ваше дело, потом аукнется, да будет поздно. Вот вам немного говнокода, через одномерный массив, на форму нужно кинуть кнопку и мемо и скопипастить вот это Код:
procedure TForm1.Button1Click(Sender: TObject); var m: array of string; i: integer; s1, s2: string; begin // Для примера SetLength(m,4); m[0]:='123'; m[1]:='456'; m[2]:='789'; m[3]:='356'; for i:= Low(m) to High(m) do Memo1.Lines.Add(m[i]); for i:= Low(m) to High(m) mod 2 do begin s1:= m[i]; s2:= m[(High(m) mod 2) + i+1]; m[i]:= s2; m[(High(m) mod 2) + i+1]:= s1 end; Memo1.Lines.Add(''); for i:= Low(m) to High(m) do Memo1.Lines.Add(m[i]); end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 25.06.2013 в 10:48. |
#5
|
|||
|
|||
Зачем мне одномерный если в задании двумерный. Т.е. вводим число строк и число столбцов, затем вводим элементы, которые имеют свою строку и столбец. Программу я условно говоря решил, код программы вроде верный.
Но запускается она и меняет половины, если вместо n и k(размерность массива) вводить конкретное число (н-р 4 и 3). По-другому не работает. Не соображу в чем ошибка. Вот код: Код:
var Form9: TForm9; Ar: array of array of integer; n,k:integer; implementation {$R *.dfm} procedure TForm9.Button3Click(Sender: TObject); begin n:=strtoInt(InputBox('Размер массива', 'Введите число строк в массиве','0')); k:=strtoInt(InputBox('Размер массива', 'Введите число столбцов в массиве','0')); SetLength(Ar,n,k); //установка размера массива end; procedure TForm9.Button1Click(Sender: TObject); var i,j:integer; begin for i:=1 to n do for j:=1 to k do Ar[i,j]:=strtoint(InputBox('Элементы массива', 'Введите'+inttostr(i)+inttostr(j)+' элемент массива','0')); //Ввод элементов массива end; procedure TForm9.Button2Click(Sender: TObject); var x,i,j:integer; s,s1:string; begin for i:=1 to n do // Вывод элементов массива в виде матрицы begin s:=''; for j:=1 to k do begin s:=s+inttostr(Ar[i,j])+' '; end; ListBox1.Items.Add(s); end; for i:=1 to n div 2 do begin S1:=''; for j:=1 to k do begin x:=Ar[i,j]; Ar[i,j]:=Ar[(n div 2)+i,j]; Ar[(n div 2)+i,j]:=x; end; end; for i:=1 to n do // Вывод элементов массива в виде матрицы begin s1:=''; for j:=1 to k do begin s1:=s1+inttostr(Ar[i,j])+' '; end; ListBox2.Items.Add(s1); end; end; end. Последний раз редактировалось Admin, 25.06.2013 в 22:26. |
#6
|
||||
|
||||
Пока ни кто не видел заключите пжлст ваш код в тег [СODE]код[/СODE], а по теме, у вас переменные n и k объявлены как глобальные, а вы их в циклах используете, компилятор от такого впадает в ступор, вдруг они обнулятся кемнить прям во время исполнения, перенесите их в локальную секцию var
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#7
|
|||
|
|||
Раньше он хоть как-то запускал, пусть с ошибкой, а теперь при вводе элементов даже на кнопку не нажимает. Мы всегда эти переменные объявляем как глобальные, и всё работает. В чем ошибка хз?!
|
#8
|
||||
|
||||
Переименуйте глобальные n и k в n1 k1 и делайте так
Код:
procedure TForm9.Button3Click(Sender: TObject); //----- var n, k: integer; //----- begin n1:=strtoInt(InputBox('Размер массива', 'Введите число строк в массиве','0')); k1:=strtoInt(InputBox('Размер массива', 'Введите число столбцов в массиве','0')); //----- n:=n1; k:=k1; //----- SetLength(Ar,n, k); //установка размера массива end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 26.06.2013 в 06:34. |
#9
|
|||
|
|||
Здравствуйте. Подключаюсь к этому вопросу. Уточните пжл как это до и после begin? А то я тут навтыкала практически везде, результата 0. Код программы такой же как и выше.
|
#10
|
||||
|
||||
Код:
procedure TForm1.Button1Click(Sender: TObject); //----- До var n, k: integer; //----- begin //----- После n:= n1; k:= k1; //----- ... .. . end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Frosya (27.06.2013)
|
#11
|
|||
|
|||
Спасибо, ошибку нашла, но в другом
|
#12
|
|||
|
|||
Решите пожалуйста, соображений вообще нет, мы решали двумерки намного проще, найти там сумму и тп. На контроль дали вот эту и наподобие. Как делать, никто не знает, сами преподы не хотят нам помогать. Решите пжл, обратиться больше не к кому. Знаю конечно, что это просто и нужно учиться.
Поменять местами второй столбец и столбец, в котором находится последний элемент, больший 100 . Принять, что элементы ,большие 100, в массиве есть и что массив просматривается слева направо и сверху вниз. |
#13
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |