Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
3 / 3 / 4
Регистрация: 08.02.2014
Сообщений: 213
1

Двумерный массив. Заменить все 0 на 5

21.07.2014, 10:54. Показов 2274. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.
Суть задачи: двумерный массив. Заменить все 0 на 5.
Я вот написал код:
Как сделать назад выведение на стринггрид, что бы все 0 были заменены на 5


Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TForm1.Button1Click(Sender: TObject);
a :array [1..2,1..6] of integer;
i,j:integer;
zum,k:integer;
begin
k:=5;
// считывание матрицы
for i := 1 to 2 do
  for j := 1 to 6 do
    a[i,j]:=StrToInt(StringGrid1.Cells[i-1,j-1]);
  for i:=1 to 2 do
    for j := 1 to 6 do
      if a[i,j]=0 then
            a[i,j]:=k;//замена 0 на 5
 
 
 
 
end;
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.07.2014, 10:54
Ответы с готовыми решениями:

Дан двумерный массив 5*5 Заменить все его отрицательные элементы нулем
Я в Делфи недавно и нам задали написать две программы. Если кто-нибудь знает как решить напишите...

Двумерный массив. Заменить все положительные числа на 0.
Помогите найти ошибку в моей программе... почему-то не получается. Помогите пожалуйста :) ...

Двумерный массив. Заменить все симметричные элементы на нули
Заменить все симметричные элементы на нули это числа 11, 22 ...

Двумерный массив. Заменить все элементы массива, кратные 7, на 0
1)Ввести двумерный массив. Вывести исходный массив на экран. Заменить все элементы массива, кратные...

13
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
21.07.2014, 11:04 2
Лучший ответ Сообщение было отмечено MultyStepan как решение

Решение

Цитата Сообщение от MultyStepan Посмотреть сообщение
Delphi
1
2
3
4
// считывание матрицы
for i := 1 to 2 do
 for j := 1 to 6 do
 a[i,j]:=StrToInt(StringGrid1.Cells[i-1,j-1]);
т.е. у Вас в StringGrid два столбца и 6 строк?

Цитата Сообщение от MultyStepan Посмотреть сообщение
Как сделать назад выведение на стринггрид, что бы все 0 были заменены на 5
ну, точно так же, как и считваете:
Pascal
1
2
3
for i := 1 to 2 do
  for j := 1 to 6 do
    StringGrid1.Cells[i-1,j-1]:=IntToStr(a[i,j]);
1
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
21.07.2014, 11:19 3
Лучший ответ Сообщение было отмечено MultyStepan как решение

Решение

Можно объединить замену и вывод
Delphi
1
2
3
4
5
6
for i := 1 to 2 do
for j := 1 to 6 do
 begin
  if a[i,j]=0 then a[i,j]:=5;
  StringGrid1.Cells[j-1,i-1]:=IntToStr(a[i,j]);//сначала столбцы, потом строки
 end;
1
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
21.07.2014, 11:34 4
Цитата Сообщение от Puporev Посмотреть сообщение
StringGrid1.Cells[j-1,i-1]:=IntToStr(a[i,j]);//сначала столбцы, потом строки
угу. в дебильном StringGrid сначала идёт индекс столбца, потом индекс строки.

Но если менять вывод, тогда нужно и чтение из StringGrid'а менять.

Я ведь не просто так спросил MultyStepan о том, сколько у него столбцов, а сколько строк!!
Цитата Сообщение от Sergio Leone Посмотреть сообщение
т.е. у Вас в StringGrid два столбца и 6 строк?

p.s. строго говоря, тут можно вообще без массива A обойтись!
0
northener
21.07.2014, 11:44
  #5

Не по теме:

Цитата Сообщение от Sergio Leone Посмотреть сообщение
угу. в дебильном StringGrid сначала идёт индекс столбца, потом индекс строки.
Дебильно читать слева-направо сверху-вниз? :)

0
Sergio Leone
21.07.2014, 11:47
  #6

Не по теме:

Цитата Сообщение от northener Посмотреть сообщение
Дебильно читать слева-направо сверху-вниз?
дебильно, когда в одном случае принято так, в другом - по другому.
Если Вам дадут массив (см. у ТС выше) A : array[1..2, 1..6] of Integer - то, по вашему сколько в нём строк и сколько столбцов.
Вот в этом ИМХО и есть "дебилизм" :(

0
northener
21.07.2014, 12:05
  #7

Не по теме:

Пардон, я ошибся.

0
3 / 3 / 4
Регистрация: 08.02.2014
Сообщений: 213
21.07.2014, 12:18  [ТС] 8
извините господа ошибся в у меня 2 строки и 6 столбцов

Добавлено через 3 минуты
значит уточню на будущие: в СтригГриде.
[j,i]
j-столбцы??
i-строки?
Всегда в начале столбцы, а потом строки?
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
21.07.2014, 12:27 9
В СтрингГриде для обозначения индексов ячеек первым указывается индекс столбца, вторым индекс строки.
В матрицах наоборот, поэтому при чтении и записи матриц в таблицу индексы указываются соответственно
Delphi
1
StringGrid1.Cells[j,i]:=IntToStr(a[i,j]);//если отсчет начинается с одинакового индекса(с 0 или 1...)
Добавлено через 4 минуты
Цитата Сообщение от Sergio Leone Посмотреть сообщение
строго говоря, тут можно вообще без массива A обойтись!
Задача на массив, он может быть нужен для каких-то вычислений, а вот без таблицы как раз можно обойтись, массив можно вывести и в другой компонент.
1
3 / 3 / 4
Регистрация: 08.02.2014
Сообщений: 213
21.07.2014, 12:31  [ТС] 10
Вот код рабочей и программы.
Pascal
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
procedure TForm1.Button1Click(Sender: TObject);
var
a :array [1..6,1..2] of integer;
j,i:integer;
zum,k:integer;
begin
k:=5;
// считывание матрицы
for j := 1 to 6 do
  for i := 1 to 2 do
    a[j,i]:=StrToInt(StringGrid1.Cells[j-1,i-1]);
  for j:=1 to 6 do
    for i := 1 to 2 do
      if a[j,i]=0 then
            a[j,i]:=k;//замана 0 на 5
      for j := 1 to 6 do
        for i := 1 to 2 do
        StringGrid1.Cells[j-1,i-1]:=IntToStr (a[j,i]);
 
 
 
 
 
 
end;
 
end.
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
21.07.2014, 12:33 11
Цитата Сообщение от MultyStepan Посмотреть сообщение
StringGrid1.Cells[j-1,i-1]:=IntToStr (a[j,i]);
Что в лоб, что по лбу....
1
3 / 3 / 4
Регистрация: 08.02.2014
Сообщений: 213
21.07.2014, 12:33  [ТС] 12
А можно пример кода, в котор можно без массива обойтись.
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
21.07.2014, 12:40 13
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
for i := 0 to 1 do
for j := 0 to 5 do
if StringGrid1.Cells[i,j]='0'
then StringGrid2.Cells[i,j]:='5'
else StringGrid2.Cells[i,j]:=StringGrid1.Cells[i,j]
end;
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
21.07.2014, 13:58 14
Цитата Сообщение от MultyStepan Посмотреть сообщение
А можно пример кода, в котор можно без массива обойтись.
или, чуть изменив код, если допустимо одним гридом обойтись (менять прямо в нём), то:
Delphi
1
2
3
for i := 0 to StringGrid1.ColCount-1 do
  for j := 0 to StringGrid1.RowCount-1 do
     if Trim(StringGrid1.Cells[i,j])='0' then StringGrid1.Cells[i,j]:='5';

только не забудьте, что у Вас:
Цитата Сообщение от Puporev Посмотреть сообщение
Задача на массив, он может быть нужен для каких-то вычислений
т.е. без массива у Вас решение могут банально не принять!
0
21.07.2014, 13:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.07.2014, 13:58
Помогаю со студенческими работами здесь

Двумерный массив. Все четные элементы массива заменить нулями
Все четные элементы массива заменить нулями. Заполнение массива произвести случайными целыми...

Ввести двумерный массив A и заменить все отрицательные элементы на ноль
3. написать программу вводит двумерный массив A(N,M) и заменяет все отрицательные элементы на ноль

Двумерный массив. Заменить все элементы, попадающие в интервал [a, b], нулем
Двумерный массив "Дана последовательность целых чисел. Заменить все элементы, попадающие в...

Двумерный массив. Заменить все отрицательные элементы на их абсолютное значение, а все положительные - на их отрицательные эквиваленты
1) Дан двухмерный массив вещественных чисел размерностью N*M. Замените все отрицательные элементы...

Ввести двумерный массив целых чисел размерностью 2 на 4. Заменить все четные элементы на 0
Ввести двумерный массив целых чисел размерностью 2 на 4. Заменить все четные элементы числом 0....

Двумерный массив. Заменить все отрицательные числа нулями. Подсчитать сумму положительных
1) Двумерный массив 3 на 3 заполнить вводом чисел с клавиатуры. Вывести полученный массив. Заменить...


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

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