0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 98
1

Массив: Столбец, содержащий минимальный элемент, поменять местами с первым столбцом.

07.03.2016, 20:52. Показов 709. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
в матрице 5х3 нужно найти Столбец, содержащий минимальный элемент, поменять местами с первым столбцом.
сделал но не работает перестановка.. помогите плиз!!
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
procedure TForm3.Button1Click(Sender: TObject);
var mas : array [1..5,1..3] of real;
i , j , imin: integer ;
amin,x : real;
Begin
// заполнение матрицы
Randomize;
for i:=1 to 5 do
  for j:=1 to 3 do begin;
    mas[i,j]:=random(10)-2;
    end;
    // вывод матрицы
for i := 1 to 5 do
 begin
   for j := 1 to 3 do
   Memo1.Text:=Memo1.Text+FloatToStr(mas[i,j])+'  ';
   Memo1.Text:=Memo1.Text+#13#10;
 end;
 // Столбец, содержащий минимальный элемент, поменять местами с первым столбцом.
 Memo1.Lines.Add(' ');
        amin:=mas[1,1];
for i:=1 to 5 do
for j:=1 to 3 do
if mas[i,j]< amin then
   begin
     amin:=mas[i,j];
     imin:=j
   end;
for i:=1 to 5 do
   begin
     x:=mas[i,imin];
     mas[i,imin]:=mas[i,3];
     mas[i,3]:=x;
   end;
 
       // вывод матрицы
for i := 1 to 5 do
 begin
   for j := 1 to 3 do
   Memo1.Text:=Memo1.Text+FloatToStr(mas[i,j])+'  ';
   Memo1.Text:=Memo1.Text+#13#10;
 end;
 end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.03.2016, 20:52
Ответы с готовыми решениями:

Столбец, содержащий минимальный элемент, поменять местами с последним столбцом
var mas : array of real; i , j, k : integer ; imin,x : real; Begin With stringgrid1 do begin...

Поменять в матрице местами последний столбец и столбец, содержащий минимальный элемент
Добрый вечер возникла проблема при написании программы, вот условие В данной действительной...

Поменять местами столбец, содержащий минимальный элемент, с первым столбцом
Из 33 положительных, отрицательных и нулевых значений чисел сформируйте матрицу 11 х 3. Поменяйте...

Столбец матрицы, содержащий минимальный элемент, поменять местами с первым столбцом
Дан вещественный массив из 5 строк и 3 столбцов. Столбец, содержащий минимальный элемент, поменять...

12
2737 / 1712 / 778
Регистрация: 23.03.2015
Сообщений: 5,425
07.03.2016, 21:14 2
попробуйте вместо Memo использовать Stringgrid
0
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 98
07.03.2016, 21:17  [ТС] 3
минимальный элемент -1.. и столбцы не поменялись (

Массив: Столбец, содержащий минимальный элемент, поменять местами с первым столбцом.
0
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 98
07.03.2016, 21:19  [ТС] 4
вместо Memo использовать Stringgrid

только начал изучать.. пример можно?
0
2737 / 1712 / 778
Регистрация: 23.03.2015
Сообщений: 5,425
07.03.2016, 22:07 5
Цитата Сообщение от diegovoin Посмотреть сообщение
пример можно?
Строку матрицы с номером N сделать столбцом с номером N, а столбец с номером N - строкой

Добавлено через 40 минут
diegovoin,

вот исправленное с выводом в стринггриды...

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
procedure TForm1.Button1Click(Sender: TObject);
var mas : array [1..5,1..3] of integer;
i , j ,k,x, imin: integer ;
 
Begin
With stringgrid1 do
begin
FixedCols:=0;
FixedRows:=0;
Colcount:=5;
RowCount:=3;
end;
 
 
With stringgrid2 do
begin
FixedCols:=0;
FixedRows:=0;
Colcount:=5;
RowCount:=3;
end;
 
 
 
 
// заполнение матрицы
Randomize;
for i:=1 to 5 do
  for j:=1 to 3 do
  begin;
    mas[i,j]:=random(10)-2;
  end;
   //вывод матрицы  до
for i := 0 to 4 do
  begin
   for j := 0 to 2 do
    StringGrid1.Cells[i,j]:=IntTostr(Mas[i+1,j+1]);
  end;
 
 imin:=mas[1,1];
for i:=1 to 5 do
for j:=1 to 3 do
begin
if mas[i,j] <=imin  then
begin
 imin := mas[i,j] ;
end;
end;
 
Edit1.text:=Inttostr(imin);
For i:=1 to 5 do
for j:=1 to 3 do
   begin
   if mas[i,j]=imin then
     begin
     for k:=1 to 3 do
      begin
       x:=mas[1,k];
        mas[1,k]:=mas[i,k];
        mas[i,k]:=x;
        end;
      end;
   end;
    //вывод матрицы после
 for i := 0 to 4 do
  begin
   for j := 0 to 3 do
    StringGrid2.Cells[i,j]:=IntTostr(Mas[i+1,j+1]);
  end;
end;
end.
1
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 98
07.03.2016, 22:13  [ТС] 6
как я понял тут 2 компонента , и если использовать вещественные то floattostr и strtofloat как я понял )
ну я пока что попробую все это изучить) спасибо) проверю ваш вариант
0
2737 / 1712 / 778
Регистрация: 23.03.2015
Сообщений: 5,425
07.03.2016, 22:18 7
diegovoin,
Правильно поняли.
Просто у вас в коде была генерация целых чисел, ну и поэтому я и переделал на integer..

Добавлено через 44 секунды
Цитата Сообщение от diegovoin Посмотреть сообщение
2 компонента
2 Stringgrid'a...
1
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 98
07.03.2016, 22:27  [ТС] 8
а генерация вещественных чисел , можно добиться умножением на 0.1 .. компонент Edit для вывода минимального элемента, а как показать столбец в котором хранится этот элемент? встречаются одинаковые числа в разных столбцах .... что то запутался уже))
и вот вопрос возник хотел спросить у препода ,спрошу у вас, почему в Edit нельзя использовать точку в десятичных, только запятая .. вылезает ошибка... а если через запятую то все норм
0
2737 / 1712 / 778
Регистрация: 23.03.2015
Сообщений: 5,425
07.03.2016, 22:30 9
Если хотите real,
то добавьте в "Uses" "math"
Кликните здесь для просмотра всего текста

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
procedure TForm1.Button1Click(Sender: TObject);
var mas : array [1..5,1..3] of real;
i , j ,k : integer ;
 x,imin:real;
Begin
With stringgrid1 do
begin
FixedCols:=0;
FixedRows:=0;
Colcount:=5;
RowCount:=3;
end;
 
 
With stringgrid2 do
begin
FixedCols:=0;
FixedRows:=0;
Colcount:=5;
RowCount:=3;
end;
 
 
 
 
// заполнение матрицы
Randomize;
for i:=1 to 5 do
  for j:=1 to 3 do
  begin;
    mas[i,j]:=RoundTo(random(10)-2+1/random(100),-2);
  end;
   //вывод матрицы  до
for i := 0 to 4 do
  begin
   for j := 0 to 2 do
    StringGrid1.Cells[i,j]:=FloatTostr(Mas[i+1,j+1]);
  end;
 
 imin:=mas[1,1];
for i:=1 to 5 do
for j:=1 to 3 do
begin
if mas[i,j] <=imin  then
begin
 imin := mas[i,j] ;
end;
end;
 
Edit1.text:=Floattostr(imin);
For i:=1 to 5 do
for j:=1 to 3 do
   begin
   if mas[i,j]=imin then
     begin
     for k:=1 to 3 do
      begin
       x:=mas[1,k];
        mas[1,k]:=mas[i,k];
        mas[i,k]:=x;
        end;
      end;
   end;
    //вывод матрицы после
 for i := 0 to 4 do
  begin
   for j := 0 to 3 do
    StringGrid2.Cells[i,j]:=FloatTostr(Mas[i+1,j+1]);
  end;
end;
end.


PS в Edit1 выводится минимум.

Удачи...
1
88 / 84 / 43
Регистрация: 02.05.2015
Сообщений: 766
07.03.2016, 23:51 10
Цитата Сообщение от diegovoin Посмотреть сообщение
а если через запятую то все норм
у эдита есть событие onkeypres скопируй в него это:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);
begin
  case key of
    '1'..'9',#8:;
    '0': if Length(Edt1.Text) = 0 then Key :=#0;
    ',','.':
      begin
        if Pos(',',edt1.Text)<>0 then key:=#0
          else
            key:=#44;
      end;
    #1..#7,#9..#43,#45,#58..#255: key:=#0;
  end;
end;
Добавлено через 40 секунд
только в условиях вместо edt1 пиши имя своего едита
1
2737 / 1712 / 778
Регистрация: 23.03.2015
Сообщений: 5,425
08.03.2016, 00:47 11
Цитата Сообщение от diegovoin Посмотреть сообщение
встречаются одинаковые числа в разных столбцах .... что то запутался уже))
у вас в начальном варианте для 5*3=15 элементов генерируется диапазон чисел от -2 до 8 .Те (для варианта с целыми числами ) изначально совпадут 2 числа ( возможно минимумы).
Можно добавить условие генерации неповторяющихся чисел, но диапазон необходимо будет поменять....

Добавлено через 27 минут
Цитата Сообщение от diegovoin Посмотреть сообщение
нельзя использовать точку в десятичных, только запятая .. вылезает ошибка
У вас "DecimalSeparator "(cимвол используемый для отображения десятичной точки ) по умолчанию равен запятой.
поробуйте при вводе точки '.' заменить ее на запятую ','

Можно посмотреть вот здесь :Запрет ввода ненужных символов в edit Пост #3
0
88 / 84 / 43
Регистрация: 02.05.2015
Сообщений: 766
08.03.2016, 01:00 12
только в условиях вместо edt1 пиши имя своего едита
Цитата Сообщение от Narimanych Посмотреть сообщение
при вводе точки '.' заменить ее на запятую ','
Можно посмотреть вот здесь :Запрет ввода ненужных символов в edit Пост #3
я в предыдущем сообщение написал
0
500 / 356 / 231
Регистрация: 29.03.2015
Сообщений: 675
08.03.2016, 09:04 13
В коде Вашего первого сообщения нужно заменить mas[i,3] на mas[i,1] и ошибки не будет.
1
08.03.2016, 09:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.03.2016, 09:04
Помогаю со студенческими работами здесь

Сформировать матрицу 11*3 и поменять местами столбец, содержащий минимальный элемент, с первым столбцом
помогите пожалуйста с заданием: из 33 положительных, отрицательных и нулевых значений чисел...

Столбец матрицы, содержащий максимальный элемент, поменять местами с первым столбцом
Задание: Составить программу, которая вначале заполняет числами двумерный массив размерности ,...

Столбец, содержащий минимальный элемент, поменять местами с последним столбцом
Тема 5: «Обработка двумерных числовых массивов» Задача 5.1. Заполнить двумерный числовой массив В...

Столбец содержащий минимальный элемент поменять местами с последним столбцом
Дан вещественный массив из 3 строк и 5 столбцов.Столбец содержащий минимальный элемент поменять...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru